aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2017-10-04 18:01:21 -0700
committerColin Cross <ccross@android.com>2017-10-04 18:02:16 -0700
commit9ed4361f4a6024bc04af8aaeb4c08f106012e454 (patch)
tree12f025c730f9ebbb0894da21bf30914f959262d3
parentffd638e1f8c2c5a4b0875ae56ac4295cd3bae3ef (diff)
parent6f9641408d40a9d02930a03bfd9bc7894d6bb2cd (diff)
downloadjdk9-9ed4361f4a6024bc04af8aaeb4c08f106012e454.tar.gz
Merge tag 'jdk-9+181' into master
Bug: 62123342 Change-Id: I10715c6cef2f5f5467042e1eba214b9de1a3055d
-rw-r--r--.hgignore10
-rw-r--r--.hgtags425
-rw-r--r--.jcheck/conf1
-rw-r--r--ASSEMBLY_EXCEPTION27
-rw-r--r--Makefile64
-rw-r--r--README10
-rw-r--r--common/autoconf/Makefile.in27
-rw-r--r--common/autoconf/autogen.sh85
-rw-r--r--common/autoconf/basics.m41282
-rw-r--r--common/autoconf/basics_windows.m4432
-rw-r--r--common/autoconf/boot-jdk.m4541
-rw-r--r--common/autoconf/bootcycle-spec.gmk.in67
-rw-r--r--common/autoconf/build-aux/autoconf-config.guess1555
-rw-r--r--common/autoconf/build-aux/autoconf-config.sub1684
-rw-r--r--common/autoconf/build-aux/config.guess96
-rw-r--r--common/autoconf/build-aux/config.sub64
-rw-r--r--common/autoconf/build-aux/install.sh28
-rw-r--r--common/autoconf/build-aux/pkg.m4181
-rw-r--r--common/autoconf/build-performance.m4474
-rw-r--r--common/autoconf/buildjdk-spec.gmk.in95
-rw-r--r--common/autoconf/compare.sh.in103
-rw-r--r--common/autoconf/configure303
-rw-r--r--common/autoconf/configure.ac293
-rw-r--r--common/autoconf/flags.m41546
-rw-r--r--common/autoconf/generated-configure.sh68834
-rw-r--r--common/autoconf/help.m4315
-rw-r--r--common/autoconf/hotspot.m4495
-rw-r--r--common/autoconf/jdk-options.m4532
-rw-r--r--common/autoconf/jdk-version.m4320
-rw-r--r--common/autoconf/lib-alsa.m492
-rw-r--r--common/autoconf/lib-bundled.m4234
-rw-r--r--common/autoconf/lib-cups.m485
-rw-r--r--common/autoconf/lib-elf.m4129
-rw-r--r--common/autoconf/lib-ffi.m4177
-rw-r--r--common/autoconf/lib-freetype.m4465
-rw-r--r--common/autoconf/lib-std.m492
-rw-r--r--common/autoconf/lib-x11.m4133
-rw-r--r--common/autoconf/libraries.m4215
-rw-r--r--common/autoconf/platform.m4631
-rw-r--r--common/autoconf/source-dirs.m4129
-rw-r--r--common/autoconf/spec.gmk.in869
-rw-r--r--common/autoconf/toolchain.m41007
-rw-r--r--common/autoconf/toolchain_windows.m4610
-rw-r--r--common/autoconf/version-numbers42
-rw-r--r--common/bin/blessed-modifier-order.sh60
-rw-r--r--common/bin/compare.sh1647
-rw-r--r--common/bin/compare_exceptions.sh.incl597
-rw-r--r--common/bin/hgforest.sh444
-rw-r--r--common/bin/hide_important_warnings_from_javac.sh41
-rw-r--r--common/bin/idea.sh209
-rw-r--r--common/bin/jib.sh149
-rw-r--r--common/bin/logger.sh59
-rw-r--r--common/bin/print-config.js45
-rw-r--r--common/bin/shell-tracer.sh47
-rw-r--r--common/bin/unshuffle_list.txt1499
-rw-r--r--common/bin/unshuffle_patch.sh202
-rw-r--r--common/conf/jib-profiles.js1229
-rw-r--r--common/doc/building.html960
-rw-r--r--common/doc/building.md1883
-rw-r--r--common/doc/testing.html118
-rw-r--r--common/doc/testing.md215
-rw-r--r--common/nb_native/nbproject/configurations.xml65800
-rw-r--r--common/nb_native/nbproject/project.xml34
-rw-r--r--common/src/fixpath.c545
-rw-r--r--configure35
-rw-r--r--get_source.sh100
-rw-r--r--make/BuildStatic.gmk54
-rw-r--r--make/Bundles.gmk334
-rw-r--r--make/CompileJavaModules.gmk694
-rw-r--r--make/CopyImportModules.gmk104
-rw-r--r--make/CreateBuildJdkCopy.gmk79
-rw-r--r--make/CreateJmods.gmk150
-rw-r--r--make/Docs.gmk566
-rw-r--r--make/ExplodedImageOptimize.gmk50
-rw-r--r--make/GenerateLinkOptData.gmk101
-rw-r--r--make/GensrcModuleInfo.gmk102
-rw-r--r--make/Help.gmk115
-rw-r--r--make/Images.gmk454
-rw-r--r--make/Init.gmk346
-rw-r--r--make/InitSupport.gmk563
-rw-r--r--make/Install.gmk43
-rw-r--r--make/InterimImage.gmk60
-rw-r--r--make/Jprt.gmk107
-rw-r--r--make/JrtfsJar.gmk72
-rw-r--r--make/MacBundles.gmk120
-rw-r--r--make/Main.gmk1117
-rw-r--r--make/MainSupport.gmk215
-rw-r--r--make/ModuleWrapper.gmk104
-rw-r--r--make/ReleaseFile.gmk89
-rw-r--r--make/RunTests.gmk491
-rw-r--r--make/SourceRevision.gmk131
-rw-r--r--make/UpdateBuildDocs.gmk72
-rw-r--r--make/ZipSecurity.gmk104
-rw-r--r--make/ZipSource.gmk95
-rw-r--r--make/common/FindTests.gmk77
-rw-r--r--make/common/IdlCompilation.gmk113
-rw-r--r--make/common/JarArchive.gmk276
-rw-r--r--make/common/JavaCompilation.gmk496
-rw-r--r--make/common/MakeBase.gmk985
-rw-r--r--make/common/Modules.gmk450
-rw-r--r--make/common/NativeCompilation.gmk1031
-rw-r--r--make/common/ProcessMarkdown.gmk103
-rw-r--r--make/common/RMICompilation.gmk85
-rw-r--r--make/common/SetupJavaCompilers.gmk98
-rw-r--r--make/common/TestFilesCompilation.gmk99
-rw-r--r--make/common/TextFileProcessing.gmk226
-rw-r--r--make/common/ZipArchive.gmk120
-rw-r--r--make/common/support/ListPathsSafely-post-compress.incl1
-rw-r--r--make/common/support/ListPathsSafely-pre-compress.incl1
-rw-r--r--make/common/support/ListPathsSafely-uncompress.sed72
-rw-r--r--make/common/support/unicode2x.sed100
-rw-r--r--make/devkit/Makefile121
-rw-r--r--make/devkit/Tools.gmk519
-rw-r--r--make/devkit/createGraphvizBundle.sh63
-rw-r--r--make/devkit/createMacosxDevkit.sh161
-rw-r--r--make/devkit/createPandocBundle.sh73
-rw-r--r--make/devkit/createSolarisDevkit.sh148
-rw-r--r--make/devkit/createWindowsDevkit.sh136
-rw-r--r--make/devkit/solaris11.1-package-list.txt157
-rw-r--r--make/idea/idea.gmk40
-rw-r--r--make/idea/template/.name1
-rw-r--r--make/idea/template/ant.xml15
-rw-r--r--make/idea/template/build.xml173
-rw-r--r--make/idea/template/compiler.xml35
-rw-r--r--make/idea/template/copyright/profiles_settings.xml3
-rw-r--r--make/idea/template/jdk.iml22
-rw-r--r--make/idea/template/misc.xml9
-rw-r--r--make/idea/template/modules.xml9
-rw-r--r--make/idea/template/scopes/scope_settings.xml5
-rw-r--r--make/idea/template/src/idea/JdkIdeaAntLogger.java375
-rw-r--r--make/idea/template/vcs.xml14
-rw-r--r--make/idea/template/workspace.xml85
-rw-r--r--make/jprt.properties513
-rw-r--r--make/scripts/lic_check.sh224
-rw-r--r--make/scripts/normalizer.pl206
-rw-r--r--make/scripts/update_copyright_year.sh198
-rw-r--r--make/templates/bsd-header29
-rw-r--r--make/templates/gpl-cp-header23
-rw-r--r--make/templates/gpl-header21
-rw-r--r--make/test/BuildFailureHandler.gmk128
-rw-r--r--make/test/BuildTestLib.gmk62
-rw-r--r--test/Makefile122
-rw-r--r--test/TestCommon.gmk422
-rw-r--r--test/failure_handler/Makefile119
-rw-r--r--test/failure_handler/README105
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/ElapsedTimePrinter.java48
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/EnvironmentInfoGatherer.java28
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/GathererFactory.java63
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/HtmlPage.java47
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/HtmlSection.java237
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/ProcessInfoGatherer.java28
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/Stopwatch.java73
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/ToolKit.java72
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/Utils.java88
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/action/Action.java33
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionHelper.java362
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionParameters.java47
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionSet.java126
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/action/PatternAction.java79
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/action/SimpleAction.java86
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/GatherDiagnosticInfoObserver.java152
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/GatherProcessInfoTimeoutHandler.java147
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/OS.java56
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/value/ArrayParser.java53
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/value/DefaultParser.java120
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/value/DefaultValue.java35
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/value/InvalidValueException.java40
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/value/PathValueParser.java36
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/value/SubValues.java35
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/value/Value.java36
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/value/ValueHandler.java122
-rw-r--r--test/failure_handler/src/share/classes/jdk/test/failurehandler/value/ValueParser.java28
-rw-r--r--test/failure_handler/src/share/conf/common.properties69
-rw-r--r--test/failure_handler/src/share/conf/linux.properties110
-rw-r--r--test/failure_handler/src/share/conf/mac.properties110
-rw-r--r--test/failure_handler/src/share/conf/solaris.properties111
-rw-r--r--test/failure_handler/src/share/conf/windows.properties115
-rw-r--r--test/failure_handler/src/windows/native/libtimeoutHandler/GatherProcessInfoTimeoutHandler.c37
-rw-r--r--test/failure_handler/test/TEST.ROOT0
-rw-r--r--test/failure_handler/test/sanity/Crash.java39
-rw-r--r--test/failure_handler/test/sanity/Deadlock.java63
-rw-r--r--test/failure_handler/test/sanity/Livelock.java55
-rw-r--r--test/failure_handler/test/sanity/OOME.java49
-rw-r--r--test/failure_handler/test/sanity/Suicide.java55
-rw-r--r--test/failure_handler/test/sanity/SystemExit.java32
-rw-r--r--test/failure_handler/test/sanity/ThrowError.java31
-rw-r--r--test/failure_handler/test/sanity/WaitForDeadlock.java44
-rw-r--r--test/failure_handler/test/unit/jdk/test/failurehandler/value/DefaultParserTest.java118
-rw-r--r--test/failure_handler/test/unit/jdk/test/failurehandler/value/ValueHandlerTest.java110
-rw-r--r--test/fmw/gtest/CHANGES157
-rw-r--r--test/fmw/gtest/LICENSE28
-rw-r--r--test/fmw/gtest/README435
-rw-r--r--test/fmw/gtest/include/gtest/gtest-death-test.h294
-rw-r--r--test/fmw/gtest/include/gtest/gtest-message.h250
-rw-r--r--test/fmw/gtest/include/gtest/gtest-param-test.h1421
-rw-r--r--test/fmw/gtest/include/gtest/gtest-param-test.h.pump487
-rw-r--r--test/fmw/gtest/include/gtest/gtest-printers.h855
-rw-r--r--test/fmw/gtest/include/gtest/gtest-spi.h232
-rw-r--r--test/fmw/gtest/include/gtest/gtest-test-part.h179
-rw-r--r--test/fmw/gtest/include/gtest/gtest-typed-test.h259
-rw-r--r--test/fmw/gtest/include/gtest/gtest.h2291
-rw-r--r--test/fmw/gtest/include/gtest/gtest_pred_impl.h358
-rw-r--r--test/fmw/gtest/include/gtest/gtest_prod.h58
-rw-r--r--test/fmw/gtest/include/gtest/internal/gtest-death-test-internal.h319
-rw-r--r--test/fmw/gtest/include/gtest/internal/gtest-filepath.h206
-rw-r--r--test/fmw/gtest/include/gtest/internal/gtest-internal.h1158
-rw-r--r--test/fmw/gtest/include/gtest/internal/gtest-linked_ptr.h233
-rw-r--r--test/fmw/gtest/include/gtest/internal/gtest-param-util-generated.h5143
-rw-r--r--test/fmw/gtest/include/gtest/internal/gtest-param-util-generated.h.pump301
-rw-r--r--test/fmw/gtest/include/gtest/internal/gtest-param-util.h619
-rw-r--r--test/fmw/gtest/include/gtest/internal/gtest-port.h1948
-rw-r--r--test/fmw/gtest/include/gtest/internal/gtest-string.h167
-rw-r--r--test/fmw/gtest/include/gtest/internal/gtest-tuple.h1012
-rw-r--r--test/fmw/gtest/include/gtest/internal/gtest-tuple.h.pump339
-rw-r--r--test/fmw/gtest/include/gtest/internal/gtest-type-util.h3331
-rw-r--r--test/fmw/gtest/include/gtest/internal/gtest-type-util.h.pump297
-rw-r--r--test/fmw/gtest/src/gtest-all.cc48
-rw-r--r--test/fmw/gtest/src/gtest-death-test.cc1344
-rw-r--r--test/fmw/gtest/src/gtest-filepath.cc382
-rw-r--r--test/fmw/gtest/src/gtest-internal-inl.h1218
-rw-r--r--test/fmw/gtest/src/gtest-port.cc805
-rw-r--r--test/fmw/gtest/src/gtest-printers.cc363
-rw-r--r--test/fmw/gtest/src/gtest-test-part.cc110
-rw-r--r--test/fmw/gtest/src/gtest-typed-test.cc110
-rw-r--r--test/fmw/gtest/src/gtest.cc5015
-rw-r--r--test/fmw/gtest/src/gtest_main.cc38
-rw-r--r--test/jtreg-ext/requires/VMProps.java238
-rw-r--r--test/lib-test/jdk/test/lib/apps/LingeredAppTest.java72
-rw-r--r--test/lib/ClassFileInstaller.java257
-rw-r--r--test/lib/RedefineClassHelper.java79
-rw-r--r--test/lib/jdk/test/lib/Asserts.java620
-rw-r--r--test/lib/jdk/test/lib/BuildHelper.java106
-rw-r--r--test/lib/jdk/test/lib/ByteCodeLoader.java90
-rw-r--r--test/lib/jdk/test/lib/FileInstaller.java97
-rw-r--r--test/lib/jdk/test/lib/InfiniteLoop.java66
-rw-r--r--test/lib/jdk/test/lib/JDKToolFinder.java106
-rw-r--r--test/lib/jdk/test/lib/JDKToolLauncher.java135
-rw-r--r--test/lib/jdk/test/lib/Platform.java268
-rw-r--r--test/lib/jdk/test/lib/SecurityTools.java119
-rw-r--r--test/lib/jdk/test/lib/TimeLimitedRunner.java86
-rw-r--r--test/lib/jdk/test/lib/Utils.java684
-rw-r--r--test/lib/jdk/test/lib/apps/LingeredApp.java491
-rw-r--r--test/lib/jdk/test/lib/apps/LingeredAppWithDeadlock.java81
-rw-r--r--test/lib/jdk/test/lib/cli/CPUSpecificCommandLineOptionTest.java65
-rw-r--r--test/lib/jdk/test/lib/cli/CommandLineOptionTest.java544
-rw-r--r--test/lib/jdk/test/lib/cli/predicate/AndPredicate.java49
-rw-r--r--test/lib/jdk/test/lib/cli/predicate/CPUSpecificPredicate.java71
-rw-r--r--test/lib/jdk/test/lib/cli/predicate/NotPredicate.java39
-rw-r--r--test/lib/jdk/test/lib/cli/predicate/OrPredicate.java41
-rw-r--r--test/lib/jdk/test/lib/compiler/InMemoryJavaCompiler.java200
-rw-r--r--test/lib/jdk/test/lib/dcmd/CommandExecutor.java75
-rw-r--r--test/lib/jdk/test/lib/dcmd/CommandExecutorException.java36
-rw-r--r--test/lib/jdk/test/lib/dcmd/FileJcmdExecutor.java81
-rw-r--r--test/lib/jdk/test/lib/dcmd/JMXExecutor.java187
-rw-r--r--test/lib/jdk/test/lib/dcmd/JcmdExecutor.java58
-rw-r--r--test/lib/jdk/test/lib/dcmd/MainClassJcmdExecutor.java57
-rw-r--r--test/lib/jdk/test/lib/dcmd/PidJcmdExecutor.java63
-rw-r--r--test/lib/jdk/test/lib/hprof/HprofParser.java97
-rw-r--r--test/lib/jdk/test/lib/hprof/README13
-rw-r--r--test/lib/jdk/test/lib/hprof/model/AbstractJavaHeapObjectVisitor.java60
-rw-r--r--test/lib/jdk/test/lib/hprof/model/ArrayTypeCodes.java50
-rw-r--r--test/lib/jdk/test/lib/hprof/model/HackJavaValue.java65
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaBoolean.java54
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaByte.java54
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaChar.java54
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaClass.java503
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaDouble.java53
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaField.java69
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaFloat.java53
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaHeapObject.java207
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaHeapObjectVisitor.java55
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaInt.java54
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaLazyReadObject.java176
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaLong.java53
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaObject.java334
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaObjectArray.java172
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaObjectRef.java97
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaShort.java54
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaStatic.java79
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaThing.java99
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaValue.java61
-rw-r--r--test/lib/jdk/test/lib/hprof/model/JavaValueArray.java433
-rw-r--r--test/lib/jdk/test/lib/hprof/model/ReachableExcludes.java50
-rw-r--r--test/lib/jdk/test/lib/hprof/model/ReachableExcludesImpl.java103
-rw-r--r--test/lib/jdk/test/lib/hprof/model/ReachableObjects.java148
-rw-r--r--test/lib/jdk/test/lib/hprof/model/ReferenceChain.java69
-rw-r--r--test/lib/jdk/test/lib/hprof/model/Root.java174
-rw-r--r--test/lib/jdk/test/lib/hprof/model/Snapshot.java635
-rw-r--r--test/lib/jdk/test/lib/hprof/model/StackFrame.java101
-rw-r--r--test/lib/jdk/test/lib/hprof/model/StackTrace.java77
-rw-r--r--test/lib/jdk/test/lib/hprof/parser/FileReadBuffer.java89
-rw-r--r--test/lib/jdk/test/lib/hprof/parser/HprofReader.java909
-rw-r--r--test/lib/jdk/test/lib/hprof/parser/MappedReadBuffer.java136
-rw-r--r--test/lib/jdk/test/lib/hprof/parser/PositionDataInputStream.java64
-rw-r--r--test/lib/jdk/test/lib/hprof/parser/PositionInputStream.java84
-rw-r--r--test/lib/jdk/test/lib/hprof/parser/ReadBuffer.java51
-rw-r--r--test/lib/jdk/test/lib/hprof/parser/Reader.java97
-rw-r--r--test/lib/jdk/test/lib/hprof/util/ArraySorter.java147
-rw-r--r--test/lib/jdk/test/lib/hprof/util/Comparer.java49
-rw-r--r--test/lib/jdk/test/lib/hprof/util/CompositeEnumeration.java63
-rw-r--r--test/lib/jdk/test/lib/hprof/util/Misc.java112
-rw-r--r--test/lib/jdk/test/lib/hprof/util/VectorSorter.java148
-rw-r--r--test/lib/jdk/test/lib/management/DynamicVMOption.java166
-rw-r--r--test/lib/jdk/test/lib/process/ExitCode.java40
-rw-r--r--test/lib/jdk/test/lib/process/OutputAnalyzer.java468
-rw-r--r--test/lib/jdk/test/lib/process/OutputBuffer.java59
-rw-r--r--test/lib/jdk/test/lib/process/ProcessTools.java617
-rw-r--r--test/lib/jdk/test/lib/process/StreamPumper.java197
-rw-r--r--test/lib/jdk/test/lib/util/Pair.java68
-rw-r--r--test/lib/jdk/test/lib/util/Triple.java90
-rw-r--r--test/lib/sun/hotspot/WhiteBox.java497
-rw-r--r--test/lib/sun/hotspot/code/BlobType.java108
-rw-r--r--test/lib/sun/hotspot/code/CodeBlob.java74
-rw-r--r--test/lib/sun/hotspot/code/NMethod.java58
-rw-r--r--test/lib/sun/hotspot/cpuinfo/CPUInfo.java96
-rw-r--r--test/lib/sun/hotspot/gc/GC.java103
-rw-r--r--test/lib/sun/hotspot/parser/DiagnosticCommand.java77
-rw-r--r--test/make/TestIdea.gmk46
-rw-r--r--test/make/TestJavaCompilation.gmk353
-rw-r--r--test/make/TestMake.gmk42
-rw-r--r--test/make/TestMakeBase.gmk400
321 files changed, 226178 insertions, 0 deletions
diff --git a/.hgignore b/.hgignore
new file mode 100644
index 0000000..023de87
--- /dev/null
+++ b/.hgignore
@@ -0,0 +1,10 @@
+^build/
+^dist/
+^.idea/
+nbproject/private/
+^webrev
+^.src-rev$
+^.jib/
+.DS_Store
+.metadata/
+.recommenders/
diff --git a/.hgtags b/.hgtags
new file mode 100644
index 0000000..07b5d34
--- /dev/null
+++ b/.hgtags
@@ -0,0 +1,425 @@
+cfeea66a3fa8ca3686a7cfa2d0ce8ab0169f168d jdk7-b24
+cbc8ad9dd0e085a607427ea35411990982f19a36 jdk7-b25
+9410f77cc30c604d1caf7c9fe3a57fa19e1acbe8 jdk7-b26
+11b4dc9f2be3523ef989a0db8459eb56b3045c3a jdk7-b27
+56652b46f328937f6b9b5130f1e4cd80f48868ef jdk7-b28
+31e08f70e88d77c2053f91c21b49a04296bdc59a jdk7-b29
+2dab2f712e1832c92acfa63ec0337048b9422c20 jdk7-b30
+3300a35a0bd56d695b92fe0b34f03ebbfc939064 jdk7-b31
+64da805be725721bf2004e7409a0d7a16fc8ddbc jdk7-b32
+bb1ef4ee3d2c8cbf43a37d372325a7952be590b9 jdk7-b33
+46a989ab932992b2084b946eeb322fa99b9fee6c jdk7-b34
+143c1abedb7d3095eff0f9ee5fec9bf48e3490fc jdk7-b35
+4b4f5fea8d7d0743f0c30d91fcd9bf9d96e5d2ad jdk7-b36
+744554f5a3290e11c71cd2ddb1aff49e431f9ed0 jdk7-b37
+cc47a76899ed33a2c513cb688348244c9b5a1288 jdk7-b38
+ab523b49de1fc73fefe6855ce1e0349bdbd7af29 jdk7-b39
+44be42de6693063fb191989bf0e188de2fa51e7c jdk7-b40
+541bdc5ad32fc33255944d0a044ad992f3d915e8 jdk7-b41
+94052b87287303527125026fe4b2698cf867ea83 jdk7-b42
+848e684279d2ba42577d9621d5b2e5af3823d12d jdk7-b43
+a395e3aac4744cc9033fcd819fad1239a45add52 jdk7-b44
+99846f001ca214015578d593802d26e27246a802 jdk7-b45
+e8a2a4d187773a62f3309b0fa265c13425bc2258 jdk7-b46
+d7744e86dedc21a8ecf6bdb73eb191b8eaf5b0da jdk7-b47
+4ae9f4bfdb98f65bd957e3fe72471b320150b38e jdk7-b48
+aee93a8992d2389121eb610c00a86196f3e2b9b0 jdk7-b49
+5111e13e44e542fe945b47ab154546daec36737d jdk7-b50
+0f0189d55ce4a1f7840da7582ac7d970b3b7ab15 jdk7-b51
+4264c2fe66493e57c411045a1b61377796641e45 jdk7-b52
+c235f4a8559d196879c56af80159f67ee5d0e720 jdk7-b53
+2ef382b1bbd58a68e668391c6145a4b2066c5b96 jdk7-b54
+aea0ace7a1e43619800931d42bbf69c579361c2d jdk7-b55
+ba12117a5e6c918578d6b2a8c693232a33289024 jdk7-b56
+ffd09e767dfa6d21466183a400f72cf62d53297f jdk7-b57
+59b497130f82ec809c245ffb5e521e3a5fabf8af jdk7-b58
+030142474602b4a067662fffc0c8e541de5a78df jdk7-b59
+39565502682c7085369bd09e51640919dc741097 jdk7-b60
+472c21584cfd7e9c0229ad6a100366a5c03d2976 jdk7-b61
+c7ed15ab92ce36a09d264a5e34025884b2d7607f jdk7-b62
+57f7e028c7ad1806500ae89eb3f4cd9a51b10e18 jdk7-b63
+269c1ec4435dfb7b452ae6e3bdde005d55c5c830 jdk7-b64
+e01380cd1de4ce048b87d059d238e5ab5e341947 jdk7-b65
+6bad5e3fe50337d95b1416d744780d65bc570da6 jdk7-b66
+c4523c6f82048f420bf0d57c4cd47976753b7d2c jdk7-b67
+e1b972ff53cd58f825791f8ed9b2deffd16e768c jdk7-b68
+82e6c820c51ac27882b77755d42efefdbf1dcda0 jdk7-b69
+175cb3fe615998d1004c6d3fd96e6d2e86b6772d jdk7-b70
+4c36e9853dda27bdac5ef4839a610509fbe31d34 jdk7-b71
+0d7e03b426df27c21dcc44ffb9178eacd1b04f10 jdk7-b72
+3ac6dcf7823205546fbbc3d4ea59f37358d0b0d4 jdk7-b73
+2c88089b6e1c053597418099a14232182c387edc jdk7-b74
+d1516b9f23954b29b8e76e6f4efc467c08c78133 jdk7-b75
+c8b63075403d53a208104a8a6ea5072c1cb66aab jdk7-b76
+1f17ca8353babb13f4908c1f87d11508232518c8 jdk7-b77
+ab4ae8f4514693a9fe17ca2fec0239d8f8450d2c jdk7-b78
+20aeeb51713990dbea6929a2e100a8bbf5df70d4 jdk7-b79
+a3242906c7747b5d9bcc3d118c7c3c69aa40f4b7 jdk7-b80
+8403096d1fe7ff5318df9708cfec84a3fd3e1cf9 jdk7-b81
+e1176f86805fe07fd9fb9da065dc51b47712ce76 jdk7-b82
+6880a3af9addb41541e80ebe8cde6f79ec402a58 jdk7-b83
+2f3ea057d1ad56cf3b269cdc4de2741411151982 jdk7-b84
+cf26288a114be67c39f2758959ce50b60f5ae330 jdk7-b85
+433a60a9c0bf1b26ee7e65cebaa89c541f497aed jdk7-b86
+6b1069f53fbc30663ccef49d78c31bb7d6967bde jdk7-b87
+82135c848d5fcddb065e98ae77b81077c858f593 jdk7-b88
+7f1ba4459972bf84b8201dc1cc4f62b1fe1c74f4 jdk7-b89
+425ba3efabbfe0b188105c10aaf7c3c8fa8d1a38 jdk7-b90
+97d8b6c659c29c8493a8b2b72c2796a021a8cf79 jdk7-b91
+5f5c33d417f3a14706b09a4a95e65fa7b6fa54d6 jdk7-b92
+5fc102ff48f0e787ce9cc77249841d5ff0941b75 jdk7-b93
+d7f35c61afa092b6357c2c4bce3f298f16620f71 jdk7-b94
+fd3663286e77b9f13c39eee124db2beb079b3ca6 jdk7-b95
+cf71cb5151166f35433afebaf67dbf34a704a170 jdk7-b96
+5e197c942c6ebd8b92f324a31049c5f1d26d40ef jdk7-b97
+6cea9984d73d74de0cd01f30d07ac0a1ed196117 jdk7-b98
+e7f18db469a3e947b7096bfd12e87380e5a042cd jdk7-b99
+b218a53ec7d3d42be61d31d6917a6c5c037b6f56 jdk7-b100
+4193eaf5f1b82794c6a0fb1a8d11af43d1b1d611 jdk7-b101
+a136a51f5113da4dad3853b74a8536ab583ab112 jdk7-b102
+be2aedc4e3b1751c1310f334242ba69e90867f38 jdk7-b103
+f8be576feefce0c6695f188ef97ec16b73ad9cfd jdk7-b104
+9f96a4269d7727dad68864eaab795eafce270311 jdk7-b105
+43096cccf1cee749c2f4e7714ee71f4e9e0f4d7f jdk7-b106
+7d396ad455c3b2f68b0d7094891c5aba7c757a6e jdk7-b107
+140fdef4ddf52244013b6157dc542cd9f677bb6f jdk7-b108
+81dfc728d7bb7e1fff4a4dc6d0f7cea5a3315667 jdk7-b109
+2a02d4a6955c7c078aee9a604cb3be409800d82c jdk7-b110
+9702d6fef68e17533ee7fcf5923b11ead3e912ce jdk7-b111
+b852103caf73da70068473777ae867a457bb3ae1 jdk7-b112
+c1df968c4527bfab5f97662a89245f15d12d378b jdk7-b113
+27985a5c6e5268014d25d55886e0ecb96af4763d jdk7-b114
+e8ebdf41b9c01a26642848f4134f5504e8fb3233 jdk7-b115
+94e9a1bfba8b8d1fe0bfd43b88629b1f27b02a76 jdk7-b116
+7220e60b097fa027e922f1aeecdd330f3e37409f jdk7-b117
+a12a9e78df8a9d534da0b4a244ed68f0de0bd58e jdk7-b118
+661360bef6ccad6c119f067f5829b207de80c936 jdk7-b119
+366ff0b6d2151595629806b033e2e1497e3a55d4 jdk7-b120
+2c2d4f88637b488014c37e1a2eb401f68bca8838 jdk7-b121
+f1591eed71f64f6eba79fb7426f5616cc4dfea73 jdk7-b122
+ed6950da30cf1e8904b4bdb034d471647942271f jdk7-b123
+024a6755895bf91b5a3c98984c89ee018efbf538 jdk7-b124
+5c4df7e992775c102f08e9f1c0a124b324641b70 jdk7-b125
+b566d490905691787f8931f69947a92c67c6d5e4 jdk7-b126
+bd70f76b0309068f157ae759c36eac8f2c6d098e jdk7-b127
+57d702105b23fb90e40beaf00f8f8aeae5e249e7 jdk7-b128
+a6b015b59fbc2518762c17ccc35702f03ef7713a jdk7-b129
+cc58c11af15411042719e9c82707fdbef60a9e0f jdk7-b130
+5d86d951426aaf340b1ba84ae2d5ab5da65a71e2 jdk7-b131
+0f62a65fb666b337caa585015ab6ea2e60e709ca jdk7-b132
+c6f380693342feadccc5fe2c5adf500e861361aa jdk7-b133
+ddc2fcb3682ffd27f44354db666128827be7e3c3 jdk7-b134
+783bd02b4ab4596059c74b10a1793d7bd2f1c157 jdk7-b135
+2fe76e73adaa5133ac559f0b3c2c0707eca04580 jdk7-b136
+7654afc6a29e43cb0a1343ce7f1287bf690d5e5f jdk7-b137
+fc47c97bbbd91b1f774d855c48a7e285eb1a351a jdk7-b138
+7ed6d0b9aaa12320832a7ddadb88d6d8d0dda4c1 jdk7-b139
+dcfe74f1c6553c556e7d361c30b0b614eb5e40f6 jdk7-b140
+c6569c5585851dfd39b8de8e021c3c312f51af12 jdk7-b141
+cfbbdb77eac0397b03eb99ee2e07ea00e0a7b81e jdk7-b142
+14b8e7eee1058fd4ed5a2700a2ce14b3616278f1 jdk7-b143
+7203965666a4fe63bf82f5e4204f41ce6285e716 jdk7-b144
+55e9ebf032186c333e5964ed044419830ac02693 jdk7-b145
+2d38c2a79c144c30cd04d143d83ee7ec6af40771 jdk7-b146
+d91364304d7c4ecd34caffdba2b840aeb0d10b51 jdk7-b147
+f42e3d9394b40a423d345b8da22687b5462e5f25 jdk8-b01
+69f592185747226a9c765a9fe139c1d34d616f9c jdk8-b02
+587bb549dff83131b65f40aa51864f69562f34a7 jdk8-b03
+0b66a233bfb9ba2ebda1e5cdfdb0373d6c1e3c69 jdk8-b04
+b910aac18c772b823b1f7da03e2c6528725cc6de jdk8-b05
+28cf2aec4dd7c3c75efc1c15078522467c781a6d jdk8-b06
+0db7ae9f2b1017124c779bccd016c976928859a0 jdk8-b07
+fb1bc13260d76447e269e843859eb593fe2a8ab2 jdk8-b08
+8adb70647b5af5273dfe6a540f07be667cd50216 jdk8-b09
+a6c4c248e8fa350c35014fa94bab5ac1a1ac3299 jdk8-b10
+1defbc57940a56f0aa41e9dee87b71e8c8b71103 jdk8-b11
+8e2104d565baee473895d5eba20e39f85ab4bf9f jdk8-b12
+26fb81a1e9ceb9baffba216acd9ded62e9e9d5ab jdk8-b13
+23aa7f2c80a2fa354c80decf03e7c2018177ef4e jdk8-b14
+a4f28069d44a379cda99dd1d921d19f819726d22 jdk8-b15
+4e06ae613e99549835896720c7a68c29ad5543f5 jdk8-b17
+4e06ae613e99549835896720c7a68c29ad5543f5 jdk8-b16
+7010bd24cdd07bc7daef80702f39124854dec36c jdk8-b18
+237bc29afbfc6f56a4fe4a6008e2befb59c44bac jdk8-b19
+5a5eaf6374bcbe23530899579fed17a05b7705f3 jdk8-b20
+cc771d92284f71765eca14d6d08703c4af254c04 jdk8-b21
+7ad075c809952e355d25030605da6af30456ed74 jdk8-b22
+60d6f64a86b1e511169d264727f6d51415978df0 jdk8-b23
+1a5f1d6b98d6827cdb529a4abe6e52a886d944f4 jdk8-b24
+221a378e06a326f45e5d89e2123cd6323e0181d1 jdk8-b25
+2accafff224ae39caf5f532c305251ba624bf2c0 jdk8-b26
+1533dfab9903e4edcfead3b0192643f38c418b9b jdk8-b27
+6e2541d60f4e342b5b67140271d7611643929dc3 jdk8-b28
+41460de042580bc4a4ce3f863779c66f39cb8578 jdk8-b29
+6cea54809b51db92979c22fd8aa8fcb1cb13d12e jdk8-b30
+0b66f43b89a6c0ac1c15d7ec51992c541cdc9089 jdk8-b31
+88176171e940f02916a312c265a34c32552a8376 jdk8-b32
+42f275168fa5d9e7c70b246614dca8cf81f52c2e jdk8-b33
+894a478d2c4819a1a0f230bd7bdd09f3b2de9a8c jdk8-b34
+5285317ebb4e8e4f6d8d52b5616fa801e2ea844d jdk8-b35
+6a6ba0a07f33d37a2f97b1107e60c6a9a69ec84d jdk8-b36
+b2972095a4b1e2a97409b7c3df61f3b263a5ce14 jdk8-b37
+d939bd0ab13c16647ffa38cc4b64fb31b7d44e10 jdk8-b38
+8927dd68aee3fa54a1a698e2980e1b2f6c7c12c1 jdk8-b39
+a2b2d435f1d275fa8010774c653197c64e326d3a jdk8-b40
+1a8c7c530f8a9b7f5bdb9b0693b2f5435ca5205e jdk8-b41
+1ce5dc16416611c58b7480ca67a2eee5153498a6 jdk8-b42
+661c9aae602bbd9766d12590800c90f1edd1d8dd jdk8-b43
+e4f81a817447c3a4f6868f083c81c2fb1b15d44c jdk8-b44
+633f2378c904c92bb922a6e19e9f62fe8eac14af jdk8-b45
+27fa766a2298ba8347dc198f0cf85ba6618e17db jdk8-b46
+1dcb4b7b9373e64e135c12fe1f8699f1f80e51e8 jdk8-b47
+3f6c72d1c2a6e5c9e7d81c3dc984886678a128ad jdk8-b48
+c97b99424815c43818e3cc3ffcdd1a60f3198b52 jdk8-b49
+2fd67618b9a3c847780ed7b9d228e862b6e2824c jdk8-b50
+57c0aee7309050b9d6cfcbd202dc704e9260b377 jdk8-b51
+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
+8a3fe0ae06a8cc21347da5a18384b0aa6c2349f5 jdk8-b62
+3229597524cab4239325bc3602df6c486397a511 jdk8-b63
+1c8370a55b305d35353346202bde042ba9e8a9fd jdk8-b64
+b772de306dc24c17f7bd1398531ddeb58723b804 jdk8-b65
+13bb8c326e7b7b0b19d78c8088033e3932e3f7ca jdk8-b66
+9a6ec97ec45c1a62d5233cefa91e8390e380e13a jdk8-b67
+cdb401a60cea6ad5ef3f498725ed1decf8dda1ea jdk8-b68
+6ee8080a6efe0639fcd00627a5e0f839bf010481 jdk8-b69
+105a25ffa4a4f0af70188d4371b4a0385009b7ce jdk8-b70
+51ad2a34342055333eb5f36e2fb514b027895708 jdk8-b71
+c1be681d80a1f1c848dc671d664fccb19e046a12 jdk8-b72
+93b9664f97eeb6f89397a8842318ebacaac9feb9 jdk8-b73
+b43aa5bd8ca5c8121336495382d35ecfa7a71536 jdk8-b74
+2a713921952cbd77a1e699626976cb6cdfe3e57e jdk8-b75
+278af9fc67e7eba2884936b49ec07345f423aabb jdk8-b76
+3933eebc659d58c597aa8cb4b3e58f2250ce3e1a jdk8-b77
+fd1a5574cf68af24bfd52decc37ac6361afb278a jdk8-b78
+91d35211e74464dca5edf9b66ab01d0d0d8cded7 jdk8-b79
+907a926d3c96472f357617b48b6b968ea855c23c jdk8-b80
+145dbc56f931c134e837b675b9e6e7bf08902e93 jdk8-b81
+29153d0df68f84162ffe8c2cf4f402a3f2245e85 jdk8-b82
+466685ba01bfb7bc1e1ac61490fd8c0f3cc18763 jdk8-b83
+01f631f89fa392b4e484d0812c40ea8f9d2353aa jdk8-b84
+7fc358f5943676b82f1dccd3152b1ac07d92e38b jdk8-b85
+df9b5240f0a76c91cfe1a5b39da4d08df56e05be jdk8-b86
+b9415faa7066a4d3b16d466556d5428446918d95 jdk8-b87
+e1a929afcfc492470d50be0b6b0e8dc77d3760b9 jdk8-b88
+892a0196d10c67f3a12f0eefb0bb536e423d8868 jdk8-b89
+69b773a221b956a3386933ecdbfeccee0edeac47 jdk8-b90
+cb51fb4789ac0b8be4056482077ddfb8f3bd3805 jdk8-b91
+3a36c926a7aafa9d4a892a45ef3678e87ad8359b jdk8-b92
+27c51c6e31c1ef36afa0e6efb031f9b13f26c12b jdk8-b93
+50d2bde060f2a9bbbe4da0c8986e20aca61f2e2e jdk8-b94
+785d07fe38901ecc1b7e0145e53e1c3da9361fee jdk8-b95
+c156084add486f941c12d886a0b1b2854795d557 jdk8-b96
+a1c1e8bf71f354f3aec0214cf13d6668811e021d jdk8-b97
+0d0c983a817bbe8518a5ff201306334a8de267f2 jdk8-b98
+59dc9da813794c924a0383c2a6241af94defdfed jdk8-b99
+d2dcb110e9dbaf9903c05b211df800e78e4b394e jdk8-b100
+9f74a220677dc265a724515d8e2617548cef62f1 jdk8-b101
+5eb3c1dc348f72a7f84f7d9d07834e8bbe09a799 jdk8-b102
+b7e64be81c8a7690703df5711f4fc2375da8a9cb jdk8-b103
+96c1b9b7524b52c3fcefc90ffad4c767396727c8 jdk8-b104
+5166118c59178b5d31001bc4058e92486ee07d9b jdk8-b105
+8e7b4d9fb00fdf1334376aeac050c9bca6d1b383 jdk8-b106
+0874bb4707b723d5bb108d379c557cf41529d1a7 jdk8-b107
+9286a6e61291246d88af713f1ef79adeea30fe2e jdk8-b108
+91f47e8da5c60de58ed195e9b57f3bf192a18f83 jdk8-b109
+4faa09c7fe555de086dd9048d3c5cc92317d6f45 jdk8-b110
+d086227bfc45d124f09b3bd72a07956b4073bf71 jdk8-b111
+547316ea137d83d9c63083a9b83db64198fe0c81 jdk8-b112
+6ba4c7cb623ec612031e05cf8bf279d8f407bd1e jdk8-b113
+4f2011496393a26dcfd7b1f7787a3673ddd32599 jdk8-b114
+763ada2a1d8c5962bc8c3d297e57c562d2e95338 jdk8-b115
+cbfe5da942c63ef865cab4a7159e01eff7d7fcf5 jdk8-b116
+a4afb0a8d55ef75aef5b0d77b434070468fb89f8 jdk8-b117
+0a6db1aac998cdc88e52f9adb97d40ca5b0f1da6 jdk8-b118
+9e90215673be68a3e77a9e444e4232076373734d jdk8-b119
+cd3825b2983045784d6fc6d1729c799b08215752 jdk8-b120
+1e1f86d5d4e22c15a9bf9f1581acddb8c59abae2 jdk9-b00
+50669e45cec4491de0d921d3118a3fe2e767020a jdk9-b01
+135f0c7af57ebace31383d8877f47e32172759ff jdk9-b02
+fd8d51bdf9aadf7ae83e65e8655c53581017c363 jdk9-b03
+cb4c3440bc2748101923e2488506e61009ab1bf5 jdk9-b04
+8c63f0b6ada282f27e3a80125e53c3be603f9af7 jdk9-b05
+d0b525cd31b87abeb6d5b7e3516953eeb13b323c jdk9-b06
+0ea015c298b201c07fa33990f2445b6d0ef3566d jdk9-b07
+db045d8faa0924b7378102d24a1a0d850c1e3834 jdk9-b08
+4a21dc7d57d1069a01f68e7182c074cb37349dfb jdk9-b09
+fa13f2b926f8426876ec03e7903f3ee0ee150f2e jdk9-b10
+ab55a18a95e1990a588929d5d29db3eb9985fea0 jdk9-b11
+59f6350295f9681fe5956d8bc889bf341914c6cb jdk9-b12
+5800456add07e1a68170a229fb5e27376f8875e5 jdk9-b13
+4e3aa9723e9972623e3dafc321b368e7db7e9b3b jdk9-b14
+b114474fb25af4e73cb7219f7c04bd8994da03a5 jdk9-b15
+cf22a728521f91a4692b433d39d730a0a1b23155 jdk9-b16
+24152ee0ee1abef54a8bab04c099261dba7bcca5 jdk9-b17
+65abab59f783fcf02ff8e133431c252f9e5f07d5 jdk9-b18
+75a08df650eb3126bab0c4d15241f5886162393c jdk9-b19
+ee4fd72b2ec3d92497f37163352f294aa695c6fb jdk9-b20
+9052803f4d01feda28b3d65f2b64dd457d21c7b6 jdk9-b21
+8e4bdab4c362aadde2d321f968cd503a2f779e2f jdk9-b22
+88567461a2cd9b7fb431fee6440005a694df1f47 jdk9-b23
+1d4a293fbec19dc2d5790bbb2c7dd0ed8f265484 jdk9-b24
+aefd8899a8d6615fb34ba99b2e38996a7145baa8 jdk9-b25
+d3ec8d048e6c3c46b6e0ee011cc551ad386dfba5 jdk9-b26
+ba5645f2735b41ed085d07ba20fa7b322afff318 jdk9-b27
+ea2f7981236f3812436958748ab3d26e80a35130 jdk9-b28
+9e6581aeda388a23fbee021fc33e6aa152a60657 jdk9-b29
+36e9bc875325813ac9c44ac0c617a463091fa9f5 jdk9-b30
+69a84c16d9c28e0e3d504b9c8766c24bafcd58f6 jdk9-b31
+7e3512dae8e020d44399c0f1c579ff1fe3090ed6 jdk9-b32
+e4ba01b726e263953ae129be37c94de6ed145b1d jdk9-b33
+087b23f35631e68e950496a36fce8ccca612966a jdk9-b34
+c173ba994245380fb11ef077d1e59823386840eb jdk9-b35
+201d4e235d597a25a2d3ee1404394789ba386119 jdk9-b36
+723a67b0c442391447b1d8aad8b249d06d1032e8 jdk9-b37
+d42c0a90afc3c66ca87543076ec9aafd4b4680de jdk9-b38
+512dbbeb1730edcebfec873fc3f1455660b32000 jdk9-b39
+cf136458ee747e151a27aa9ea0c1492ea55ef3e7 jdk9-b40
+67395f7ca2db3b52e3a62a84888487de5cb9210a jdk9-b41
+f7c11da0b0481d49cc7a65a453336c108191e821 jdk9-b42
+02ee8c65622e8bd97496d584e22fc7dcf0edc4ae jdk9-b43
+8994f5d87b3bb5e8d317d4e8ccb326da1a73684a jdk9-b44
+3dd628fde2086218d548841022ee8436b6b88185 jdk9-b45
+12f1e276447bcc81516e85367d53e4f08897049d jdk9-b46
+b6cca3e6175a69f39e5799b7349ddb0176630291 jdk9-b47
+0064e246d83f6f9fc245c19b6d05041ecaf4b6d4 jdk9-b48
+d91ed1951b948210590ce1394bea5515357246ba jdk9-b49
+d1f37d39ff2421f956a6ddf316cf763807bc3363 jdk9-b50
+6207b4b8731ca75c51b031c47daa813ab92ef558 jdk9-b51
+1822e59f17121b09e7899cf338cfb6e37fe5fceb jdk9-b52
+d6ed47125a76cd1cf8a100568507bfb5e9669d9f jdk9-b53
+cb7367141e910e265b8344a8facee740bd1e5467 jdk9-b54
+0c37a832458f0e0b7d2a3f1a6f69aeae311aeb18 jdk9-b55
+eb7febe45865ba6b81f2ea68082262d0708a0b22 jdk9-b56
+f25ee9f62427a9ba27418e5531a89754791a305b jdk9-b57
+6e78dd9b121037719a065fe8fb25b936babdfecb jdk9-b58
+39e8a131289e8386aa4c3e4b184faa812a7c0421 jdk9-b59
+9fa2185bee17462d1014538bff60af6e6f0b01e7 jdk9-b60
+ea38728b4f4bdd8fd0d7a89b18069f521cf05013 jdk9-b61
+105d045a69174d870b69bfe471b3f2d05a9f8ecc jdk9-b62
+0b32ed628fa60e4ab99fb0b5866d648e16231f17 jdk9-b63
+82cf9aab9a83e41c8194ba01af9666afdb856cbe jdk9-b64
+7c31f9d7b932f7924f1258d52885b1c7c3e078c2 jdk9-b65
+dc6e8336f51bb6b67b7245766179eab5ca7720b4 jdk9-b66
+f546760134eb861fcfecd4ce611b0040b0d25a6a jdk9-b67
+70e4272790b6199e9ca89df2758ff9cb58ec4125 jdk9-b68
+1bcfd6b8726582cff5a42dbfc75903e36f9dd4fe jdk9-b69
+eed77fcd77711fcdba05f18fc22f37d86efb243c jdk9-b70
+c706ef5ea5da00078dc5e4334660315f7d99c15b jdk9-b71
+8582c35016fb6211b373810b6b172feccf9c483b jdk9-b72
+4c2cbaae528bce970dabbb5676005d379357f4b6 jdk9-b73
+57f3134853ecdd4a3ee2d4d26f22ba981d653d79 jdk9-b74
+8fd6eeb878606e39c908f12535f34ebbfd225a4a jdk9-b75
+d82072b699b880a1f647a5e2d7c0f86cec958941 jdk9-b76
+7972dc8f2a47f0c4cd8f02fa5662af41f028aa14 jdk9-b77
+8c40d4143ee13bdf8170c68cc384c36ab1e9fadb jdk9-b78
+ba08a9f79b9849716bae1f39f71333d47f604012 jdk9-b79
+f7c5ae2933c0b8510a420d1713a955e4ffc7ad0b jdk9-b80
+b8afcf91331d78626a583ec1b63164468d6f4181 jdk9-b81
+42b56d1f418523ecb61a49d7493302c80c8009cc jdk9-b82
+ce5c14d97d95084504c32b9320cb33cce4235588 jdk9-b83
+1c8134475511ffe6726677e1418a89a7a45e92d6 jdk9-b84
+1f345217c9bab05f192d00cf1665b3286c49ccdb jdk9-b85
+2aa1daf98d3e2ee37f20f6858c53cc37020f6937 jdk9-b86
+fd4f4f7561074dc0dbc1772c8489c7b902b6b8a9 jdk9-b87
+0bb87e05d83e1cf41cfb7ddeb2c8eaec539fd907 jdk9-b88
+895353113f382d24e623191fdab0e29a3ce34738 jdk9-b89
+cf1dc4c035fb84693d4ae5ad818785cb4d1465d1 jdk9-b90
+122142a185381ce5cea959bf13b923d8cc333628 jdk9-b91
+106c06398f7ab330eef9e335fbd3a5a8ead23b77 jdk9-b92
+331fda57dfd323c61804ba0472776790de572937 jdk9-b93
+349488425abcaf3ff62f580007860b4b56875d10 jdk9-b94
+12a6fb4f070f8ca8fbca219ab9abf5da8908b317 jdk-9+95
+5582a79892596169ebddb3e2c2aa44939e4e3f40 jdk-9+96
+75c3897541ecb52ee16d001ea605b12971df7303 jdk-9+97
+48987460c7d49a29013963ee44d090194396bb61 jdk-9+98
+7c0577bea4c65d69c5bef67023a89d2efa4fb2f7 jdk-9+99
+c1f30ac14db0eaff398429c04cd9fab92e1b4b2a jdk-9+100
+c4d72a1620835b5d657b7b6792c2879367d0154f jdk-9+101
+6406ecf5d39482623225bb1b3098c2cac6f7d450 jdk-9+102
+47d6462e514b2097663305a57d9c844c15d5b609 jdk-9+103
+9a38f8b4ba220708db198d08d82fd2144a64777d jdk-9+104
+be58b02c11f90b88c67e4d0e2cb5e4cf2d9b3c57 jdk-9+105
+54575d8783b3a39a2d710c28cda675d44261f9d9 jdk-9+106
+4d65eba233a8730f913734a6804910b842d2cb54 jdk-9+107
+c7be2a78c31b3b6132f2f5e9e4b3d3bb1c20245c jdk-9+108
+1787bdaabb2b6f4193406e25a50cb0419ea8e8f3 jdk-9+109
+925be13b3740d07a5958ccb5ab3c0ae1baba7055 jdk-9+110
+f900d5afd9c83a0df8f36161c27c5e4c86a66f4c jdk-9+111
+03543a758cd5890f2266e4b9678378a925dde22a jdk-9+112
+55b6d550828d1223b364e6ead4a56e56411c56df jdk-9+113
+1d992540870ff33fe6cc550443388588df9b9e4f jdk-9+114
+09617ce980b99d49abfd54dacfed353c47e2a115 jdk-9+115
+6743a8e0cab7b5f6f4a0575f6664892f0ab740af jdk-9+116
+e882bcdbdac436523f3d5681611d3118a3804ea7 jdk-9+117
+047f95de8f918d8ff5e8cd2636a2abb5c3c8adb8 jdk-9+118
+3463a3f14f0f0e8a68f29ac6405454f2fa2f598a jdk-9+119
+647e0142a5a52749db572b5e6638d561def6479e jdk-9+120
+cae471d3b87783e0a3deea658e1e1c84b2485b6c jdk-9+121
+346be2df0f5b31d423807f53a719d1b9a67f3354 jdk-9+122
+405d811c0d7b9b48ff718ae6c240b732f098c028 jdk-9+123
+f80c841ae2545eaf9acd2724bccc305d98cefbe2 jdk-9+124
+9aa7d40f3a453f51e47f4c1b19eff5740a74a9f8 jdk-9+125
+3a58466296d36944454756ef01e7513ac5e14a16 jdk-9+126
+8fa686245bd2a072ece3392743460030f0854520 jdk-9+127
+b30ae794d974d7dd3eb4e84203f70021823fa6c6 jdk-9+128
+f5902d3841b82cac6e7716a20c24e8e916fb14a8 jdk-9+129
+d94d54a3192fea79234c3ac55cd0b4052d45e954 jdk-9+130
+8728756c2f70a79a90188f4019cfd6b9a275765c jdk-9+131
+a24702d4d5ab0015a5c553ed57f66fce7d85155e jdk-9+132
+be1218f792a450dfb5d4b1f82616b9d95a6a732e jdk-9+133
+065724348690eda41fc69112278d8da6dcde548c jdk-9+134
+82b94cb5f342319d2cda77f9fa59703ad7fde576 jdk-9+135
+3ec350f5f32af249b59620d7e37b54bdcd77b233 jdk-9+136
+d7f519b004254b19e384131d9f0d0e40e31a0fd3 jdk-9+137
+67c4388142bdf58aec8fefa4475faaa8a5d7380c jdk-9+138
+7dcf453eacae79ee86a6bcc75fd0b546fc99b48a jdk-9+139
+a5815c6098a241d3a1df64d22b84b3524e4a77df jdk-9+140
+f64afae7f1a5608e438585bbf0bc23785e69cba0 jdk-9+141
+2b3e5caafe3594ea507c37675c4d3086f415dc64 jdk-9+142
+1fc62b1c629fb80fdaa639d3b59452a184f0d705 jdk-9+143
+8d337fd6333e28c48aa87880144b840aad82baaf jdk-9+144
+ff98aa9ec9fae991e426ce5926fc9036d25f5562 jdk-9+145
+a22e2671d88f6b22a4aa82e3966986542ed2a381 jdk-9+146
+5f6920274c48eb00d31afee6c034826a754c13d9 jdk-9+147
+3ffc3e886c74736e387f3685e86b557cdea706c8 jdk-9+148
+b119012d1c2ab2570fe8718633840d0c1f1f441d jdk-9+149
+6234069ff9789f7582e1faa32cb6283cbd1a5a2d jdk-9+150
+71a766d4c18041a7f833ee22823125b02e1a7f1e jdk-9+151
+ef056360ddf3977d7d2ddbeb456a4d612d19ea05 jdk-9+152
+816a6d03a7c44edfbd8780110529f1bdc3964fb9 jdk-9+153
+8d26916eaa21b689835ffc1c0dbf12470aa9be61 jdk-9+154
+688a3863c00ebc089ab17ee1fc46272cbbd96815 jdk-9+155
+783ec7542cf7154e5d2b87f55bb97d28f81e9ada jdk-9+156
+4eb77fb98952dc477a4229575c81d2263a9ce711 jdk-9+157
+a4087bc10a88a43ea3ad0919b5b4af1c86977221 jdk-9+158
+fe8466adaef8178dba94be53c789a0aaa87d13bb jdk-9+159
+4d29ee32d926ebc960072d51a3bc558f95c1cbad jdk-9+160
+cda60babd152d889aba4d8f20a8f643ab151d3de jdk-9+161
+21b063d75b3edbffb9bebc8872d990920c4ae1e5 jdk-9+162
+c38c6b270ccc8e2b86d1631bcf42248241b54d2c jdk-9+163
+7810f75d016a52e32295c4233009de5ca90e31af jdk-9+164
+aff4f339acd40942d3dab499846b52acd87b3af1 jdk-9+165
+ba5b16c9c6d80632b61959a33d424b1c3398ce62 jdk-9+166
+35017c286513ddcbcc6b63b99679c604993fc639 jdk-9+167
+143d4c87bc1ef1ed6dadd613cd9dd4488fdefc29 jdk-9+168
+b25838a28195f4b6dab34668411eedd2d366a16c jdk-9+169
+4d163ec59d989a9261ed7f848bc6303f90869af5 jdk-9+170
+4c12464a907db4656c1033f56fa49cba643ac629 jdk-9+171
+2c25fc24103251f9711a1c280c31e1e41016d90f jdk-9+172
+88d7fd969e7df0e07a53b201cfd29393ca33ede9 jdk-9+173
+5466f409346e0446ee9a6daeb7f5d75c8fc76823 jdk-9+174
+8f7227c6012b0051ea4e0bcee040c627bf699b88 jdk-9+175
+84777531d994ef70163d35078ec9c4127f2eadb5 jdk-9+176
+a4371edb589c60db01142e45c317adb9ccbcb083 jdk-9+177
+ec4159ebe7050fcc5dcee8a2d150cf948ecc97db jdk-9+178
+252475ccfd84cc249f8d6faf4b7806b5e2c384ce jdk-9+179
+d2982a786f53814367698e63efe6349c9128e1db jdk-9+180
diff --git a/.jcheck/conf b/.jcheck/conf
new file mode 100644
index 0000000..5c6f62d
--- /dev/null
+++ b/.jcheck/conf
@@ -0,0 +1 @@
+project=jdk9
diff --git a/ASSEMBLY_EXCEPTION b/ASSEMBLY_EXCEPTION
new file mode 100644
index 0000000..065b8d9
--- /dev/null
+++ b/ASSEMBLY_EXCEPTION
@@ -0,0 +1,27 @@
+
+OPENJDK ASSEMBLY EXCEPTION
+
+The OpenJDK source code made available by Oracle America, Inc. (Oracle) at
+openjdk.java.net ("OpenJDK Code") is distributed under the terms of the GNU
+General Public License <http://www.gnu.org/copyleft/gpl.html> version 2
+only ("GPL2"), with the following clarification and special exception.
+
+ Linking this OpenJDK Code statically or dynamically with other code
+ is making a combined work based on this library. Thus, the terms
+ and conditions of GPL2 cover the whole combination.
+
+ As a special exception, Oracle gives you permission to link this
+ OpenJDK Code with certain code licensed by Oracle as indicated at
+ http://openjdk.java.net/legal/exception-modules-2007-05-08.html
+ ("Designated Exception Modules") to produce an executable,
+ regardless of the license terms of the Designated Exception Modules,
+ and to copy and distribute the resulting executable under GPL2,
+ provided that the Designated Exception Modules continue to be
+ governed by the licenses under which they were offered by Oracle.
+
+As such, it allows licensees and sublicensees of Oracle's GPL2 OpenJDK Code
+to build an executable that includes those portions of necessary code that
+Oracle could not provide under GPL2 (or that Oracle has provided under GPL2
+with the Classpath exception). If you modify or add to the OpenJDK code,
+that new GPL2 code may still be combined with Designated Exception Modules
+if the new code is made subject to this exception by its copyright holder.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..ebe52d5
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,64 @@
+#
+# Copyright (c) 2012, 2015, 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 is just a very small wrapper needed to run the real make/Init.gmk.
+### It also performs some sanity checks on make.
+###
+
+# The shell code below will be executed on /usr/bin/make on Solaris, but not in GNU Make.
+# /usr/bin/make lacks basically every other flow control mechanism.
+.TEST_FOR_NON_GNUMAKE:sh=echo You are not using GNU Make/gmake, this is a requirement. Check your path. 1>&2 && exit 1
+
+# The .FEATURES variable is likely to be unique for GNU Make.
+ifeq ($(.FEATURES), )
+ $(info Error: '$(MAKE)' does not seem to be GNU Make, which is a requirement.)
+ $(info Check your path, or upgrade to GNU Make 3.81 or newer.)
+ $(error Cannot continue)
+endif
+
+# Assume we have GNU Make, but check version.
+ifeq ($(strip $(foreach v, 3.81% 3.82% 4.%, $(filter $v, $(MAKE_VERSION)))), )
+ $(info Error: This version of GNU Make is too low ($(MAKE_VERSION)).)
+ $(info Check your path, or upgrade to GNU Make 3.81 or newer.)
+ $(error Cannot continue)
+endif
+
+# In Cygwin, the MAKE variable gets prepended with the current directory if the
+# make executable is called using a Windows mixed path (c:/cygwin/bin/make.exe).
+ifneq ($(findstring :, $(MAKE)), )
+ MAKE := $(patsubst $(CURDIR)%, %, $(patsubst $(CURDIR)/%, %, $(MAKE)))
+endif
+
+# Locate this Makefile
+ifeq ($(filter /%, $(lastword $(MAKEFILE_LIST))),)
+ makefile_path := $(CURDIR)/$(strip $(lastword $(MAKEFILE_LIST)))
+else
+ makefile_path := $(lastword $(MAKEFILE_LIST))
+endif
+topdir := $(strip $(patsubst %/, %, $(dir $(makefile_path))))
+
+# ... and then we can include the real makefile
+include $(topdir)/make/Init.gmk
diff --git a/README b/README
new file mode 100644
index 0000000..537dea3
--- /dev/null
+++ b/README
@@ -0,0 +1,10 @@
+Welcome to OpenJDK!
+===================
+
+For information about building OpenJDK, including how to fully retrieve all
+source code, please see either of these:
+
+ * common/doc/building.html (html version)
+ * common/doc/building.md (markdown version)
+
+See http://openjdk.java.net/ for more information about OpenJDK.
diff --git a/common/autoconf/Makefile.in b/common/autoconf/Makefile.in
new file mode 100644
index 0000000..6e47fe9
--- /dev/null
+++ b/common/autoconf/Makefile.in
@@ -0,0 +1,27 @@
+#
+# Copyright (c) 2011, 2014, 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.
+#
+
+# This Makefile was generated by configure @DATE_WHEN_CONFIGURED@
+# GENERATED FILE, DO NOT EDIT
+SPEC:=@OUTPUT_ROOT@/spec.gmk
+include @TOPDIR@/Makefile
diff --git a/common/autoconf/autogen.sh b/common/autoconf/autogen.sh
new file mode 100644
index 0000000..d1d8a0d
--- /dev/null
+++ b/common/autoconf/autogen.sh
@@ -0,0 +1,85 @@
+#!/bin/bash
+#
+# Copyright (c) 2011, 2014, 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.
+#
+
+generate_configure_script() {
+ # First create a header
+ cat > $1 << EOT
+#!/bin/bash
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+EOT
+ # Then replace "magic" variables in configure.ac and append the output
+ # from autoconf. $2 is either cat (just a no-op) or a filter.
+ cat $script_dir/configure.ac | sed -e "s|@DATE_WHEN_GENERATED@|$TIMESTAMP|" | \
+ eval $2 | ${AUTOCONF} -W all -I$script_dir - >> $1
+ rm -rf autom4te.cache
+}
+
+script_dir=`dirname $0`
+
+# Create a timestamp as seconds since epoch
+if test "x`uname -s`" = "xSunOS"; then
+ TIMESTAMP=`date +%s`
+ if test "x$TIMESTAMP" = "x%s"; then
+ # date +%s not available on this Solaris, use workaround from nawk(1):
+ TIMESTAMP=`nawk 'BEGIN{print srand()}'`
+ fi
+else
+ TIMESTAMP=`date +%s`
+fi
+
+if test "x$CUSTOM_CONFIG_DIR" = "x"; then
+ topdir=`cd $script_dir/../.. >/dev/null && pwd`
+ custom_script_dir="$topdir/closed/autoconf"
+else
+ custom_script_dir=$CUSTOM_CONFIG_DIR
+fi
+
+custom_hook=$custom_script_dir/custom-hook.m4
+
+AUTOCONF="`which autoconf 2> /dev/null | grep -v '^no autoconf in'`"
+
+if test "x${AUTOCONF}" = x; then
+ echo "You need autoconf installed to be able to regenerate the configure script"
+ echo "Error: Cannot find autoconf" 1>&2
+ exit 1
+fi
+
+autoconf_version=`$AUTOCONF --version | head -1`
+echo "Using autoconf at ${AUTOCONF} [$autoconf_version]"
+
+echo "Generating generated-configure.sh"
+generate_configure_script "$script_dir/generated-configure.sh" 'cat'
+
+if test -e $custom_hook; then
+ # We have custom sources available; also generate configure script
+ # with custom hooks compiled in.
+ echo "Generating custom generated-configure.sh"
+ generate_configure_script "$custom_script_dir/generated-configure.sh" 'sed -e "s|#CUSTOM_AUTOCONF_INCLUDE|m4_include([$custom_hook])|"'
+else
+ echo "(No custom hook found at $custom_hook)"
+fi
diff --git a/common/autoconf/basics.m4 b/common/autoconf/basics.m4
new file mode 100644
index 0000000..187ad8a
--- /dev/null
+++ b/common/autoconf/basics.m4
@@ -0,0 +1,1282 @@
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# Create a function/macro that takes a series of named arguments. The call is
+# similar to AC_DEFUN, but the setup of the function looks like this:
+# BASIC_DEFUN_NAMED([MYFUNC], [FOO *BAR], [$@], [
+# ... do something
+# AC_MSG_NOTICE([Value of BAR is ARG_BAR])
+# ])
+# A star (*) in front of a named argument means that it is required and it's
+# presence will be verified. To pass e.g. the first value as a normal indexed
+# argument, use [m4_shift($@)] as the third argument instead of [$@]. These
+# arguments are referenced in the function by their name prefixed by ARG_, e.g.
+# "ARG_FOO".
+#
+# The generated function can be called like this:
+# MYFUNC(FOO: [foo-val],
+# BAR: [
+# $ECHO hello world
+# ])
+# Note that the argument value must start on the same line as the argument name.
+#
+# Argument 1: Name of the function to define
+# Argument 2: List of legal named arguments, with a * prefix for required arguments
+# Argument 3: Argument array to treat as named, typically $@
+# Argument 4: The main function body
+AC_DEFUN([BASIC_DEFUN_NAMED],
+[
+ AC_DEFUN($1, [
+ m4_foreach(arg, m4_split($2), [
+ m4_if(m4_bregexp(arg, [^\*]), -1,
+ [
+ m4_set_add(legal_named_args, arg)
+ ],
+ [
+ m4_set_add(legal_named_args, m4_substr(arg, 1))
+ m4_set_add(required_named_args, m4_substr(arg, 1))
+ ]
+ )
+ ])
+
+ m4_foreach([arg], [$3], [
+ m4_define(arg_name, m4_substr(arg, 0, m4_bregexp(arg, [: ])))
+ m4_set_contains(legal_named_args, arg_name, [],[AC_MSG_ERROR([Internal error: arg_name is not a valid named argument to [$1]. Valid arguments are 'm4_set_contents(legal_named_args, [ ])'.])])
+ m4_set_remove(required_named_args, arg_name)
+ m4_set_remove(legal_named_args, arg_name)
+ m4_pushdef([ARG_][]arg_name, m4_substr(arg, m4_incr(m4_incr(m4_bregexp(arg, [: ])))))
+ m4_set_add(defined_args, arg_name)
+ m4_undefine([arg_name])
+ ])
+ m4_set_empty(required_named_args, [], [
+ AC_MSG_ERROR([Internal error: Required named arguments are missing for [$1]. Missing arguments: 'm4_set_contents(required_named_args, [ ])'])
+ ])
+ m4_foreach([arg], m4_indir([m4_dquote]m4_set_listc([legal_named_args])), [
+ m4_pushdef([ARG_][]arg, [])
+ m4_set_add(defined_args, arg)
+ ])
+ m4_set_delete(legal_named_args)
+ m4_set_delete(required_named_args)
+
+ # Execute function body
+ $4
+
+ m4_foreach([arg], m4_indir([m4_dquote]m4_set_listc([defined_args])), [
+ m4_popdef([ARG_][]arg)
+ ])
+
+ m4_set_delete(defined_args)
+ ])
+])
+
+# Test if $1 is a valid argument to $3 (often is $JAVA passed as $3)
+# If so, then append $1 to $2 \
+# Also set JVM_ARG_OK to true/false depending on outcome.
+AC_DEFUN([ADD_JVM_ARG_IF_OK],
+[
+ $ECHO "Check if jvm arg is ok: $1" >&AS_MESSAGE_LOG_FD
+ $ECHO "Command: $3 $1 -version" >&AS_MESSAGE_LOG_FD
+ OUTPUT=`$3 $1 -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | $GREP -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | $GREP " version \""`
+ if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
+ $2="[$]$2 $1"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&AS_MESSAGE_LOG_FD
+ $ECHO "$OUTPUT" >&AS_MESSAGE_LOG_FD
+ JVM_ARG_OK=false
+ fi
+])
+
+# Appends a string to a path variable, only adding the : when needed.
+AC_DEFUN([BASIC_APPEND_TO_PATH],
+[
+ if test "x$2" != x; then
+ if test "x[$]$1" = x; then
+ $1="$2"
+ else
+ $1="[$]$1:$2"
+ fi
+ fi
+])
+
+# Prepends a string to a path variable, only adding the : when needed.
+AC_DEFUN([BASIC_PREPEND_TO_PATH],
+[
+ if test "x$2" != x; then
+ if test "x[$]$1" = x; then
+ $1="$2"
+ else
+ $1="$2:[$]$1"
+ fi
+ fi
+])
+
+# This will make sure the given variable points to a full and proper
+# path. This means:
+# 1) There will be no spaces in the path. On unix platforms,
+# spaces in the path will result in an error. On Windows,
+# the path will be rewritten using short-style to be space-free.
+# 2) The path will be absolute, and it will be in unix-style (on
+# cygwin).
+# $1: The name of the variable to fix
+AC_DEFUN([BASIC_FIXUP_PATH],
+[
+ # Only process if variable expands to non-empty
+
+ if test "x[$]$1" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ BASIC_FIXUP_PATH_CYGWIN($1)
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ BASIC_FIXUP_PATH_MSYS($1)
+ else
+ # We're on a unix platform. Hooray! :)
+ path="[$]$1"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ AC_MSG_NOTICE([The path of $1, which resolves as "$path", is invalid.])
+ AC_MSG_ERROR([Spaces are not allowed in this path.])
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ AC_MSG_ERROR([The path of $1, which resolves as "$path", is not found.])
+ fi
+
+ if test -d "$path"; then
+ $1="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ $1="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+])
+
+# This will make sure the given variable points to a executable
+# with a full and proper path. This means:
+# 1) There will be no spaces in the path. On unix platforms,
+# spaces in the path will result in an error. On Windows,
+# the path will be rewritten using short-style to be space-free.
+# 2) The path will be absolute, and it will be in unix-style (on
+# cygwin).
+# Any arguments given to the executable is preserved.
+# If the input variable does not have a directory specification, then
+# it need to be in the PATH.
+# $1: The name of the variable to fix
+AC_DEFUN([BASIC_FIXUP_EXECUTABLE],
+[
+ # Only process if variable expands to non-empty
+
+ if test "x[$]$1" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ BASIC_FIXUP_EXECUTABLE_CYGWIN($1)
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ BASIC_FIXUP_EXECUTABLE_MSYS($1)
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="[$]$1"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ AC_MSG_NOTICE([The path of $1, which resolves as "$complete", is not found.])
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ AC_MSG_NOTICE([This might be caused by spaces in the path, which is not allowed.])
+ fi
+ AC_MSG_ERROR([Cannot locate the the path of $1])
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ $1="$new_complete"
+ AC_MSG_NOTICE([Rewriting $1 to "$new_complete"])
+ fi
+ fi
+])
+
+AC_DEFUN([BASIC_REMOVE_SYMBOLIC_LINKS],
+[
+ if test "x$OPENJDK_BUILD_OS" != xwindows; then
+ # Follow a chain of symbolic links. Use readlink
+ # where it exists, else fall back to horribly
+ # complicated shell code.
+ if test "x$READLINK_TESTED" != yes; then
+ # On MacOSX there is a readlink tool with a different
+ # purpose than the GNU readlink tool. Check the found readlink.
+ ISGNU=`$READLINK --version 2>&1 | $GREP GNU`
+ if test "x$ISGNU" = x; then
+ # A readlink that we do not know how to use.
+ # Are there other non-GNU readlinks out there?
+ READLINK_TESTED=yes
+ READLINK=
+ fi
+ fi
+
+ if test "x$READLINK" != x; then
+ $1=`$READLINK -f [$]$1`
+ else
+ # Save the current directory for restoring afterwards
+ STARTDIR=$PWD
+ COUNTER=0
+ sym_link_dir=`$DIRNAME [$]$1`
+ sym_link_file=`$BASENAME [$]$1`
+ cd $sym_link_dir
+ # Use -P flag to resolve symlinks in directories.
+ cd `$THEPWDCMD -P`
+ sym_link_dir=`$THEPWDCMD -P`
+ # Resolve file symlinks
+ while test $COUNTER -lt 20; do
+ ISLINK=`$LS -l $sym_link_dir/$sym_link_file | $GREP '\->' | $SED -e 's/.*-> \(.*\)/\1/'`
+ if test "x$ISLINK" == x; then
+ # This is not a symbolic link! We are done!
+ break
+ fi
+ # Again resolve directory symlinks since the target of the just found
+ # link could be in a different directory
+ cd `$DIRNAME $ISLINK`
+ sym_link_dir=`$THEPWDCMD -P`
+ sym_link_file=`$BASENAME $ISLINK`
+ let COUNTER=COUNTER+1
+ done
+ cd $STARTDIR
+ $1=$sym_link_dir/$sym_link_file
+ fi
+ fi
+])
+
+# Register a --with argument but mark it as deprecated
+# $1: The name of the with argument to deprecate, not including --with-
+AC_DEFUN([BASIC_DEPRECATED_ARG_WITH],
+[
+ AC_ARG_WITH($1, [AS_HELP_STRING([--with-$1],
+ [Deprecated. Option is kept for backwards compatibility and is ignored])],
+ [AC_MSG_WARN([Option --with-$1 is deprecated and will be ignored.])])
+])
+
+# Register a --enable argument but mark it as deprecated
+# $1: The name of the with argument to deprecate, not including --enable-
+# $2: The name of the argument to deprecate, in shell variable style (i.e. with _ instead of -)
+# $3: Messages to user.
+AC_DEFUN([BASIC_DEPRECATED_ARG_ENABLE],
+[
+ AC_ARG_ENABLE($1, [AS_HELP_STRING([--enable-$1],
+ [Deprecated. Option is kept for backwards compatibility and is ignored])])
+ if test "x$enable_$2" != x; then
+ AC_MSG_WARN([Option --enable-$1 is deprecated and will be ignored.])
+
+ if test "x$3" != x; then
+ AC_MSG_WARN([$3])
+ fi
+
+ fi
+])
+
+AC_DEFUN_ONCE([BASIC_INIT],
+[
+ # Save the original command line. This is passed to us by the wrapper configure script.
+ AC_SUBST(CONFIGURE_COMMAND_LINE)
+ # Save the path variable before it gets changed
+ ORIGINAL_PATH="$PATH"
+ AC_SUBST(ORIGINAL_PATH)
+ DATE_WHEN_CONFIGURED=`LANG=C date`
+ AC_SUBST(DATE_WHEN_CONFIGURED)
+ AC_MSG_NOTICE([Configuration created at $DATE_WHEN_CONFIGURED.])
+ AC_MSG_NOTICE([configure script generated at timestamp $DATE_WHEN_GENERATED.])
+])
+
+# Test that variable $1 denoting a program is not empty. If empty, exit with an error.
+# $1: variable to check
+AC_DEFUN([BASIC_CHECK_NONEMPTY],
+[
+ if test "x[$]$1" = x; then
+ AC_MSG_ERROR([Could not find required tool for $1])
+ fi
+])
+
+# Check that there are no unprocessed overridden variables left.
+# If so, they are an incorrect argument and we will exit with an error.
+AC_DEFUN([BASIC_CHECK_LEFTOVER_OVERRIDDEN],
+[
+ if test "x$CONFIGURE_OVERRIDDEN_VARIABLES" != x; then
+ # Replace the separating ! with spaces before presenting for end user.
+ unknown_variables=${CONFIGURE_OVERRIDDEN_VARIABLES//!/ }
+ AC_MSG_WARN([The following variables might be unknown to configure: $unknown_variables])
+ fi
+])
+
+# Setup a tool for the given variable. If correctly specified by the user,
+# use that value, otherwise search for the tool using the supplied code snippet.
+# $1: variable to set
+# $2: code snippet to call to look for the tool
+# $3: code snippet to call if variable was used to find tool
+AC_DEFUN([BASIC_SETUP_TOOL],
+[
+ # Publish this variable in the help.
+ AC_ARG_VAR($1, [Override default value for $1])
+
+ if [[ -z "${$1+x}" ]]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ $2
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !$1! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!$1!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "x$1" != xBASH; then
+ AC_MSG_WARN([Ignoring value of $1 from the environment. Use command line variables instead.])
+ fi
+ # Try to locate tool using the code snippet
+ $2
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x[$]$1" = x; then
+ AC_MSG_NOTICE([Setting user supplied tool $1= (no value)])
+ AC_MSG_CHECKING([for $1])
+ AC_MSG_RESULT([disabled])
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="[$]$1"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ AC_MSG_NOTICE([Will search for user supplied tool $1=$tool_basename])
+ AC_PATH_PROG($1, $tool_basename)
+ if test "x[$]$1" = x; then
+ AC_MSG_ERROR([User supplied tool $tool_basename could not be found])
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ AC_MSG_NOTICE([Will use user supplied tool $1=$tool_specified])
+ AC_MSG_CHECKING([for $1])
+ if test ! -x "$tool_specified"; then
+ AC_MSG_RESULT([not found])
+ AC_MSG_ERROR([User supplied tool $1=$tool_specified does not exist or is not executable])
+ fi
+ AC_MSG_RESULT([$tool_specified])
+ fi
+ fi
+ fi
+ $3
+ fi
+])
+
+# Call BASIC_SETUP_TOOL with AC_PATH_PROGS to locate the tool
+# $1: variable to set
+# $2: executable name (or list of names) to look for
+# $3: [path]
+AC_DEFUN([BASIC_PATH_PROGS],
+[
+ BASIC_SETUP_TOOL($1, [AC_PATH_PROGS($1, $2, , $3)])
+])
+
+# Call BASIC_SETUP_TOOL with AC_CHECK_TOOLS to locate the tool
+# $1: variable to set
+# $2: executable name (or list of names) to look for
+AC_DEFUN([BASIC_CHECK_TOOLS],
+[
+ BASIC_SETUP_TOOL($1, [AC_CHECK_TOOLS($1, $2)])
+])
+
+# Like BASIC_PATH_PROGS but fails if no tool was found.
+# $1: variable to set
+# $2: executable name (or list of names) to look for
+# $3: [path]
+AC_DEFUN([BASIC_REQUIRE_PROGS],
+[
+ BASIC_PATH_PROGS($1, $2, , $3)
+ BASIC_CHECK_NONEMPTY($1)
+])
+
+# Like BASIC_SETUP_TOOL but fails if no tool was found.
+# $1: variable to set
+# $2: autoconf macro to call to look for the special tool
+AC_DEFUN([BASIC_REQUIRE_SPECIAL],
+[
+ BASIC_SETUP_TOOL($1, [$2])
+ BASIC_CHECK_NONEMPTY($1)
+])
+
+# Setup the most fundamental tools that relies on not much else to set up,
+# but is used by much of the early bootstrap code.
+AC_DEFUN_ONCE([BASIC_SETUP_FUNDAMENTAL_TOOLS],
+[
+ # Start with tools that do not need have cross compilation support
+ # and can be expected to be found in the default PATH. These tools are
+ # used by configure.
+
+ # First are all the simple required tools.
+ BASIC_REQUIRE_PROGS(BASENAME, basename)
+ BASIC_REQUIRE_PROGS(BASH, bash)
+ BASIC_REQUIRE_PROGS(CAT, cat)
+ BASIC_REQUIRE_PROGS(CHMOD, chmod)
+ BASIC_REQUIRE_PROGS(CMP, cmp)
+ BASIC_REQUIRE_PROGS(COMM, comm)
+ BASIC_REQUIRE_PROGS(CP, cp)
+ BASIC_REQUIRE_PROGS(CUT, cut)
+ BASIC_REQUIRE_PROGS(DATE, date)
+ BASIC_REQUIRE_PROGS(DIFF, [gdiff diff])
+ BASIC_REQUIRE_PROGS(DIRNAME, dirname)
+ BASIC_REQUIRE_PROGS(ECHO, echo)
+ BASIC_REQUIRE_PROGS(EXPR, expr)
+ BASIC_REQUIRE_PROGS(FILE, file)
+ BASIC_REQUIRE_PROGS(FIND, find)
+ BASIC_REQUIRE_PROGS(HEAD, head)
+ BASIC_REQUIRE_PROGS(GUNZIP, gunzip)
+ BASIC_REQUIRE_PROGS(GZIP, pigz gzip)
+ BASIC_REQUIRE_PROGS(LN, ln)
+ BASIC_REQUIRE_PROGS(LS, ls)
+ BASIC_REQUIRE_PROGS(MKDIR, mkdir)
+ BASIC_REQUIRE_PROGS(MKTEMP, mktemp)
+ BASIC_REQUIRE_PROGS(MV, mv)
+ BASIC_REQUIRE_PROGS(NAWK, [nawk gawk awk])
+ BASIC_REQUIRE_PROGS(PRINTF, printf)
+ BASIC_REQUIRE_PROGS(RM, rm)
+ BASIC_REQUIRE_PROGS(RMDIR, rmdir)
+ BASIC_REQUIRE_PROGS(SH, sh)
+ BASIC_REQUIRE_PROGS(SORT, sort)
+ BASIC_REQUIRE_PROGS(TAIL, tail)
+ BASIC_REQUIRE_PROGS(TAR, gtar tar)
+ BASIC_REQUIRE_PROGS(TEE, tee)
+ BASIC_REQUIRE_PROGS(TOUCH, touch)
+ BASIC_REQUIRE_PROGS(TR, tr)
+ BASIC_REQUIRE_PROGS(UNAME, uname)
+ BASIC_REQUIRE_PROGS(UNIQ, uniq)
+ BASIC_REQUIRE_PROGS(WC, wc)
+ BASIC_REQUIRE_PROGS(WHICH, which)
+ BASIC_REQUIRE_PROGS(XARGS, xargs)
+
+ # Then required tools that require some special treatment.
+ BASIC_REQUIRE_SPECIAL(AWK, [AC_PROG_AWK])
+ BASIC_REQUIRE_SPECIAL(GREP, [AC_PROG_GREP])
+ BASIC_REQUIRE_SPECIAL(EGREP, [AC_PROG_EGREP])
+ BASIC_REQUIRE_SPECIAL(FGREP, [AC_PROG_FGREP])
+ BASIC_REQUIRE_SPECIAL(SED, [AC_PROG_SED])
+
+ # Always force rm.
+ RM="$RM -f"
+
+ # pwd behaves differently on various platforms and some don't support the -L flag.
+ # Always use the bash builtin pwd to get uniform behavior.
+ THEPWDCMD=pwd
+
+ # These are not required on all platforms
+ BASIC_PATH_PROGS(CYGPATH, cygpath)
+ BASIC_PATH_PROGS(READLINK, [greadlink readlink])
+ BASIC_PATH_PROGS(DF, df)
+ BASIC_PATH_PROGS(CPIO, [cpio bsdcpio])
+ BASIC_PATH_PROGS(NICE, nice)
+ BASIC_PATH_PROGS(PANDOC, pandoc)
+])
+
+# Setup basic configuration paths, and platform-specific stuff related to PATHs.
+AC_DEFUN_ONCE([BASIC_SETUP_PATHS],
+[
+ # Save the current directory this script was started from
+ CURDIR="$PWD"
+
+ # We might need to rewrite ORIGINAL_PATH, if it includes "#", to quote them
+ # for make. We couldn't do this when we retrieved ORIGINAL_PATH, since SED
+ # was not available at that time.
+ REWRITTEN_PATH=`$ECHO "$ORIGINAL_PATH" | $SED -e 's/#/\\\\#/g'`
+ if test "x$REWRITTEN_PATH" != "x$ORIGINAL_PATH"; then
+ ORIGINAL_PATH="$REWRITTEN_PATH"
+ AC_MSG_NOTICE([Rewriting ORIGINAL_PATH to $REWRITTEN_PATH])
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
+ PATH_SEP=";"
+ BASIC_CHECK_PATHS_WINDOWS
+ else
+ PATH_SEP=":"
+ fi
+ AC_SUBST(PATH_SEP)
+
+ # We get the top-level directory from the supporting wrappers.
+ AC_MSG_CHECKING([for top-level directory])
+ AC_MSG_RESULT([$TOPDIR])
+ AC_SUBST(TOPDIR)
+
+ # Save the original version of TOPDIR for string comparisons
+ ORIGINAL_TOPDIR="$TOPDIR"
+ AC_SUBST(ORIGINAL_TOPDIR)
+
+ # We can only call BASIC_FIXUP_PATH after BASIC_CHECK_PATHS_WINDOWS.
+ BASIC_FIXUP_PATH(CURDIR)
+ BASIC_FIXUP_PATH(TOPDIR)
+ # SRC_ROOT is a traditional alias for TOPDIR.
+ SRC_ROOT=$TOPDIR
+
+ # Calculate a canonical version of TOPDIR for string comparisons
+ CANONICAL_TOPDIR=$TOPDIR
+ BASIC_REMOVE_SYMBOLIC_LINKS([CANONICAL_TOPDIR])
+ AC_SUBST(CANONICAL_TOPDIR)
+
+ # Locate the directory of this script.
+ AUTOCONF_DIR=$TOPDIR/common/autoconf
+
+ # Setup username (for use in adhoc version strings etc)
+ # Outer [ ] to quote m4.
+ [ USERNAME=`$ECHO "$USER" | $TR -d -c '[a-z][A-Z][0-9]'` ]
+ AC_SUBST(USERNAME)
+])
+
+# Evaluates platform specific overrides for devkit variables.
+# $1: Name of variable
+AC_DEFUN([BASIC_EVAL_DEVKIT_VARIABLE],
+[
+ if test "x[$]$1" = x; then
+ eval $1="\${$1_${OPENJDK_TARGET_CPU}}"
+ fi
+])
+
+AC_DEFUN_ONCE([BASIC_SETUP_DEVKIT],
+[
+ AC_ARG_WITH([devkit], [AS_HELP_STRING([--with-devkit],
+ [use this devkit for compilers, tools and resources])],
+ [
+ BASIC_FIXUP_PATH([with_devkit])
+ DEVKIT_ROOT="$with_devkit"
+ # Check for a meta data info file in the root of the devkit
+ if test -f "$DEVKIT_ROOT/devkit.info"; then
+ . $DEVKIT_ROOT/devkit.info
+ # This potentially sets the following:
+ # A descriptive name of the devkit
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_NAME])
+ # Corresponds to --with-extra-path
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_EXTRA_PATH])
+ # Corresponds to --with-toolchain-path
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_TOOLCHAIN_PATH])
+ # Corresponds to --with-sysroot
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_SYSROOT])
+
+ # Identifies the Visual Studio version in the devkit
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_VS_VERSION])
+ # The Visual Studio include environment variable
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_VS_INCLUDE])
+ # The Visual Studio lib environment variable
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_VS_LIB])
+ # Corresponds to --with-msvcr-dll
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_MSVCR_DLL])
+ # Corresponds to --with-msvcp-dll
+ BASIC_EVAL_DEVKIT_VARIABLE([DEVKIT_MSVCP_DLL])
+ fi
+
+ AC_MSG_CHECKING([for devkit])
+ if test "x$DEVKIT_NAME" != x; then
+ AC_MSG_RESULT([$DEVKIT_NAME in $DEVKIT_ROOT])
+ else
+ AC_MSG_RESULT([$DEVKIT_ROOT])
+ fi
+
+ BASIC_PREPEND_TO_PATH([EXTRA_PATH],$DEVKIT_EXTRA_PATH)
+
+ # Fallback default of just /bin if DEVKIT_PATH is not defined
+ if test "x$DEVKIT_TOOLCHAIN_PATH" = x; then
+ DEVKIT_TOOLCHAIN_PATH="$DEVKIT_ROOT/bin"
+ fi
+ BASIC_PREPEND_TO_PATH([TOOLCHAIN_PATH],$DEVKIT_TOOLCHAIN_PATH)
+
+ # If DEVKIT_SYSROOT is set, use that, otherwise try a couple of known
+ # places for backwards compatiblity.
+ if test "x$DEVKIT_SYSROOT" != x; then
+ SYSROOT="$DEVKIT_SYSROOT"
+ elif test -d "$DEVKIT_ROOT/$host_alias/libc"; then
+ SYSROOT="$DEVKIT_ROOT/$host_alias/libc"
+ elif test -d "$DEVKIT_ROOT/$host/sys-root"; then
+ SYSROOT="$DEVKIT_ROOT/$host/sys-root"
+ fi
+ ]
+ )
+
+ # You can force the sysroot if the sysroot encoded into the compiler tools
+ # is not correct.
+ AC_ARG_WITH(sys-root, [AS_HELP_STRING([--with-sys-root],
+ [alias for --with-sysroot for backwards compatability])],
+ [SYSROOT=$with_sys_root]
+ )
+
+ AC_ARG_WITH(sysroot, [AS_HELP_STRING([--with-sysroot],
+ [use this directory as sysroot])],
+ [SYSROOT=$with_sysroot]
+ )
+
+ AC_ARG_WITH([tools-dir], [AS_HELP_STRING([--with-tools-dir],
+ [alias for --with-toolchain-path for backwards compatibility])],
+ [BASIC_PREPEND_TO_PATH([TOOLCHAIN_PATH],$with_tools_dir)]
+ )
+
+ AC_ARG_WITH([toolchain-path], [AS_HELP_STRING([--with-toolchain-path],
+ [prepend these directories when searching for toolchain binaries (compilers etc)])],
+ [BASIC_PREPEND_TO_PATH([TOOLCHAIN_PATH],$with_toolchain_path)]
+ )
+
+ AC_ARG_WITH([extra-path], [AS_HELP_STRING([--with-extra-path],
+ [prepend these directories to the default path])],
+ [BASIC_PREPEND_TO_PATH([EXTRA_PATH],$with_extra_path)]
+ )
+
+ if test "x$OPENJDK_BUILD_OS" = "xmacosx"; then
+ # If a devkit has been supplied, find xcodebuild in the toolchain_path.
+ # If not, detect if Xcode is installed by running xcodebuild -version
+ # if no Xcode installed, xcodebuild exits with 1
+ # if Xcode is installed, even if xcode-select is misconfigured, then it exits with 0
+ if test "x$DEVKIT_ROOT" != x || /usr/bin/xcodebuild -version >/dev/null 2>&1; then
+ # We need to use xcodebuild in the toolchain dir provided by the user, this will
+ # fall back on the stub binary in /usr/bin/xcodebuild
+ AC_PATH_PROG([XCODEBUILD], [xcodebuild], [/usr/bin/xcodebuild], [$TOOLCHAIN_PATH])
+ else
+ # this should result in SYSROOT being empty, unless --with-sysroot is provided
+ # when only the command line tools are installed there are no SDKs, so headers
+ # are copied into the system frameworks
+ XCODEBUILD=
+ AC_SUBST(XCODEBUILD)
+ fi
+
+ AC_MSG_CHECKING([for sdk name])
+ AC_ARG_WITH([sdk-name], [AS_HELP_STRING([--with-sdk-name],
+ [use the platform SDK of the given name. @<:@macosx@:>@])],
+ [SDKNAME=$with_sdk_name]
+ )
+ AC_MSG_RESULT([$SDKNAME])
+
+ # if toolchain path is specified then don't rely on system headers, they may not compile
+ HAVE_SYSTEM_FRAMEWORK_HEADERS=0
+ test -z "$TOOLCHAIN_PATH" && \
+ HAVE_SYSTEM_FRAMEWORK_HEADERS=`test ! -f /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h; echo $?`
+
+ if test -z "$SYSROOT"; then
+ if test -n "$XCODEBUILD"; then
+ # if we don't have system headers, use default SDK name (last resort)
+ if test -z "$SDKNAME" -a $HAVE_SYSTEM_FRAMEWORK_HEADERS -eq 0; then
+ SDKNAME=${SDKNAME:-macosx}
+ fi
+
+ if test -n "$SDKNAME"; then
+ # Call xcodebuild to determine SYSROOT
+ SYSROOT=`"$XCODEBUILD" -sdk $SDKNAME -version | $GREP '^Path: ' | $SED 's/Path: //'`
+ fi
+ else
+ if test $HAVE_SYSTEM_FRAMEWORK_HEADERS -eq 0; then
+ AC_MSG_ERROR([No xcodebuild tool and no system framework headers found, use --with-sysroot or --with-sdk-name to provide a path to a valid SDK])
+ fi
+ fi
+ else
+ # warn user if --with-sdk-name was also set
+ if test -n "$with_sdk_name"; then
+ AC_MSG_WARN([Both SYSROOT and --with-sdk-name are set, only SYSROOT will be used])
+ fi
+ fi
+
+ if test $HAVE_SYSTEM_FRAMEWORK_HEADERS -eq 0 -a -z "$SYSROOT"; then
+ # If no system framework headers, then SYSROOT must be set, or we won't build
+ AC_MSG_ERROR([Unable to determine SYSROOT and no headers found in /System/Library/Frameworks. Check Xcode configuration, --with-sysroot or --with-sdk-name arguments.])
+ fi
+
+ # Perform a basic sanity test
+ if test ! -f "$SYSROOT/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h"; then
+ if test -z "$SYSROOT"; then
+ AC_MSG_ERROR([Unable to find required framework headers, provide a path to an SDK via --with-sysroot or --with-sdk-name and be sure Xcode is installed properly])
+ else
+ AC_MSG_ERROR([Invalid SDK or SYSROOT path, dependent framework headers not found])
+ fi
+ fi
+
+ # set SDKROOT too, Xcode tools will pick it up
+ SDKROOT="$SYSROOT"
+ AC_SUBST(SDKROOT)
+ fi
+
+ # Prepend the extra path to the global path
+ BASIC_PREPEND_TO_PATH([PATH],$EXTRA_PATH)
+
+ AC_MSG_CHECKING([for sysroot])
+ AC_MSG_RESULT([$SYSROOT])
+ AC_MSG_CHECKING([for toolchain path])
+ AC_MSG_RESULT([$TOOLCHAIN_PATH])
+ AC_MSG_CHECKING([for extra path])
+ AC_MSG_RESULT([$EXTRA_PATH])
+])
+
+AC_DEFUN_ONCE([BASIC_SETUP_OUTPUT_DIR],
+[
+
+ AC_ARG_WITH(conf-name, [AS_HELP_STRING([--with-conf-name],
+ [use this as the name of the configuration @<:@generated from important configuration options@:>@])],
+ [ CONF_NAME=${with_conf_name} ])
+
+ # Test from where we are running configure, in or outside of src root.
+ AC_MSG_CHECKING([where to store configuration])
+ if test "x$CURDIR" = "x$SRC_ROOT" || test "x$CURDIR" = "x$SRC_ROOT/common" \
+ || test "x$CURDIR" = "x$SRC_ROOT/common/autoconf" \
+ || test "x$CURDIR" = "x$SRC_ROOT/make" ; then
+ # We are running configure from the src root.
+ # Create a default ./build/target-variant-debuglevel output root.
+ if test "x${CONF_NAME}" = x; then
+ AC_MSG_RESULT([in default location])
+ CONF_NAME="${OPENJDK_TARGET_OS}-${OPENJDK_TARGET_CPU}-${JDK_VARIANT}-${JVM_VARIANTS_WITH_AND}-${DEBUG_LEVEL}"
+ else
+ AC_MSG_RESULT([in build directory with custom name])
+ fi
+ OUTPUT_ROOT="$SRC_ROOT/build/${CONF_NAME}"
+ $MKDIR -p "$OUTPUT_ROOT"
+ if test ! -d "$OUTPUT_ROOT"; then
+ AC_MSG_ERROR([Could not create build directory $OUTPUT_ROOT])
+ fi
+ else
+ # We are running configure from outside of the src dir.
+ # Then use the current directory as output dir!
+ # If configuration is situated in normal build directory, just use the build
+ # directory name as configuration name, otherwise use the complete path.
+ if test "x${CONF_NAME}" = x; then
+ CONF_NAME=`$ECHO $CURDIR | $SED -e "s!^${SRC_ROOT}/build/!!"`
+ fi
+ OUTPUT_ROOT="$CURDIR"
+ AC_MSG_RESULT([in current directory])
+
+ # WARNING: This might be a bad thing to do. You need to be sure you want to
+ # have a configuration in this directory. Do some sanity checks!
+
+ if test ! -e "$OUTPUT_ROOT/spec.gmk"; then
+ # If we have a spec.gmk, we have run here before and we are OK. Otherwise, check for
+ # other files
+ files_present=`$LS $OUTPUT_ROOT`
+ # Configure has already touched config.log and confdefs.h in the current dir when this check
+ # is performed.
+ filtered_files=`$ECHO "$files_present" \
+ | $SED -e 's/config.log//g' \
+ -e 's/configure.log//g' \
+ -e 's/confdefs.h//g' \
+ -e 's/ //g' \
+ | $TR -d '\n'`
+ if test "x$filtered_files" != x; then
+ AC_MSG_NOTICE([Current directory is $CURDIR.])
+ AC_MSG_NOTICE([Since this is not the source root, configure will output the configuration here])
+ AC_MSG_NOTICE([(as opposed to creating a configuration in <src_root>/build/<conf-name>).])
+ AC_MSG_NOTICE([However, this directory is not empty. This is not allowed, since it could])
+ AC_MSG_NOTICE([seriously mess up just about everything.])
+ AC_MSG_NOTICE([Try 'cd $SRC_ROOT' and restart configure])
+ AC_MSG_NOTICE([(or create a new empty directory and cd to it).])
+ AC_MSG_ERROR([Will not continue creating configuration in $CURDIR])
+ fi
+ fi
+ fi
+ AC_MSG_CHECKING([what configuration name to use])
+ AC_MSG_RESULT([$CONF_NAME])
+
+ BASIC_FIXUP_PATH(OUTPUT_ROOT)
+
+ CONFIGURESUPPORT_OUTPUTDIR="$OUTPUT_ROOT/configure-support"
+ $MKDIR -p "$CONFIGURESUPPORT_OUTPUTDIR"
+
+ SPEC="$OUTPUT_ROOT/spec.gmk"
+ AC_SUBST(SPEC)
+ AC_SUBST(CONF_NAME)
+ AC_SUBST(OUTPUT_ROOT)
+ AC_SUBST(CONFIGURESUPPORT_OUTPUTDIR)
+
+ # The spec.gmk file contains all variables for the make system.
+ AC_CONFIG_FILES([$OUTPUT_ROOT/spec.gmk:$AUTOCONF_DIR/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 buildjdk-spec.gmk file contains support for building a buildjdk when cross compiling.
+ AC_CONFIG_FILES([$OUTPUT_ROOT/buildjdk-spec.gmk:$AUTOCONF_DIR/buildjdk-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])
+ # 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
+ # which will look for generated configurations
+ AC_CONFIG_FILES([$OUTPUT_ROOT/Makefile:$AUTOCONF_DIR/Makefile.in])
+])
+
+#%%% 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"
+
+ # On Cygwin, we require a newer version of make than on other platforms
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_VERSION_EXPR="-e 4\."
+ MAKE_REQUIRED_VERSION="4.0"
+ else
+ MAKE_VERSION_EXPR="-e 3\.8[[12]] -e 4\."
+ MAKE_REQUIRED_VERSION="3.81"
+ fi
+
+ if test "x$MAKE_CANDIDATE" != x; then
+ AC_MSG_NOTICE([Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION])
+ 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 $MAKE_VERSION_EXPR`
+ if test "x$IS_MODERN_MAKE" = x; then
+ AC_MSG_NOTICE([Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring.])
+ else
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_EXPECTED_ENV='cygwin'
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ MAKE_EXPECTED_ENV='msys'
+ else
+ AC_MSG_ERROR([Unknown Windows environment])
+ fi
+ MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+ IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+ else
+ # Not relevant for non-Windows
+ IS_MAKE_CORRECT_ENV=true
+ fi
+ if test "x$IS_MAKE_CORRECT_ENV" = x; then
+ AC_MSG_NOTICE([Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring.])
+ else
+ FOUND_MAKE=$MAKE_CANDIDATE
+ BASIC_FIXUP_EXECUTABLE(FOUND_MAKE)
+ fi
+ fi
+ fi
+ fi
+])
+
+AC_DEFUN([BASIC_CHECK_MAKE_OUTPUT_SYNC],
+[
+ # Check if make supports the output sync option and if so, setup using it.
+ AC_MSG_CHECKING([if make --output-sync is supported])
+ if $MAKE --version -O > /dev/null 2>&1; then
+ OUTPUT_SYNC_SUPPORTED=true
+ AC_MSG_RESULT([yes])
+ AC_MSG_CHECKING([for output-sync value])
+ AC_ARG_WITH([output-sync], [AS_HELP_STRING([--with-output-sync],
+ [set make output sync type if supported by make. @<:@recurse@:>@])],
+ [OUTPUT_SYNC=$with_output_sync])
+ if test "x$OUTPUT_SYNC" = "x"; then
+ OUTPUT_SYNC=none
+ fi
+ AC_MSG_RESULT([$OUTPUT_SYNC])
+ if ! $MAKE --version -O$OUTPUT_SYNC > /dev/null 2>&1; then
+ AC_MSG_ERROR([Make did not the support the value $OUTPUT_SYNC as output sync type.])
+ fi
+ else
+ OUTPUT_SYNC_SUPPORTED=false
+ AC_MSG_RESULT([no])
+ fi
+ AC_SUBST(OUTPUT_SYNC_SUPPORTED)
+ AC_SUBST(OUTPUT_SYNC)
+])
+
+# Goes looking for a usable version of GNU make.
+AC_DEFUN([BASIC_CHECK_GNU_MAKE],
+[
+ BASIC_SETUP_TOOL([MAKE],
+ [
+ # 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$TOOLCHAIN_PATH" != x; then
+ # We have a toolchain path, check that as well before giving up.
+ OLD_PATH=$PATH
+ PATH=$TOOLCHAIN_PATH:$PATH
+ AC_PATH_PROGS(CHECK_TOOLSDIR_GMAKE, gmake)
+ 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 $MAKE_REQUIRED_VERSION or newer! Please put it in the path, or add e.g. MAKE=/opt/gmake3.81/make as argument to configure.])
+ fi
+ ],[
+ # If MAKE was set by user, verify the version
+ BASIC_CHECK_MAKE_VERSION("$MAKE", [user supplied MAKE=$MAKE])
+ if test "x$FOUND_MAKE" = x; then
+ AC_MSG_ERROR([The specified make (by MAKE=$MAKE) is not GNU make $MAKE_REQUIRED_VERSION or newer.])
+ fi
+ ])
+
+ MAKE=$FOUND_MAKE
+ AC_SUBST(MAKE)
+ AC_MSG_NOTICE([Using GNU make at $FOUND_MAKE (version: $MAKE_VERSION_STRING)])
+
+ BASIC_CHECK_MAKE_OUTPUT_SYNC
+])
+
+AC_DEFUN([BASIC_CHECK_FIND_DELETE],
+[
+ # Test if find supports -delete
+ AC_MSG_CHECKING([if find supports -delete])
+ FIND_DELETE="-delete"
+
+ DELETEDIR=`$MKTEMP -d tmp.XXXXXXXXXX` || (echo Could not create temporary directory!; exit $?)
+
+ echo Hejsan > $DELETEDIR/TestIfFindSupportsDelete
+
+ TEST_DELETE=`$FIND "$DELETEDIR" -name TestIfFindSupportsDelete $FIND_DELETE 2>&1`
+ if test -f $DELETEDIR/TestIfFindSupportsDelete; then
+ # No, it does not.
+ $RM $DELETEDIR/TestIfFindSupportsDelete
+ if test "x$OPENJDK_TARGET_OS" = "xaix"; then
+ # AIX 'find' is buggy if called with '-exec {} \+' and an empty file list
+ FIND_DELETE="-print | $XARGS $RM"
+ else
+ FIND_DELETE="-exec $RM \{\} \+"
+ fi
+ AC_MSG_RESULT([no])
+ else
+ AC_MSG_RESULT([yes])
+ fi
+ $RMDIR $DELETEDIR
+ AC_SUBST(FIND_DELETE)
+])
+
+AC_DEFUN([BASIC_CHECK_TAR],
+[
+ # Test which kind of tar was found
+ if test "x$($TAR --version | $GREP "GNU tar")" != "x"; then
+ TAR_TYPE="gnu"
+ elif test "x$($TAR --version | $GREP "bsdtar")" != "x"; then
+ TAR_TYPE="bsd"
+ elif test "x$($TAR -v | $GREP "bsdtar")" != "x"; then
+ TAR_TYPE="bsd"
+ elif test "x$OPENJDK_BUILD_OS" = "xsolaris"; then
+ TAR_TYPE="solaris"
+ fi
+ AC_MSG_CHECKING([what type of tar was found])
+ AC_MSG_RESULT([$TAR_TYPE])
+
+ TAR_CREATE_FILE_PARAM=""
+
+ if test "x$TAR_TYPE" = "xgnu"; then
+ TAR_INCLUDE_PARAM="T"
+ TAR_SUPPORTS_TRANSFORM="true"
+ if test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
+ # When using gnu tar for Solaris targets, need to use compatibility mode
+ TAR_CREATE_EXTRA_PARAM="--format=ustar"
+ fi
+ else
+ TAR_INCLUDE_PARAM="I"
+ TAR_SUPPORTS_TRANSFORM="false"
+ fi
+ AC_SUBST(TAR_TYPE)
+ AC_SUBST(TAR_CREATE_EXTRA_PARAM)
+ AC_SUBST(TAR_INCLUDE_PARAM)
+ AC_SUBST(TAR_SUPPORTS_TRANSFORM)
+])
+
+AC_DEFUN([BASIC_CHECK_GREP],
+[
+ # Test that grep supports -Fx with a list of pattern which includes null pattern.
+ # This is a problem for the grep resident on AIX.
+ AC_MSG_CHECKING([that grep ($GREP) -Fx handles empty lines in the pattern list correctly])
+ # Multiple subsequent spaces..
+ STACK_SPACES='aaa bbb ccc'
+ # ..converted to subsequent newlines, causes STACK_LIST to be a list with some empty
+ # patterns in it.
+ STACK_LIST=${STACK_SPACES// /$'\n'}
+ NEEDLE_SPACES='ccc bbb aaa'
+ NEEDLE_LIST=${NEEDLE_SPACES// /$'\n'}
+ RESULT="$($GREP -Fvx "$STACK_LIST" <<< "$NEEDLE_LIST")"
+ if test "x$RESULT" == "x"; then
+ AC_MSG_RESULT([yes])
+ else
+ if test "x$OPENJDK_TARGET_OS" = "xaix"; then
+ ADDINFO="Please make sure you use GNU grep, usually found at /opt/freeware/bin."
+ fi
+ AC_MSG_ERROR([grep does not handle -Fx correctly. ${ADDINFO}])
+ fi
+])
+
+AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS],
+[
+ BASIC_CHECK_GNU_MAKE
+
+ BASIC_CHECK_FIND_DELETE
+ BASIC_CHECK_TAR
+ BASIC_CHECK_GREP
+
+ # These tools might not be installed by default,
+ # need hint on how to install them.
+ BASIC_REQUIRE_PROGS(UNZIP, unzip)
+ # Since zip uses "ZIP" as a environment variable for passing options, we need
+ # to name our variable differently, hence ZIPEXE.
+ BASIC_REQUIRE_PROGS(ZIPEXE, zip)
+
+ # Non-required basic tools
+
+ BASIC_PATH_PROGS(LDD, ldd)
+ if test "x$LDD" = "x"; then
+ # List shared lib dependencies is used for
+ # debug output and checking for forbidden dependencies.
+ # We can build without it.
+ LDD="true"
+ fi
+ BASIC_PATH_PROGS(OTOOL, otool)
+ if test "x$OTOOL" = "x"; then
+ OTOOL="true"
+ fi
+ BASIC_PATH_PROGS(READELF, [greadelf readelf])
+ BASIC_PATH_PROGS(DOT, dot)
+ BASIC_PATH_PROGS(HG, hg)
+ BASIC_PATH_PROGS(STAT, stat)
+ BASIC_PATH_PROGS(TIME, time)
+ # Dtrace is usually found in /usr/sbin on Solaris, but that directory may not
+ # be in the user path.
+ BASIC_PATH_PROGS(DTRACE, dtrace, $PATH:/usr/sbin)
+ BASIC_PATH_PROGS(PATCH, [gpatch patch])
+ # Check if it's GNU time
+ IS_GNU_TIME=`$TIME --version 2>&1 | $GREP 'GNU time'`
+ if test "x$IS_GNU_TIME" != x; then
+ IS_GNU_TIME=yes
+ else
+ IS_GNU_TIME=no
+ fi
+ AC_SUBST(IS_GNU_TIME)
+
+ if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
+ BASIC_REQUIRE_PROGS(DSYMUTIL, dsymutil)
+ BASIC_REQUIRE_PROGS(XATTR, xattr)
+ BASIC_PATH_PROGS(CODESIGN, codesign)
+ if test "x$CODESIGN" != "x"; then
+ # Verify that the openjdk_codesign certificate is present
+ AC_MSG_CHECKING([if openjdk_codesign certificate is present])
+ $RM codesign-testfile
+ $TOUCH codesign-testfile
+ $CODESIGN -s openjdk_codesign codesign-testfile 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD || CODESIGN=
+ $RM codesign-testfile
+ if test "x$CODESIGN" = x; then
+ AC_MSG_RESULT([no])
+ else
+ AC_MSG_RESULT([yes])
+ fi
+ fi
+ BASIC_REQUIRE_PROGS(SETFILE, SetFile)
+ fi
+])
+
+# Check if build directory is on local disk. If not possible to determine,
+# we prefer to claim it's local.
+# Argument 1: directory to test
+# Argument 2: what to do if it is on local disk
+# Argument 3: what to do otherwise (remote disk or failure)
+AC_DEFUN([BASIC_CHECK_DIR_ON_LOCAL_DISK],
+[
+ # df -l lists only local disks; if the given directory is not found then
+ # a non-zero exit code is given
+ if test "x$DF" = x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # msys does not have df; use Windows "net use" instead.
+ IS_NETWORK_DISK=`net use | grep \`pwd -W | cut -d ":" -f 1 | tr a-z A-Z\`:`
+ if test "x$IS_NETWORK_DISK" = x; then
+ $2
+ else
+ $3
+ fi
+ else
+ # No df here, say it's local
+ $2
+ fi
+ else
+ if $DF -l $1 > /dev/null 2>&1; then
+ $2
+ else
+ $3
+ fi
+ fi
+])
+
+# Check that source files have basic read permissions set. This might
+# not be the case in cygwin in certain conditions.
+AC_DEFUN_ONCE([BASIC_CHECK_SRC_PERMS],
+[
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ file_to_test="$SRC_ROOT/LICENSE"
+ if test `$STAT -c '%a' "$file_to_test"` -lt 400; then
+ AC_MSG_ERROR([Bad file permissions on src files. This is usually caused by cloning the repositories with a non cygwin hg in a directory not created in cygwin.])
+ fi
+ fi
+])
+
+AC_DEFUN_ONCE([BASIC_TEST_USABILITY_ISSUES],
+[
+ # Did user specify any unknown variables?
+ BASIC_CHECK_LEFTOVER_OVERRIDDEN
+
+ AC_MSG_CHECKING([if build directory is on local disk])
+ BASIC_CHECK_DIR_ON_LOCAL_DISK($OUTPUT_ROOT,
+ [OUTPUT_DIR_IS_LOCAL="yes"],
+ [OUTPUT_DIR_IS_LOCAL="no"])
+ AC_MSG_RESULT($OUTPUT_DIR_IS_LOCAL)
+
+ BASIC_CHECK_SRC_PERMS
+
+ # Check if the user has any old-style ALT_ variables set.
+ FOUND_ALT_VARIABLES=`env | grep ^ALT_`
+
+ # Before generating output files, test if they exist. If they do, this is a reconfigure.
+ # Since we can't properly handle the dependencies for this, warn the user about the situation
+ if test -e $OUTPUT_ROOT/spec.gmk; then
+ IS_RECONFIGURE=yes
+ else
+ IS_RECONFIGURE=no
+ fi
+])
+
+# Check for support for specific options in bash
+AC_DEFUN_ONCE([BASIC_CHECK_BASH_OPTIONS],
+[
+ # Check bash version
+ # Extra [ ] to stop m4 mangling
+ [ BASH_VER=`$BASH --version | $SED -n -e 's/^.*bash.*ersion *\([0-9.]*\).*$/\1/ p'` ]
+ AC_MSG_CHECKING([bash version])
+ AC_MSG_RESULT([$BASH_VER])
+
+ BASH_MAJOR=`$ECHO $BASH_VER | $CUT -d . -f 1`
+ BASH_MINOR=`$ECHO $BASH_VER | $CUT -d . -f 2`
+ if test $BASH_MAJOR -lt 3 || (test $BASH_MAJOR -eq 3 && test $BASH_MINOR -lt 2); then
+ AC_MSG_ERROR([bash version 3.2 or better is required])
+ fi
+
+ # Test if bash supports pipefail.
+ AC_MSG_CHECKING([if bash supports pipefail])
+ if ${BASH} -c 'set -o pipefail'; then
+ BASH_ARGS="$BASH_ARGS -o pipefail"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+
+ AC_MSG_CHECKING([if bash supports errexit (-e)])
+ if ${BASH} -e -c 'true'; then
+ BASH_ARGS="$BASH_ARGS -e"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+
+ AC_SUBST(BASH_ARGS)
+])
+
+################################################################################
+#
+# Default make target
+#
+AC_DEFUN_ONCE([BASIC_SETUP_DEFAULT_MAKE_TARGET],
+[
+ AC_ARG_WITH(default-make-target, [AS_HELP_STRING([--with-default-make-target],
+ [set the default make target @<:@exploded-image@:>@])])
+ if test "x$with_default_make_target" = "x" \
+ || test "x$with_default_make_target" = "xyes"; then
+ DEFAULT_MAKE_TARGET="exploded-image"
+ elif test "x$with_default_make_target" = "xno"; then
+ AC_MSG_ERROR([--without-default-make-target is not a valid option])
+ else
+ DEFAULT_MAKE_TARGET="$with_default_make_target"
+ fi
+
+ AC_SUBST(DEFAULT_MAKE_TARGET)
+])
+
+# Code to run after AC_OUTPUT
+AC_DEFUN_ONCE([BASIC_POST_CONFIG_OUTPUT],
+[
+ # Try to move config.log (generated by autoconf) to the configure-support directory.
+ if test -e ./config.log; then
+ $MV -f ./config.log "$CONFIGURESUPPORT_OUTPUTDIR/config.log" 2> /dev/null
+ fi
+
+ # Rotate our log file (configure.log)
+ if test -e "$OUTPUT_ROOT/configure.log.old"; then
+ $RM -f "$OUTPUT_ROOT/configure.log.old"
+ fi
+ if test -e "$OUTPUT_ROOT/configure.log"; then
+ $MV -f "$OUTPUT_ROOT/configure.log" "$OUTPUT_ROOT/configure.log.old" 2> /dev/null
+ fi
+
+ # Move configure.log from current directory to the build output root
+ if test -e ./configure.log; then
+ $MV -f ./configure.log "$OUTPUT_ROOT/configure.log" 2> /dev/null
+ fi
+
+ # Make the compare script executable
+ $CHMOD +x $OUTPUT_ROOT/compare.sh
+])
diff --git a/common/autoconf/basics_windows.m4 b/common/autoconf/basics_windows.m4
new file mode 100644
index 0000000..2ae6e34
--- /dev/null
+++ b/common/autoconf/basics_windows.m4
@@ -0,0 +1,432 @@
+#
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+AC_DEFUN([BASIC_WINDOWS_REWRITE_AS_UNIX_PATH],
+[
+ windows_path="[$]$1"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ $1="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ $1="$unix_path"
+ fi
+])
+
+AC_DEFUN([BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH],
+[
+ unix_path="[$]$1"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ windows_path=`$CYGPATH -m "$unix_path"`
+ $1="$windows_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ windows_path=`cmd //c echo $unix_path`
+ $1="$windows_path"
+ fi
+])
+
+# Helper function which possibly converts a path using DOS-style short mode.
+# If so, the updated path is stored in $new_path.
+# $1: The path to check
+AC_DEFUN([BASIC_MAKE_WINDOWS_SPACE_SAFE_CYGWIN],
+[
+ input_path="$1"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use @<:@ and @:>@ instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP @<:@^-._/a-zA-Z0-9@:>@`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $1 | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+])
+
+# Helper function which possibly converts a path using DOS-style short mode.
+# If so, the updated path is stored in $new_path.
+# $1: The path to check
+AC_DEFUN([BASIC_MAKE_WINDOWS_SPACE_SAFE_MSYS],
+[
+ input_path="$1"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use @<:@ and @:>@ instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP @<:@^-_/:a-zA-Z0-9@:>@`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+])
+
+# FIXME: The BASIC_FIXUP_*_CYGWIN/MSYS is most likely too convoluted
+# and could probably be heavily simplified. However, all changes in this
+# area tend to need lot of testing in different scenarios, and in lack of
+# proper unit testing, cleaning this up has not been deemed worth the effort
+# at the moment.
+
+AC_DEFUN([BASIC_FIXUP_PATH_CYGWIN],
+[
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="[$]$1"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ AC_MSG_NOTICE([The path of $1, which resolves as "$path", is invalid.])
+ AC_MSG_ERROR([Cannot locate the the path of $1])
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ BASIC_MAKE_WINDOWS_SPACE_SAFE_CYGWIN([$new_path])
+
+ if test "x$path" != "x$new_path"; then
+ $1="$new_path"
+ AC_MSG_NOTICE([Rewriting $1 to "$new_path"])
+ fi
+])
+
+AC_DEFUN([BASIC_FIXUP_PATH_MSYS],
+[
+ path="[$]$1"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+ BASIC_MAKE_WINDOWS_SPACE_SAFE_MSYS([$new_path])
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(new_path)
+ if test "x$path" != "x$new_path"; then
+ $1="$new_path"
+ AC_MSG_NOTICE([Rewriting $1 to "$new_path"])
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes@<:@@@:>@}" "${new_path:0:10}")
+])
+
+AC_DEFUN([BASIC_FIXUP_EXECUTABLE_CYGWIN],
+[
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="[$]$1"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ AC_MSG_NOTICE([The path of $1, which resolves as "$complete", is not found.])
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ AC_MSG_NOTICE([You might be mixing spaces in the path and extra arguments, which is not allowed.])
+ fi
+ AC_MSG_ERROR([Cannot locate the the path of $1])
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ AC_MSG_NOTICE([The path of $1, which resolves as "$new_path", is invalid.])
+ AC_MSG_NOTICE([Neither "$new_path" nor "$new_path.exe/cmd" can be found])
+ AC_MSG_ERROR([Cannot locate the the path of $1])
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+ BASIC_MAKE_WINDOWS_SPACE_SAFE_CYGWIN([$input_to_shortpath])
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+])
+
+AC_DEFUN([BASIC_FIXUP_EXECUTABLE_MSYS],
+[
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="[$]$1"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(new_path)
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(new_path)
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(new_path)
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ AC_MSG_NOTICE([The path of $1, which resolves as "$complete", is not found.])
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ AC_MSG_NOTICE([You might be mixing spaces in the path and extra arguments, which is not allowed.])
+ fi
+ AC_MSG_ERROR([Cannot locate the the path of $1])
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+ BASIC_MAKE_WINDOWS_SPACE_SAFE_MSYS([$new_path])
+ # Output is in $new_path
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(new_path)
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes@<:@@@:>@}" "${new_path:0:10}")
+ fi
+])
+
+# Setup basic configuration paths, and platform-specific stuff related to PATHs.
+AC_DEFUN([BASIC_CHECK_PATHS_WINDOWS],
+[
+ SRC_ROOT_LENGTH=`$THEPWDCMD -L|$WC -m`
+ if test $SRC_ROOT_LENGTH -gt 100; then
+ AC_MSG_ERROR([Your base path is too long. It is $SRC_ROOT_LENGTH characters long, but only 100 is supported])
+ fi
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ AC_MSG_CHECKING([cygwin release])
+ CYGWIN_VERSION=`$UNAME -r`
+ AC_MSG_RESULT([$CYGWIN_VERSION])
+ WINDOWS_ENV_VENDOR='cygwin'
+ WINDOWS_ENV_VERSION="$CYGWIN_VERSION"
+
+ CYGWIN_VERSION_OLD=`$ECHO $CYGWIN_VERSION | $GREP -e '^1\.[0-6]'`
+ if test "x$CYGWIN_VERSION_OLD" != x; then
+ AC_MSG_NOTICE([Your cygwin is too old. You are running $CYGWIN_VERSION, but at least cygwin 1.7 is required. Please upgrade.])
+ AC_MSG_ERROR([Cannot continue])
+ fi
+ if test "x$CYGPATH" = x; then
+ AC_MSG_ERROR([Something is wrong with your cygwin installation since I cannot find cygpath.exe in your path])
+ fi
+ AC_MSG_CHECKING([cygwin root directory as unix-style path])
+ # The cmd output ends with Windows line endings (CR/LF)
+ cygwin_winpath_root=`cd / ; cmd /c cd | $TR -d '\r\n'`
+ # Force cygpath to report the proper root by including a trailing space, and then stripping it off again.
+ CYGWIN_ROOT_PATH=`$CYGPATH -u "$cygwin_winpath_root " | $CUT -f 1 -d " "`
+ AC_MSG_RESULT([$CYGWIN_ROOT_PATH])
+ WINDOWS_ENV_ROOT_PATH="$CYGWIN_ROOT_PATH"
+ test_cygdrive_prefix=`$ECHO $CYGWIN_ROOT_PATH | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ AC_MSG_ERROR([Your cygdrive prefix is not /cygdrive. This is currently not supported. Change with mount -c.])
+ fi
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ AC_MSG_CHECKING([msys release])
+ MSYS_VERSION=`$UNAME -r`
+ AC_MSG_RESULT([$MSYS_VERSION])
+
+ WINDOWS_ENV_VENDOR='msys'
+ WINDOWS_ENV_VERSION="$MSYS_VERSION"
+
+ AC_MSG_CHECKING([msys root directory as unix-style path])
+ # The cmd output ends with Windows line endings (CR/LF), the grep command will strip that away
+ MSYS_ROOT_PATH=`cd / ; cmd /c cd | $GREP ".*"`
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(MSYS_ROOT_PATH)
+ AC_MSG_RESULT([$MSYS_ROOT_PATH])
+ WINDOWS_ENV_ROOT_PATH="$MSYS_ROOT_PATH"
+ else
+ AC_MSG_ERROR([Unknown Windows environment. Neither cygwin nor msys was detected.])
+ fi
+
+ # Test if windows or unix (cygwin/msys) find is first in path.
+ AC_MSG_CHECKING([what kind of 'find' is first on the PATH])
+ FIND_BINARY_OUTPUT=`find --version 2>&1`
+ if test "x`echo $FIND_BINARY_OUTPUT | $GREP GNU`" != x; then
+ AC_MSG_RESULT([unix style])
+ elif test "x`echo $FIND_BINARY_OUTPUT | $GREP FIND`" != x; then
+ AC_MSG_RESULT([Windows])
+ AC_MSG_NOTICE([Your path contains Windows tools (C:\Windows\system32) before your unix (cygwin or msys) tools.])
+ AC_MSG_NOTICE([This will not work. Please correct and make sure /usr/bin (or similar) is first in path.])
+ AC_MSG_ERROR([Cannot continue])
+ else
+ AC_MSG_RESULT([unknown])
+ AC_MSG_WARN([It seems that your find utility is non-standard.])
+ fi
+])
+
+AC_DEFUN_ONCE([BASIC_COMPILE_FIXPATH],
+[
+ # When using cygwin or msys, we need a wrapper binary that renames
+ # /cygdrive/c/ arguments into c:/ arguments and peeks into
+ # @files and rewrites these too! This wrapper binary is
+ # called fixpath.
+ FIXPATH=
+ if test "x$OPENJDK_BUILD_OS" = xwindows; then
+ AC_MSG_CHECKING([if fixpath can be created])
+ FIXPATH_SRC="$SRC_ROOT/common/src/fixpath.c"
+ FIXPATH_BIN="$CONFIGURESUPPORT_OUTPUTDIR/bin/fixpath.exe"
+ FIXPATH_DIR="$CONFIGURESUPPORT_OUTPUTDIR/fixpath"
+ if test "x$OPENJDK_BUILD_OS_ENV" = xwindows.cygwin; then
+ # Important to keep the .exe suffix on Cygwin for Hotspot makefiles
+ FIXPATH="$FIXPATH_BIN -c"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = xwindows.msys; then
+ # Take all collected prefixes and turn them into a -m/c/foo@/c/bar@... command line
+ # @ was chosen as separator to minimize risk of other tools messing around with it
+ all_unique_prefixes=`echo "${all_fixpath_prefixes@<:@@@:>@}" \
+ | tr ' ' '\n' | $GREP '^/./' | $SORT | $UNIQ`
+ fixpath_argument_list=`echo $all_unique_prefixes | tr ' ' '@'`
+ FIXPATH="$FIXPATH_BIN -m$fixpath_argument_list"
+ fi
+ FIXPATH_SRC_W="$FIXPATH_SRC"
+ FIXPATH_BIN_W="$FIXPATH_BIN"
+ BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([FIXPATH_SRC_W])
+ BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([FIXPATH_BIN_W])
+ $RM -rf $FIXPATH_BIN $FIXPATH_DIR
+ $MKDIR -p $FIXPATH_DIR $CONFIGURESUPPORT_OUTPUTDIR/bin
+ cd $FIXPATH_DIR
+ $CC $FIXPATH_SRC_W -Fe$FIXPATH_BIN_W > $FIXPATH_DIR/fixpath1.log 2>&1
+ cd $CURDIR
+
+ if test ! -x $FIXPATH_BIN; then
+ AC_MSG_RESULT([no])
+ cat $FIXPATH_DIR/fixpath1.log
+ AC_MSG_ERROR([Could not create $FIXPATH_BIN])
+ fi
+ AC_MSG_RESULT([yes])
+ AC_MSG_CHECKING([if fixpath.exe works])
+ cd $FIXPATH_DIR
+ $FIXPATH $CC $FIXPATH_SRC -Fe$FIXPATH_DIR/fixpath2.exe \
+ > $FIXPATH_DIR/fixpath2.log 2>&1
+ cd $CURDIR
+ if test ! -x $FIXPATH_DIR/fixpath2.exe; then
+ AC_MSG_RESULT([no])
+ cat $FIXPATH_DIR/fixpath2.log
+ AC_MSG_ERROR([fixpath did not work!])
+ fi
+ AC_MSG_RESULT([yes])
+
+ FIXPATH_DETACH_FLAG="--detach"
+ fi
+
+ AC_SUBST(FIXPATH)
+ AC_SUBST(FIXPATH_DETACH_FLAG)
+])
diff --git a/common/autoconf/boot-jdk.m4 b/common/autoconf/boot-jdk.m4
new file mode 100644
index 0000000..b7ae105
--- /dev/null
+++ b/common/autoconf/boot-jdk.m4
@@ -0,0 +1,541 @@
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+########################################################################
+# This file handles detection of the Boot JDK. The Boot JDK detection
+# process has been developed as a response to solve a complex real-world
+# problem. Initially, it was simple, but it has grown as platform after
+# platform, idiosyncracy after idiosyncracy has been supported.
+#
+# The basic idea is this:
+# 1) You need an acceptable *) JDK to use as a Boot JDK
+# 2) There are several ways to locate a JDK, that are mostly platform
+# dependent **)
+# 3) You can have multiple JDKs installed
+# 4) If possible, configure should try to dig out an acceptable JDK
+# automatically, without having to resort to command-line options
+#
+# *) acceptable means e.g. JDK7 for building JDK8, a complete JDK (with
+# javac) and not a JRE, etc.
+#
+# **) On Windows we typically use a well-known path.
+# On MacOSX we typically use the tool java_home.
+# On Linux we typically find javac in the $PATH, and then follow a
+# chain of symlinks that often ends up in a real JDK.
+#
+# This leads to the code where we check in different ways to locate a
+# JDK, and if one is found, check if it is acceptable. If not, we print
+# our reasons for rejecting it (useful when debugging non-working
+# configure situations) and continue checking the next one.
+########################################################################
+
+# 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$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
+ # 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`]
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ AC_MSG_NOTICE([Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring])
+ AC_MSG_NOTICE([(Your Boot JDK must be version 8 or 9)])
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+ BASIC_FIXUP_PATH(BOOT_JDK)
+ AC_MSG_CHECKING([for Boot JDK])
+ AC_MSG_RESULT([$BOOT_JDK])
+ AC_MSG_CHECKING([Boot JDK version])
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ AC_MSG_RESULT([$BOOT_JDK_VERSION])
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+])
+
+# Test: Is bootjdk explicitly 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 $JAVA_HOME set?
+AC_DEFUN([BOOTJDK_CHECK_JAVA_HOME],
+[
+ if test "x$JAVA_HOME" != x; then
+ JAVA_HOME_PROCESSED="$JAVA_HOME"
+ BASIC_FIXUP_PATH(JAVA_HOME_PROCESSED)
+ 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
+])
+
+# Test: Is there a java or javac in the PATH, which is a symlink to the JDK?
+AC_DEFUN([BOOTJDK_CHECK_JAVA_IN_PATH_IS_SYMLINK],
+[
+ AC_PATH_PROG(JAVAC_CHECK, javac)
+ AC_PATH_PROG(JAVA_CHECK, java)
+ 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.
+ BASIC_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)
+# $1: Argument to the java_home binary (optional)
+AC_DEFUN([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME],
+[
+ if test -x /usr/libexec/java_home; then
+ BOOT_JDK=`/usr/libexec/java_home $1`
+ BOOT_JDK_FOUND=maybe
+ AC_MSG_NOTICE([Found potential Boot JDK using /usr/libexec/java_home $1])
+ fi
+])
+
+# Test: On MacOS X, can we find a boot jdk using /usr/libexec/java_home?
+AC_DEFUN([BOOTJDK_CHECK_MACOSX_JAVA_LOCATOR],
+[
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # First check at user selected default
+ BOOTJDK_DO_CHECK([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME()])
+ # If that did not work out (e.g. too old), try explicit versions instead
+ BOOTJDK_DO_CHECK([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME([-v 1.9])])
+ BOOTJDK_DO_CHECK([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME([-v 1.8])])
+ BOOTJDK_DO_CHECK([BOOTJDK_CHECK_LIBEXEC_JAVA_HOME([-v 1.7])])
+ 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"
+ ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+ if test "x$ALL_JDKS_FOUND" != x; then
+ for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
+ BOOTJDK_DO_CHECK([
+ BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${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/$JDK_TO_TRY)])
+ fi
+ ])
+ done
+ 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
+ VIRTUAL_DIR="[$]$1/Java"
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(VIRTUAL_DIR)
+ BOOTJDK_FIND_BEST_JDK_IN_DIRECTORY($VIRTUAL_DIR)
+ 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])])
+ elif test "x$OPENJDK_TARGET_OS" = xlinux; then
+ BOOTJDK_DO_CHECK([BOOTJDK_FIND_BEST_JDK_IN_DIRECTORY([/usr/lib/jvm])])
+ 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],
+[
+ # Use user overridden value if available, otherwise locate tool in the Boot JDK.
+ BASIC_SETUP_TOOL($1,
+ [
+ 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 explicitly setting --with-boot-jdk])
+ AC_MSG_ERROR([Could not find $2 in the Boot JDK])
+ fi
+ AC_MSG_RESULT(ok)
+ AC_SUBST($1)
+ ])
+])
+
+###############################################################################
+#
+# We need a Boot JDK to bootstrap the build.
+#
+
+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@:>@])])
+
+ # 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 explicitly 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: On MacOS X, can we find a boot jdk using /usr/libexec/java_home?
+ BOOTJDK_DO_CHECK([BOOTJDK_CHECK_MACOSX_JAVA_LOCATOR])
+
+ # Test: Is $JAVA_HOME set?
+ BOOTJDK_DO_CHECK([BOOTJDK_CHECK_JAVA_HOME])
+
+ # Test: 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
+ 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 explicitly setting --with-boot-jdk])
+ AC_MSG_ERROR([Cannot continue])
+ fi
+
+ AC_SUBST(BOOT_JDK)
+
+ # 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(JAR, jar)
+ BOOTJDK_CHECK_TOOL_IN_BOOTJDK(JARSIGNER, jarsigner)
+
+ # Finally, set some other options...
+
+ # When compiling code to be executed by the Boot JDK, force jdk8 compatibility.
+ BOOT_JDK_SOURCETARGET="-source 8 -target 8"
+ AC_SUBST(BOOT_JDK_SOURCETARGET)
+
+ AC_MSG_CHECKING([if Boot JDK supports modules])
+ if "$JAVA" --list-modules > /dev/null 2>&1; then
+ AC_MSG_RESULT([yes])
+ BOOT_JDK_MODULAR="true"
+ else
+ AC_MSG_RESULT([no])
+ BOOT_JDK_MODULAR="false"
+ fi
+ AC_SUBST(BOOT_JDK_MODULAR)
+
+ AC_SUBST(JAVAC_FLAGS)
+
+ # Check if the boot jdk is 32 or 64 bit
+ if "$JAVA" -d64 -version > /dev/null 2>&1; then
+ BOOT_JDK_BITS="64"
+ else
+ BOOT_JDK_BITS="32"
+ fi
+ AC_MSG_CHECKING([if Boot JDK is 32 or 64 bits])
+ AC_MSG_RESULT([$BOOT_JDK_BITS])
+])
+
+AC_DEFUN_ONCE([BOOTJDK_SETUP_BOOT_JDK_ARGUMENTS],
+[
+ ##############################################################################
+ #
+ # Specify jvm options for anything that is run with the Boot JDK.
+ # Not all JVM:s accept the same arguments on the command line.
+ #
+ AC_ARG_WITH(boot-jdk-jvmargs, [AS_HELP_STRING([--with-boot-jdk-jvmargs],
+ [specify JVM arguments to be passed to all java invocations of boot JDK, overriding the default values,
+ e.g --with-boot-jdk-jvmargs="-Xmx8G -enableassertions"])])
+
+ AC_MSG_CHECKING([flags for boot jdk java command] )
+
+ # Disable special log output when a debug build is used as Boot JDK...
+ ADD_JVM_ARG_IF_OK([-XX:-PrintVMOptions -XX:-UnlockDiagnosticVMOptions -XX:-LogVMOutput],boot_jdk_jvmargs,[$JAVA])
+
+ # Force en-US environment
+ ADD_JVM_ARG_IF_OK([-Duser.language=en -Duser.country=US],boot_jdk_jvmargs,[$JAVA])
+
+ # Apply user provided options.
+ ADD_JVM_ARG_IF_OK([$with_boot_jdk_jvmargs],boot_jdk_jvmargs,[$JAVA])
+
+ AC_MSG_RESULT([$boot_jdk_jvmargs])
+
+ # For now, general JAVA_FLAGS are the same as the boot jdk jvmargs
+ JAVA_FLAGS=$boot_jdk_jvmargs
+ AC_SUBST(JAVA_FLAGS)
+
+
+ AC_MSG_CHECKING([flags for boot jdk java command for big workloads])
+
+ # Starting amount of heap memory.
+ ADD_JVM_ARG_IF_OK([-Xms64M],boot_jdk_jvmargs_big,[$JAVA])
+ BOOTCYCLE_JVM_ARGS_BIG=-Xms64M
+
+ # Maximum amount of heap memory and stack size.
+ JVM_HEAP_LIMIT_32="1024"
+ # Running a 64 bit JVM allows for and requires a bigger heap
+ JVM_HEAP_LIMIT_64="1600"
+ STACK_SIZE_32=768
+ STACK_SIZE_64=1536
+ JVM_HEAP_LIMIT_GLOBAL=`expr $MEMORY_SIZE / 2`
+ if test "$JVM_HEAP_LIMIT_GLOBAL" -lt "$JVM_HEAP_LIMIT_32"; then
+ JVM_HEAP_LIMIT_32=$JVM_HEAP_LIMIT_GLOBAL
+ fi
+ if test "$JVM_HEAP_LIMIT_GLOBAL" -lt "$JVM_HEAP_LIMIT_64"; then
+ JVM_HEAP_LIMIT_64=$JVM_HEAP_LIMIT_GLOBAL
+ fi
+ if test "$JVM_HEAP_LIMIT_GLOBAL" -lt "512"; then
+ JVM_HEAP_LIMIT_32=512
+ JVM_HEAP_LIMIT_64=512
+ fi
+
+ if test "x$BOOT_JDK_BITS" = "x32"; then
+ STACK_SIZE=$STACK_SIZE_32
+ JVM_MAX_HEAP=$JVM_HEAP_LIMIT_32
+ else
+ STACK_SIZE=$STACK_SIZE_64
+ JVM_MAX_HEAP=$JVM_HEAP_LIMIT_64
+ fi
+ ADD_JVM_ARG_IF_OK([-Xmx${JVM_MAX_HEAP}M],boot_jdk_jvmargs_big,[$JAVA])
+ ADD_JVM_ARG_IF_OK([-XX:ThreadStackSize=$STACK_SIZE],boot_jdk_jvmargs_big,[$JAVA])
+
+ AC_MSG_RESULT([$boot_jdk_jvmargs_big])
+
+ JAVA_FLAGS_BIG=$boot_jdk_jvmargs_big
+ AC_SUBST(JAVA_FLAGS_BIG)
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
+ BOOTCYCLE_MAX_HEAP=$JVM_HEAP_LIMIT_32
+ BOOTCYCLE_STACK_SIZE=$STACK_SIZE_32
+ else
+ BOOTCYCLE_MAX_HEAP=$JVM_HEAP_LIMIT_64
+ BOOTCYCLE_STACK_SIZE=$STACK_SIZE_64
+ fi
+ BOOTCYCLE_JVM_ARGS_BIG="$BOOTCYCLE_JVM_ARGS_BIG -Xmx${BOOTCYCLE_MAX_HEAP}M"
+ BOOTCYCLE_JVM_ARGS_BIG="$BOOTCYCLE_JVM_ARGS_BIG -XX:ThreadStackSize=$BOOTCYCLE_STACK_SIZE"
+ AC_MSG_CHECKING([flags for bootcycle boot jdk java command for big workloads])
+ AC_MSG_RESULT([$BOOTCYCLE_JVM_ARGS_BIG])
+ AC_SUBST(BOOTCYCLE_JVM_ARGS_BIG)
+
+ # By default, the main javac compilations use big
+ JAVA_FLAGS_JAVAC="$JAVA_FLAGS_BIG"
+ AC_SUBST(JAVA_FLAGS_JAVAC)
+
+ AC_MSG_CHECKING([flags for boot jdk java command for small workloads])
+
+ # Use serial gc for small short lived tools if possible
+ ADD_JVM_ARG_IF_OK([-XX:+UseSerialGC],boot_jdk_jvmargs_small,[$JAVA])
+ ADD_JVM_ARG_IF_OK([-Xms32M],boot_jdk_jvmargs_small,[$JAVA])
+ ADD_JVM_ARG_IF_OK([-Xmx512M],boot_jdk_jvmargs_small,[$JAVA])
+ ADD_JVM_ARG_IF_OK([-XX:TieredStopAtLevel=1],boot_jdk_jvmargs_small,[$JAVA])
+
+ AC_MSG_RESULT([$boot_jdk_jvmargs_small])
+
+ JAVA_FLAGS_SMALL=$boot_jdk_jvmargs_small
+ AC_SUBST(JAVA_FLAGS_SMALL)
+
+ JAVA_TOOL_FLAGS_SMALL=""
+ for f in $JAVA_FLAGS_SMALL; do
+ JAVA_TOOL_FLAGS_SMALL="$JAVA_TOOL_FLAGS_SMALL -J$f"
+ done
+ AC_SUBST(JAVA_TOOL_FLAGS_SMALL)
+])
+
+# BUILD_JDK: the location of the latest JDK that can run
+# on the host system and supports the target class file version
+# generated in this JDK build. This variable should only be
+# used after the launchers are built.
+#
+
+# Execute the check given as argument, and verify the result.
+# If the JDK was previously found, do nothing.
+# $1 A command line (typically autoconf macro) to execute
+AC_DEFUN([BOOTJDK_CHECK_BUILD_JDK],
+[
+ if test "x$BUILD_JDK_FOUND" = xno; then
+ # 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$BUILD_JDK_FOUND" = xmaybe; then
+ # Do we have a bin/java?
+ if test ! -x "$BUILD_JDK/bin/java"; then
+ AC_MSG_NOTICE([Potential Build JDK found at $BUILD_JDK did not contain bin/java; ignoring])
+ BUILD_JDK_FOUND=no
+ elif test ! -x "$BUILD_JDK/bin/jlink"; then
+ AC_MSG_NOTICE([Potential Build JDK found at $BUILD_JDK did not contain bin/jlink; ignoring])
+ BUILD_JDK_FOUND=no
+ elif test ! -x "$BUILD_JDK/bin/jmod"; then
+ AC_MSG_NOTICE([Potential Build JDK found at $BUILD_JDK did not contain bin/jmod; ignoring])
+ BUILD_JDK_FOUND=no
+ elif test ! -x "$BUILD_JDK/bin/javac"; then
+ # Do we have a bin/javac?
+ AC_MSG_NOTICE([Potential Build JDK found at $BUILD_JDK did not contain bin/javac; ignoring])
+ AC_MSG_NOTICE([(This might be a JRE instead of an JDK)])
+ BUILD_JDK_FOUND=no
+ else
+ # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version?
+ BUILD_JDK_VERSION=`"$BUILD_JDK/bin/java" -version 2>&1 | $HEAD -n 1`
+
+ # Extra M4 quote needed to protect [] in grep expression.
+ [FOUND_CORRECT_VERSION=`echo $BUILD_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"'`]
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ AC_MSG_NOTICE([Potential Build JDK found at $BUILD_JDK is incorrect JDK version ($BUILD_JDK_VERSION); ignoring])
+ AC_MSG_NOTICE([(Your Build JDK must be version 9)])
+ BUILD_JDK_FOUND=no
+ else
+ # We're done!
+ BUILD_JDK_FOUND=yes
+ BASIC_FIXUP_PATH(BUILD_JDK)
+ AC_MSG_CHECKING([for Build JDK])
+ AC_MSG_RESULT([$BUILD_JDK])
+ AC_MSG_CHECKING([Build JDK version])
+ BUILD_JDK_VERSION=`"$BUILD_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ AC_MSG_RESULT([$BUILD_JDK_VERSION])
+ fi # end check jdk version
+ fi # end check java
+ fi # end check build jdk found
+ fi
+])
+
+# By default the BUILD_JDK is the JDK_OUTPUTDIR. If the target architecture
+# is different than the host system doing the build (e.g. cross-compilation),
+# a special BUILD_JDK is built as part of the build process. An external
+# prebuilt BUILD_JDK can also be supplied.
+AC_DEFUN([BOOTJDK_SETUP_BUILD_JDK],
+[
+ AC_ARG_WITH(build-jdk, [AS_HELP_STRING([--with-build-jdk],
+ [path to JDK of same version as is being built@<:@the newly built JDK@:>@])])
+
+ CREATE_BUILDJDK=false
+ EXTERNAL_BUILDJDK=false
+ BUILD_JDK_FOUND="no"
+ if test "x$with_build_jdk" != "x"; then
+ BOOTJDK_CHECK_BUILD_JDK([
+ if test "x$with_build_jdk" != x; then
+ BUILD_JDK=$with_build_jdk
+ BUILD_JDK_FOUND=maybe
+ AC_MSG_NOTICE([Found potential Build JDK using configure arguments])
+ fi])
+ EXTERNAL_BUILDJDK=true
+ else
+ if test "x$COMPILE_TYPE" = "xcross"; then
+ BUILD_JDK="\$(BUILDJDK_OUTPUTDIR)/jdk"
+ BUILD_JDK_FOUND=yes
+ CREATE_BUILDJDK=true
+ AC_MSG_CHECKING([for Build JDK])
+ AC_MSG_RESULT([yes, will build it for the host platform])
+ else
+ BUILD_JDK="\$(JDK_OUTPUTDIR)"
+ BUILD_JDK_FOUND=yes
+ AC_MSG_CHECKING([for Build JDK])
+ AC_MSG_RESULT([yes, will use output dir])
+ fi
+ fi
+
+ JMOD="$BUILD_JDK/bin/jmod"
+ JLINK="$BUILD_JDK/bin/jlink"
+ AC_SUBST(JMOD)
+ AC_SUBST(JLINK)
+
+ if test "x$BUILD_JDK_FOUND" != "xyes"; then
+ AC_MSG_CHECKING([for Build JDK])
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Could not find a suitable Build JDK])
+ fi
+
+ AC_SUBST(CREATE_BUILDJDK)
+ AC_SUBST(BUILD_JDK)
+ AC_SUBST(EXTERNAL_BUILDJDK)
+])
diff --git a/common/autoconf/bootcycle-spec.gmk.in b/common/autoconf/bootcycle-spec.gmk.in
new file mode 100644
index 0000000..adde830
--- /dev/null
+++ b/common/autoconf/bootcycle-spec.gmk.in
@@ -0,0 +1,67 @@
+#
+# Copyright (c) 2011, 2016, 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
+
+BOOT_JDK_MODULAR := true
+
+# First include the real base spec.gmk file
+include @SPEC@
+
+# Check that the user did not try to specify a different java to use for compiling.
+# On windows we need to account for fixpath being first word.
+ifeq ($(firstword $(JAVA)),$(FIXPATH))
+ JAVA_EXEC_POS=2
+else
+ JAVA_EXEC_POS=1
+endif
+ifneq ($(word $(JAVA_EXEC_POS),$(SJAVAC_SERVER_JAVA)),$(word $(JAVA_EXEC_POS),$(JAVA)))
+ $(error Bootcycle builds are not possible if --with-sjavac-server-java is specified)
+endif
+
+
+# Override specific values to do a boot cycle build
+
+# Use a different Boot JDK
+BOOT_JDK := $(JDK_IMAGE_DIR)
+
+# The bootcycle build has a different output directory
+OLD_BUILD_OUTPUT:=@BUILD_OUTPUT@
+BUILD_OUTPUT:=$(OLD_BUILD_OUTPUT)/bootcycle-build
+SJAVAC_SERVER_DIR:=$(patsubst $(OLD_BUILD_OUTPUT)%, $(BUILD_OUTPUT)%, $(SJAVAC_SERVER_DIR))
+
+JAVA_CMD:=$(BOOT_JDK)/bin/java
+JAVAC_CMD:=$(BOOT_JDK)/bin/javac
+JAVAH_CMD:=$(BOOT_JDK)/bin/javah
+JAR_CMD:=$(BOOT_JDK)/bin/jar
+JARSIGNER_CMD:=$(BOOT_JDK)/bin/jarsigner
+SJAVAC_SERVER_JAVA_CMD:=$(JAVA_CMD)
+# When building a 32bit target, make sure the sjavac server flags are compatible
+# with a 32bit JVM.
+ifeq ($(OPENJDK_TARGET_CPU_BITS), 32)
+ SJAVAC_SERVER_JAVA_FLAGS := @BOOTCYCLE_JVM_ARGS_BIG@
+endif
+# The bootcycle JVM arguments may differ from the original boot jdk.
+JAVA_FLAGS_BIG := @BOOTCYCLE_JVM_ARGS_BIG@
diff --git a/common/autoconf/build-aux/autoconf-config.guess b/common/autoconf/build-aux/autoconf-config.guess
new file mode 100644
index 0000000..15ee438
--- /dev/null
+++ b/common/autoconf/build-aux/autoconf-config.guess
@@ -0,0 +1,1555 @@
+#! /bin/sh
+#
+# Copyright (c) 2012, 2013, 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.
+#
+
+# Attempt to guess a canonical system name.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011, 2012 Free Software Foundation, Inc.
+
+timestamp='2012-02-10'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner. Please send patches (context
+# diff format) to <config-patches@gnu.org> and include a ChangeLog
+# entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ELF__
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit ;;
+ arm:riscos:*:*|arm:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ s390x:SunOS:*:*)
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux${UNAME_RELEASE}
+ exit ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ eval $set_cc_for_build
+ SUN_ARCH="i386"
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH="x86_64"
+ fi
+ fi
+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[4567])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep -q __LP64__
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:FreeBSD:*:*)
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case ${UNAME_PROCESSOR} in
+ amd64)
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+ *:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ i*:MSYS*:*)
+ echo ${UNAME_MACHINE}-pc-msys
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit ;;
+ *:Interix*:*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ authenticamd | genuineintel | EM64T)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit ;;
+ 8664:Windows_NT:*)
+ echo x86_64-pc-mks
+ exit ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ aarch64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ arm*:Linux:*:*)
+ eval $set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ else
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+ fi
+ fi
+ exit ;;
+ avr32*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ cris:Linux:*:*)
+ echo ${UNAME_MACHINE}-axis-linux-gnu
+ exit ;;
+ crisv32:Linux:*:*)
+ echo ${UNAME_MACHINE}-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ hexagon:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ i*86:Linux:*:*)
+ LIBC=gnu
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ mips:Linux:*:* | mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef ${UNAME_MACHINE}
+ #undef ${UNAME_MACHINE}el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=${UNAME_MACHINE}el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=${UNAME_MACHINE}
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ or32:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ padre:Linux:*:*)
+ echo sparc-unknown-linux-gnu
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ tile*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-gnu
+ exit ;;
+ x86_64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ xtensa*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configury will decide that
+ # this is a cross-build.
+ echo i586-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ echo i586-pc-haiku
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
+ i386)
+ eval $set_cc_for_build
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ UNAME_PROCESSOR="x86_64"
+ fi
+ fi ;;
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NEO-?:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
+ i*86:AROS:*:*)
+ echo ${UNAME_MACHINE}-pc-aros
+ exit ;;
+ x86_64:VMkernel:*:*)
+ echo ${UNAME_MACHINE}-unknown-esx
+ exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+ printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+ printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+ case `getsysinfo -f cpu_type` in
+ c1*)
+ echo c1-convex-bsd
+ exit ;;
+ c2*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ c34*)
+ echo c34-convex-bsd
+ exit ;;
+ c38*)
+ echo c38-convex-bsd
+ exit ;;
+ c4*)
+ echo c4-convex-bsd
+ exit ;;
+ esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/common/autoconf/build-aux/autoconf-config.sub b/common/autoconf/build-aux/autoconf-config.sub
new file mode 100644
index 0000000..1aab2b3
--- /dev/null
+++ b/common/autoconf/build-aux/autoconf-config.sub
@@ -0,0 +1,1684 @@
+#! /bin/sh
+
+#
+# Copyright (c) 2012, 2013, 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.
+#
+
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# Free Software Foundation, Inc.
+
+timestamp='2008-01-16'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray)
+ os=
+ basic_machine=$1
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | bfin \
+ | c4x | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | fido | fr30 | frv \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | mcore | mep \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64vr | mips64vrel \
+ | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | mt \
+ | msp430 \
+ | nios | nios2 \
+ | ns16k | ns32k \
+ | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | score \
+ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+ | spu | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* | avr32-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | elxsi-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | m32c-* | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | nios-* | nios2-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | xstormy16-* | xtensa*-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+ # Recognize the basic CPU types without company name, with glob match.
+ xtensa*)
+ basic_machine=$basic_machine-unknown
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=-linux
+ ;;
+ blackfin-*)
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16)
+ basic_machine=cr16-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+# I'm not sure what "Sysv32" means. Should this be sysv3.2?
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=-linux
+ ;;
+ m68knommu-*)
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
+ ;;
+ news-3600 | risc-news)
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+ -nextstep* )
+ ;;
+ -ns2*)
+ os=-nextstep2
+ ;;
+ *)
+ os=-nextstep3
+ ;;
+ esac
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ openrisc | openrisc-*)
+ basic_machine=or32-unknown
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=-linux
+ ;;
+ parisc-*)
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc) basic_machine=powerpc-unknown
+ ;;
+ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rdos)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ s390 | s390-*)
+ basic_machine=s390-ibm
+ ;;
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sde)
+ basic_machine=mipsisa32-sde
+ os=-elf
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+ ;;
+ tic55x | c55x*)
+ basic_machine=tic55x-unknown
+ os=-coff
+ ;;
+ tic6x | c6x*)
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
+ tile*)
+ basic_machine=tile-unknown
+ os=-linux-gnu
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -openbsd* | -solidbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -os400*)
+ os=-os400
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -tpf*)
+ os=-tpf
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ score-*)
+ os=-elf
+ ;;
+ spu-*)
+ os=-elf
+ ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ # This also exists in the configure program, but was not the
+ # default.
+ # os=-sunos4
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mep-*)
+ os=-elf
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ or32-*)
+ os=-coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-haiku)
+ os=-haiku
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-knuth)
+ os=-mmixware
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -os400*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -tpf*)
+ vendor=ibm
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/common/autoconf/build-aux/config.guess b/common/autoconf/build-aux/config.guess
new file mode 100644
index 0000000..148a61a
--- /dev/null
+++ b/common/autoconf/build-aux/config.guess
@@ -0,0 +1,96 @@
+#!/bin/sh
+#
+# 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.
+#
+
+# 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
+ 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
+ echo $OUT | grep 86-pc-mingw > /dev/null 2> /dev/null
+fi
+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
+
+# Test and fix architecture string on AIX
+# On AIX 'config.guess' returns 'powerpc' as architecture but 'powerpc' is
+# implicitely handled as 32-bit architecture in 'platform.m4' so we check
+# for the kernel mode rewrite it to 'powerpc64' if we'Re running in 64-bit mode.
+# The check could also be done with `/usr/sbin/prtconf | grep "Kernel Type" | grep "64-bit"`
+echo $OUT | grep powerpc-ibm-aix > /dev/null 2> /dev/null
+if test $? = 0; then
+ if [ -x /bin/getconf ] ; then
+ KERNEL_BITMODE=`getconf KERNEL_BITMODE`
+ if [ "$KERNEL_BITMODE" = "32" ]; then
+ KERNEL_BITMODE=""
+ fi
+ fi
+ OUT=powerpc$KERNEL_BITMODE`echo $OUT | sed -e 's/[^-]*//'`
+fi
+
+# Test and fix little endian PowerPC64.
+# TODO: should be handled by autoconf-config.guess.
+if [ "x$OUT" = x ]; then
+ if [ `uname -m` = ppc64le ]; then
+ if [ `uname -s` = Linux ]; then
+ OUT=powerpc64le-unknown-linux-gnu
+ fi
+ fi
+fi
+
+# Test and fix cpu on Macosx when C preprocessor is not on the path
+echo $OUT | grep i386-apple-darwin > /dev/null 2> /dev/null
+if test $? = 0; then
+ REAL_CPU=`uname -m`
+ OUT=$REAL_CPU`echo $OUT | sed -e 's/[^-]*//'`
+fi
+
+echo $OUT
diff --git a/common/autoconf/build-aux/config.sub b/common/autoconf/build-aux/config.sub
new file mode 100644
index 0000000..cc958da
--- /dev/null
+++ b/common/autoconf/build-aux/config.sub
@@ -0,0 +1,64 @@
+#!/bin/sh
+#
+# Copyright (c) 2014, 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.
+#
+
+# This is a wrapper for the config.guess from autoconf. The latter
+# does not know about all of our 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`
+
+# First, filter out everything that doesn't begin with "aarch64-"
+if ! echo $* | grep '^aarch64-' >/dev/null ; then
+ . $DIR/autoconf-config.sub "$@"
+ # autoconf-config.sub exits, so we never reach here, but just in
+ # case we do:
+ exit
+fi
+
+while test $# -gt 0 ; do
+ case $1 in
+ -- ) # Stop option processing
+ shift; break ;;
+ aarch64-* )
+ config=`echo $1 | sed 's/^aarch64-/arm-/'`
+ sub_args="$sub_args $config"
+ shift; ;;
+ - ) # Use stdin as input.
+ sub_args="$sub_args $1"
+ shift; break ;;
+ * )
+ sub_args="$sub_args $1"
+ shift; ;;
+ esac
+done
+
+result=`. $DIR/autoconf-config.sub $sub_args "$@"`
+exitcode=$?
+
+result=`echo $result | sed "s/^arm-/aarch64-/"`
+
+echo $result
+exit $exitcode
+
diff --git a/common/autoconf/build-aux/install.sh b/common/autoconf/build-aux/install.sh
new file mode 100644
index 0000000..5934326
--- /dev/null
+++ b/common/autoconf/build-aux/install.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+#
+# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# This file is empty on purpose. It's a placeholder which is required by
+# autoconf, but it serves no purpose for us.
diff --git a/common/autoconf/build-aux/pkg.m4 b/common/autoconf/build-aux/pkg.m4
new file mode 100644
index 0000000..5f4b22b
--- /dev/null
+++ b/common/autoconf/build-aux/pkg.m4
@@ -0,0 +1,181 @@
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+
+#
+# Copyright (c) 2012, 2013, 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.
+#
+
+#
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=m4_default([$1], [0.9.0])
+ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PKG_CONFIG=""
+ fi
+
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists. Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+ m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+ [pkg_failed=yes])
+ else
+ pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT
+])],
+ [AC_MSG_RESULT([no])
+ $4])
+elif test $pkg_failed = untried; then
+ ifelse([$4], , [AC_MSG_FAILURE(dnl
+[The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
+ [$4])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
diff --git a/common/autoconf/build-performance.m4 b/common/autoconf/build-performance.m4
new file mode 100644
index 0000000..13578cf
--- /dev/null
+++ b/common/autoconf/build-performance.m4
@@ -0,0 +1,474 @@
+#
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+AC_DEFUN([BPERF_CHECK_CORES],
+[
+ AC_MSG_CHECKING([for number of cores])
+ NUM_CORES=1
+ FOUND_CORES=no
+
+ if test -f /proc/cpuinfo; then
+ # Looks like a Linux (or cygwin) system
+ NUM_CORES=`cat /proc/cpuinfo | grep -c processor`
+ FOUND_CORES=yes
+ 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
+ elif test -x /usr/sbin/sysctl; then
+ # Looks like a MacOSX system
+ NUM_CORES=`/usr/sbin/sysctl -n hw.ncpu`
+ FOUND_CORES=yes
+ elif test "x$OPENJDK_BUILD_OS" = xaix ; then
+ NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print [$]4 }'`
+ FOUND_CORES=yes
+ elif test -n "$NUMBER_OF_PROCESSORS"; then
+ # On windows, look in the env
+ NUM_CORES=$NUMBER_OF_PROCESSORS
+ FOUND_CORES=yes
+ fi
+
+ if test "x$FOUND_CORES" = xyes; then
+ AC_MSG_RESULT([$NUM_CORES])
+ else
+ AC_MSG_RESULT([could not detect number of cores, defaulting to 1])
+ AC_MSG_WARN([This will disable all parallelism from build!])
+ fi
+])
+
+AC_DEFUN([BPERF_CHECK_MEMORY_SIZE],
+[
+ AC_MSG_CHECKING([for memory size])
+ # Default to 1024 MB
+ MEMORY_SIZE=1024
+ FOUND_MEM=no
+
+ 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
+ elif test -x /usr/sbin/prtconf; then
+ # Looks like a Solaris or AIX system
+ MEMORY_SIZE=`/usr/sbin/prtconf 2> /dev/null | grep "^Memory [[Ss]]ize" | awk '{ print [$]3 }'`
+ FOUND_MEM=yes
+ elif test -x /usr/sbin/sysctl; then
+ # Looks like a MacOSX system
+ MEMORY_SIZE=`/usr/sbin/sysctl -n hw.memsize`
+ MEMORY_SIZE=`expr $MEMORY_SIZE / 1024 / 1024`
+ FOUND_MEM=yes
+ elif test "x$OPENJDK_BUILD_OS" = xwindows; then
+ # Windows, but without cygwin
+ MEMORY_SIZE=`wmic computersystem get totalphysicalmemory -value | grep = | cut -d "=" -f 2-`
+ MEMORY_SIZE=`expr $MEMORY_SIZE / 1024 / 1024`
+ FOUND_MEM=yes
+ fi
+
+ if test "x$FOUND_MEM" = xyes; then
+ AC_MSG_RESULT([$MEMORY_SIZE MB])
+ else
+ AC_MSG_RESULT([could not detect memory size, defaulting to $MEMORY_SIZE MB])
+ AC_MSG_WARN([This might seriously impact build performance!])
+ fi
+])
+
+AC_DEFUN_ONCE([BPERF_SETUP_BUILD_CORES],
+[
+ # How many cores do we have on this build system?
+ AC_ARG_WITH(num-cores, [AS_HELP_STRING([--with-num-cores],
+ [number of cores in the build system, e.g. --with-num-cores=8 @<:@probed@:>@])])
+ if test "x$with_num_cores" = x; then
+ # The number of cores were not specified, try to probe them.
+ BPERF_CHECK_CORES
+ else
+ NUM_CORES=$with_num_cores
+ fi
+ AC_SUBST(NUM_CORES)
+])
+
+AC_DEFUN_ONCE([BPERF_SETUP_BUILD_MEMORY],
+[
+ # How much memory do we have on this build system?
+ AC_ARG_WITH(memory-size, [AS_HELP_STRING([--with-memory-size],
+ [memory (in MB) available in the build system, e.g. --with-memory-size=1024 @<:@probed@:>@])])
+ if test "x$with_memory_size" = x; then
+ # The memory size was not specified, try to probe it.
+ BPERF_CHECK_MEMORY_SIZE
+ else
+ MEMORY_SIZE=$with_memory_size
+ fi
+ AC_SUBST(MEMORY_SIZE)
+])
+
+AC_DEFUN_ONCE([BPERF_SETUP_BUILD_JOBS],
+[
+ # Provide a decent default number of parallel jobs for make depending on
+ # number of cores, amount of memory and machine architecture.
+ AC_ARG_WITH(jobs, [AS_HELP_STRING([--with-jobs],
+ [number of parallel jobs to let make run @<:@calculated based on cores and memory@:>@])])
+ if test "x$with_jobs" = x; then
+ # Number of jobs was not specified, calculate.
+ AC_MSG_CHECKING([for appropriate number of jobs to run in parallel])
+ # Approximate memory in GB.
+ memory_gb=`expr $MEMORY_SIZE / 1024`
+ # Pick the lowest of memory in gb and number of cores.
+ if test "$memory_gb" -lt "$NUM_CORES"; then
+ JOBS="$memory_gb"
+ else
+ JOBS="$NUM_CORES"
+ fi
+ if test "$JOBS" -eq "0"; then
+ JOBS=1
+ fi
+ AC_MSG_RESULT([$JOBS])
+ else
+ JOBS=$with_jobs
+ fi
+ AC_SUBST(JOBS)
+])
+
+AC_DEFUN_ONCE([BPERF_SETUP_TEST_JOBS],
+[
+ # The number of test jobs will be chosen automatically if TEST_JOBS is 0
+ AC_ARG_WITH(test-jobs, [AS_HELP_STRING([--with-test-jobs],
+ [number of parallel tests jobs to run @<:@based on build jobs@:>@])])
+ if test "x$with_test_jobs" = x; then
+ TEST_JOBS=0
+ else
+ TEST_JOBS=$with_test_jobs
+ fi
+ AC_SUBST(TEST_JOBS)
+])
+
+AC_DEFUN([BPERF_SETUP_CCACHE],
+[
+ AC_ARG_ENABLE([ccache],
+ [AS_HELP_STRING([--enable-ccache],
+ [enable using ccache to speed up recompilations @<:@disabled@:>@])])
+
+ CCACHE_STATUS=
+ AC_MSG_CHECKING([is ccache enabled])
+ if test "x$enable_ccache" = xyes; then
+ if test "x$TOOLCHAIN_TYPE" = "xgcc" -o "x$TOOLCHAIN_TYPE" = "xclang"; then
+ AC_MSG_RESULT([yes])
+ OLD_PATH="$PATH"
+ if test "x$TOOLCHAIN_PATH" != x; then
+ PATH=$TOOLCHAIN_PATH:$PATH
+ fi
+ BASIC_REQUIRE_PROGS(CCACHE, ccache)
+ PATH="$OLD_PATH"
+ CCACHE_VERSION=[`$CCACHE --version | head -n1 | $SED 's/[A-Za-z ]*//'`]
+ CCACHE_STATUS="Active ($CCACHE_VERSION)"
+ else
+ AC_MSG_RESULT([no])
+ AC_MSG_WARN([ccache is not supported with toolchain type $TOOLCHAIN_TYPE])
+ fi
+ elif test "x$enable_ccache" = xno; then
+ AC_MSG_RESULT([no, explicitly disabled])
+ CCACHE_STATUS="Disabled"
+ elif test "x$enable_ccache" = x; then
+ AC_MSG_RESULT([no])
+ else
+ AC_MSG_RESULT([unknown])
+ AC_MSG_ERROR([--enable-ccache does not accept any parameters])
+ fi
+ AC_SUBST(CCACHE)
+
+ AC_ARG_WITH([ccache-dir],
+ [AS_HELP_STRING([--with-ccache-dir],
+ [where to store ccache files @<:@~/.ccache@:>@])])
+
+ if test "x$with_ccache_dir" != x; then
+ # When using a non home ccache directory, assume the use is to share ccache files
+ # with other users. Thus change the umask.
+ SET_CCACHE_DIR="CCACHE_DIR=$with_ccache_dir CCACHE_UMASK=002"
+ if test "x$CCACHE" = x; then
+ AC_MSG_WARN([--with-ccache-dir has no meaning when ccache is not enabled])
+ fi
+ fi
+
+ if test "x$CCACHE" != x; then
+ BPERF_SETUP_CCACHE_USAGE
+ fi
+])
+
+AC_DEFUN([BPERF_SETUP_CCACHE_USAGE],
+[
+ if test "x$CCACHE" != x; then
+ if test "x$OPENJDK_BUILD_OS" = "xmacosx"; then
+ HAS_BAD_CCACHE=[`$ECHO $CCACHE_VERSION | \
+ $GREP -e '^1\.' -e '^2\.' -e '^3\.0\.' -e '^3\.1\.'`]
+ if test "x$HAS_BAD_CCACHE" != "x"; then
+ AC_MSG_ERROR([On macosx, ccache 3.2 or later is required, found $CCACHE_VERSION])
+ fi
+ fi
+ if test "x$USE_PRECOMPILED_HEADER" = "xtrue"; then
+ HAS_BAD_CCACHE=[`$ECHO $CCACHE_VERSION | \
+ $GREP -e '^1.*' -e '^2.*' -e '^3\.0.*' -e '^3\.1\.[0123]$'`]
+ if test "x$HAS_BAD_CCACHE" != "x"; then
+ AC_MSG_ERROR([Precompiled headers requires ccache 3.1.4 or later, found $CCACHE_VERSION])
+ fi
+ AC_MSG_CHECKING([if C-compiler supports ccache precompiled headers])
+ CCACHE_PRECOMP_FLAG="-fpch-preprocess"
+ PUSHED_FLAGS="$CXXFLAGS"
+ CXXFLAGS="$CCACHE_PRECOMP_FLAG $CXXFLAGS"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [CC_KNOWS_CCACHE_TRICK=yes], [CC_KNOWS_CCACHE_TRICK=no])
+ CXXFLAGS="$PUSHED_FLAGS"
+ if test "x$CC_KNOWS_CCACHE_TRICK" = xyes; then
+ AC_MSG_RESULT([yes])
+ CFLAGS_CCACHE="$CCACHE_PRECOMP_FLAG"
+ AC_SUBST(CFLAGS_CCACHE)
+ CCACHE_SLOPPINESS=pch_defines,time_macros
+ else
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Cannot use ccache with precompiled headers without compiler support for $CCACHE_PRECOMP_FLAG])
+ fi
+ fi
+
+ CCACHE="CCACHE_COMPRESS=1 $SET_CCACHE_DIR \
+ CCACHE_SLOPPINESS=$CCACHE_SLOPPINESS CCACHE_BASEDIR=$TOPDIR $CCACHE"
+
+ if test "x$SET_CCACHE_DIR" != x; then
+ mkdir -p $CCACHE_DIR > /dev/null 2>&1
+ chmod a+rwxs $CCACHE_DIR > /dev/null 2>&1
+ fi
+ fi
+])
+
+################################################################################
+#
+# Runs icecc-create-env once and prints the error if it fails
+#
+# $1: arguments to icecc-create-env
+# $2: log file
+#
+AC_DEFUN([BPERF_RUN_ICECC_CREATE_ENV],
+[
+ ( cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
+ && ${ICECC_CREATE_ENV} $1 > $2 2>&1 )
+ if test "$?" != "0"; then
+ AC_MSG_NOTICE([icecc-create-env output:])
+ cat $2
+ AC_MSG_ERROR([Failed to create icecc compiler environment])
+ fi
+])
+
+################################################################################
+#
+# Optionally enable distributed compilation of native code using icecc/icecream
+#
+AC_DEFUN([BPERF_SETUP_ICECC],
+[
+ AC_ARG_ENABLE([icecc], [AS_HELP_STRING([--enable-icecc],
+ [enable distribted compilation of native code using icecc/icecream @<:@disabled@:>@])])
+
+ if test "x${enable_icecc}" = "xyes"; then
+ BASIC_REQUIRE_PROGS(ICECC_CMD, icecc)
+ old_path="$PATH"
+
+ # Look for icecc-create-env in some known places
+ PATH="$PATH:/usr/lib/icecc:/usr/lib64/icecc"
+ BASIC_REQUIRE_PROGS(ICECC_CREATE_ENV, icecc-create-env)
+ # Use icecc-create-env to create a minimal compilation environment that can
+ # be sent to the other hosts in the icecream cluster.
+ icecc_create_env_log="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/icecc_create_env.log"
+ ${MKDIR} -p ${CONFIGURESUPPORT_OUTPUTDIR}/icecc
+ # Older versions of icecc does not have the --gcc parameter
+ if ${ICECC_CREATE_ENV} | $GREP -q -e --gcc; then
+ icecc_gcc_arg="--gcc"
+ fi
+ if test "x${TOOLCHAIN_TYPE}" = "xgcc"; then
+ BPERF_RUN_ICECC_CREATE_ENV([${icecc_gcc_arg} ${CC} ${CXX}], \
+ ${icecc_create_env_log})
+ elif test "x$TOOLCHAIN_TYPE" = "xclang"; then
+ # For clang, the icecc compilerwrapper is needed. It usually resides next
+ # to icecc-create-env.
+ BASIC_REQUIRE_PROGS(ICECC_WRAPPER, compilerwrapper)
+ BPERF_RUN_ICECC_CREATE_ENV([--clang ${CC} ${ICECC_WRAPPER}], ${icecc_create_env_log})
+ else
+ AC_MSG_ERROR([Can only create icecc compiler packages for toolchain types gcc and clang])
+ fi
+ PATH="$old_path"
+ # The bundle with the compiler gets a name based on checksums. Parse log file
+ # to find it.
+ ICECC_ENV_BUNDLE_BASENAME="`${SED} -n '/^creating/s/creating //p' ${icecc_create_env_log}`"
+ ICECC_ENV_BUNDLE="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/${ICECC_ENV_BUNDLE_BASENAME}"
+ if test ! -f ${ICECC_ENV_BUNDLE}; then
+ AC_MSG_ERROR([icecc-create-env did not produce an environment ${ICECC_ENV_BUNDLE}])
+ fi
+ AC_MSG_CHECKING([for icecc build environment for target compiler])
+ AC_MSG_RESULT([${ICECC_ENV_BUNDLE}])
+ ICECC="ICECC_VERSION=${ICECC_ENV_BUNDLE} ICECC_CC=${CC} ICECC_CXX=${CXX} ${ICECC_CMD}"
+
+ if test "x${COMPILE_TYPE}" = "xcross"; then
+ # If cross compiling, create a separate env package for the build compiler
+ # Assume "gcc" or "cc" is gcc and "clang" is clang. Otherwise bail.
+ icecc_create_env_log_build="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/icecc_create_env_build.log"
+ if test "x${BUILD_CC##*/}" = "xgcc" || test "x${BUILD_CC##*/}" = "xcc"; then
+ BPERF_RUN_ICECC_CREATE_ENV([${icecc_gcc_arg} ${BUILD_CC} ${BUILD_CXX}], \
+ ${icecc_create_env_log_build})
+ elif test "x${BUILD_CC##*/}" = "xclang"; then
+ BPERF_RUN_ICECC_CREATE_ENV([--clang ${BUILD_CC} ${ICECC_WRAPPER}], ${icecc_create_env_log_build})
+ else
+ AC_MSG_ERROR([Cannot create icecc compiler package for ${BUILD_CC}])
+ fi
+ ICECC_ENV_BUNDLE_BASENAME="`${SED} -n '/^creating/s/creating //p' ${icecc_create_env_log_build}`"
+ ICECC_ENV_BUNDLE="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/${ICECC_ENV_BUNDLE_BASENAME}"
+ if test ! -f ${ICECC_ENV_BUNDLE}; then
+ AC_MSG_ERROR([icecc-create-env did not produce an environment ${ICECC_ENV_BUNDLE}])
+ fi
+ AC_MSG_CHECKING([for icecc build environment for build compiler])
+ AC_MSG_RESULT([${ICECC_ENV_BUNDLE}])
+ BUILD_ICECC="ICECC_VERSION=${ICECC_ENV_BUNDLE} ICECC_CC=${BUILD_CC} \
+ ICECC_CXX=${BUILD_CXX} ${ICECC_CMD}"
+ else
+ BUILD_ICECC="${ICECC}"
+ fi
+ AC_SUBST(ICECC)
+ AC_SUBST(BUILD_ICECC)
+ fi
+])
+
+AC_DEFUN_ONCE([BPERF_SETUP_PRECOMPILED_HEADERS],
+[
+
+ ###############################################################################
+ #
+ # Can the C/C++ compiler use precompiled headers?
+ #
+ AC_ARG_ENABLE([precompiled-headers], [AS_HELP_STRING([--disable-precompiled-headers],
+ [disable using precompiled headers when compiling C++ @<:@enabled@:>@])],
+ [ENABLE_PRECOMPH=${enable_precompiled_headers}], [ENABLE_PRECOMPH=yes])
+
+ USE_PRECOMPILED_HEADER=true
+ AC_MSG_CHECKING([If precompiled header is enabled])
+ if test "x$ENABLE_PRECOMPH" = xno; then
+ AC_MSG_RESULT([no, forced])
+ USE_PRECOMPILED_HEADER=false
+ elif test "x$ICECC" != "x"; then
+ AC_MSG_RESULT([no, does not work effectively with icecc])
+ USE_PRECOMPILED_HEADER=false
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ AC_MSG_RESULT([no, does not work with Solaris Studio])
+ USE_PRECOMPILED_HEADER=false
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ AC_MSG_RESULT([no, does not work with xlc])
+ USE_PRECOMPILED_HEADER=false
+ else
+ AC_MSG_RESULT([yes])
+ fi
+
+ if test "x$ENABLE_PRECOMPH" = xyes; then
+ # Check that the compiler actually supports precomp headers.
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ AC_MSG_CHECKING([that precompiled headers work])
+ echo "int alfa();" > conftest.h
+ $CXX -x c++-header conftest.h -o conftest.hpp.gch 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD
+ if test ! -f conftest.hpp.gch; then
+ USE_PRECOMPILED_HEADER=false
+ AC_MSG_RESULT([no])
+ else
+ AC_MSG_RESULT([yes])
+ fi
+ $RM conftest.h conftest.hpp.gch
+ fi
+ fi
+
+ AC_SUBST(USE_PRECOMPILED_HEADER)
+])
+
+
+AC_DEFUN_ONCE([BPERF_SETUP_SMART_JAVAC],
+[
+ AC_ARG_WITH(sjavac-server-java, [AS_HELP_STRING([--with-sjavac-server-java],
+ [use this java binary for running the sjavac background server @<:@Boot JDK java@:>@])])
+
+ 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: $SJAVAC_SERVER_JAVA])
+ fi
+ else
+ SJAVAC_SERVER_JAVA="$JAVA"
+ fi
+ AC_SUBST(SJAVAC_SERVER_JAVA)
+
+ if test "$MEMORY_SIZE" -gt "3000"; then
+ ADD_JVM_ARG_IF_OK([-d64],SJAVAC_SERVER_JAVA_FLAGS,[$SJAVAC_SERVER_JAVA])
+ if test "$JVM_ARG_OK" = true; then
+ JVM_64BIT=true
+ JVM_ARG_OK=false
+ fi
+ fi
+
+ MX_VALUE=`expr $MEMORY_SIZE / 2`
+ if test "$JVM_64BIT" = true; then
+ # Set ms lower than mx since more than one instance of the server might
+ # get launched at the same time before they figure out which instance won.
+ MS_VALUE=512
+ if test "$MX_VALUE" -gt "2048"; then
+ MX_VALUE=2048
+ fi
+ else
+ MS_VALUE=256
+ if test "$MX_VALUE" -gt "1500"; then
+ MX_VALUE=1500
+ fi
+ fi
+ if test "$MX_VALUE" -lt "512"; then
+ MX_VALUE=512
+ fi
+ ADD_JVM_ARG_IF_OK([-Xms${MS_VALUE}M -Xmx${MX_VALUE}M],SJAVAC_SERVER_JAVA_FLAGS,[$SJAVAC_SERVER_JAVA])
+ AC_SUBST(SJAVAC_SERVER_JAVA_FLAGS)
+
+ AC_ARG_ENABLE([sjavac], [AS_HELP_STRING([--enable-sjavac],
+ [use sjavac to do fast incremental compiles @<:@disabled@:>@])],
+ [ENABLE_SJAVAC="${enableval}"], [ENABLE_SJAVAC="no"])
+ if test "x$JVM_ARG_OK" = "xfalse"; then
+ AC_MSG_WARN([Could not set -Xms${MS_VALUE}M -Xmx${MX_VALUE}M, disabling sjavac])
+ ENABLE_SJAVAC="no"
+ fi
+ AC_MSG_CHECKING([whether to use sjavac])
+ AC_MSG_RESULT([$ENABLE_SJAVAC])
+ AC_SUBST(ENABLE_SJAVAC)
+
+ AC_ARG_ENABLE([javac-server], [AS_HELP_STRING([--disable-javac-server],
+ [disable javac server @<:@enabled@:>@])],
+ [ENABLE_JAVAC_SERVER="${enableval}"], [ENABLE_JAVAC_SERVER="yes"])
+ if test "x$JVM_ARG_OK" = "xfalse"; then
+ AC_MSG_WARN([Could not set -Xms${MS_VALUE}M -Xmx${MX_VALUE}M, disabling javac server])
+ ENABLE_JAVAC_SERVER="no"
+ fi
+ AC_MSG_CHECKING([whether to use javac server])
+ AC_MSG_RESULT([$ENABLE_JAVAC_SERVER])
+ AC_SUBST(ENABLE_JAVAC_SERVER)
+
+ if test "x$ENABLE_JAVAC_SERVER" = "xyes" || test "x$ENABLE_SJAVAC" = "xyes"; then
+ # When using a server javac, the small client instances do not need much
+ # resources.
+ JAVA_FLAGS_JAVAC="$JAVA_FLAGS_SMALL"
+ fi
+])
diff --git a/common/autoconf/buildjdk-spec.gmk.in b/common/autoconf/buildjdk-spec.gmk.in
new file mode 100644
index 0000000..dbb4fcb
--- /dev/null
+++ b/common/autoconf/buildjdk-spec.gmk.in
@@ -0,0 +1,95 @@
+#
+# Copyright (c) 2015, 2016, 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 spec file is used to compile a BUILD_JDK while cross compiling. The
+# BUILD_JDK runs on the build/host platform and is of the same version as
+# the main build.
+
+# First include the real base spec.gmk file
+include @SPEC@
+
+CC := @BUILD_CC@
+CXX := @BUILD_CXX@
+LD := @BUILD_LD@
+LDCXX := @BUILD_LDCXX@
+AS := @BUILD_AS@
+NM := @BUILD_NM@
+AR := @BUILD_AR@
+OBJCOPY := @BUILD_OBJCOPY@
+STRIP := @BUILD_STRIP@
+SYSROOT_CFLAGS := @BUILD_SYSROOT_CFLAGS@
+SYSROOT_LDFLAGS := @BUILD_SYSROOT_LDFLAGS@
+
+# These directories should not be moved to BUILDJDK_OUTPUTDIR
+HOTSPOT_OUTPUTDIR := $(patsubst $(BUILD_OUTPUT)%,$(BUILDJDK_OUTPUTDIR)%,$(HOTSPOT_OUTPUTDIR))
+SUPPORT_OUTPUTDIR := $(patsubst $(BUILD_OUTPUT)%,$(BUILDJDK_OUTPUTDIR)%,$(SUPPORT_OUTPUTDIR))
+JDK_OUTPUTDIR := $(patsubst $(BUILD_OUTPUT)%,$(BUILDJDK_OUTPUTDIR)%,$(JDK_OUTPUTDIR))
+IMAGES_OUTPUTDIR := $(patsubst $(BUILD_OUTPUT)%,$(BUILDJDK_OUTPUTDIR)%,$(IMAGES_OUTPUTDIR))
+
+OPENJDK_BUILD_CPU_LEGACY := @OPENJDK_BUILD_CPU_LEGACY@
+OPENJDK_BUILD_CPU_LEGACY_LIB := @OPENJDK_BUILD_CPU_LEGACY_LIB@
+OPENJDK_TARGET_CPU := @OPENJDK_BUILD_CPU@
+OPENJDK_TARGET_CPU_ARCH := @OPENJDK_BUILD_CPU_ARCH@
+OPENJDK_TARGET_CPU_BITS := @OPENJDK_BUILD_CPU_BITS@
+OPENJDK_TARGET_CPU_ENDIAN := @OPENJDK_BUILD_CPU_ENDIAN@
+OPENJDK_TARGET_CPU_LEGACY := @OPENJDK_BUILD_CPU_LEGACY@
+
+HOTSPOT_TARGET_OS := @HOTSPOT_BUILD_OS@
+HOTSPOT_TARGET_OS_TYPE := @HOTSPOT_BUILD_OS_TYPE@
+HOTSPOT_TARGET_CPU := @HOTSPOT_BUILD_CPU@
+HOTSPOT_TARGET_CPU_ARCH := @HOTSPOT_BUILD_CPU_ARCH@
+HOTSPOT_TARGET_CPU_DEFINE := @HOTSPOT_BUILD_CPU_DEFINE@
+
+CFLAGS_JDKLIB := @OPENJDK_BUILD_CFLAGS_JDKLIB@
+CXXFLAGS_JDKLIB := @OPENJDK_BUILD_CXXFLAGS_JDKLIB@
+LDFLAGS_JDKLIB := @OPENJDK_BUILD_LDFLAGS_JDKLIB@
+CFLAGS_JDKEXE := @OPENJDK_BUILD_CFLAGS_JDKEXE@
+CXXFLAGS_JDKEXE := @OPENJDK_BUILD_CXXFLAGS_JDKEXE@
+LDFLAGS_JDKEXE := @OPENJDK_BUILD_LDFLAGS_JDKEXE@
+
+JVM_CFLAGS := @OPENJDK_BUILD_JVM_CFLAGS@
+JVM_LDFLAGS := @OPENJDK_BUILD_JVM_LDFLAGS@
+JVM_ASFLAGS := @OPENJDK_BUILD_JVM_ASFLAGS@
+JVM_LIBS := @OPENJDK_BUILD_JVM_LIBS@
+
+# The compiler for the build platform is likely not warning compatible with the official
+# compiler.
+WARNINGS_AS_ERRORS := false
+DISABLE_WARNING_PREFIX := @BUILD_CC_DISABLE_WARNING_PREFIX@
+
+# Save speed and disk space by not enabling debug symbols for the buildjdk
+ENABLE_DEBUG_SYMBOLS := false
+
+# Control wether Hotspot builds gtest tests
+BUILD_GTEST := false
+
+JVM_VARIANTS := server
+JVM_VARIANT_MAIN := server
+
+# Some users still set EXTRA_*FLAGS on the make command line. Must
+# make sure to override that when building buildjdk.
+override EXTRA_CFLAGS :=
+override EXTRA_CXXFLAGS :=
+override EXTRA_LDFLAGS :=
diff --git a/common/autoconf/compare.sh.in b/common/autoconf/compare.sh.in
new file mode 100644
index 0000000..76d921f
--- /dev/null
+++ b/common/autoconf/compare.sh.in
@@ -0,0 +1,103 @@
+#!/bin/bash
+#
+# Copyright (c) 2012, 2016, 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.
+#
+
+# This script is processed by configure before it's usable. It is run from
+# the root of the build directory.
+
+
+##########################################################################################
+# Substitutions from autoconf
+
+export LEGACY_BUILD_DIR=@OPENJDK_TARGET_OS@-@OPENJDK_TARGET_CPU_LEGACY@
+
+export OPENJDK_TARGET_OS="@OPENJDK_TARGET_OS@"
+export OPENJDK_TARGET_CPU="@OPENJDK_TARGET_CPU@"
+export DEBUG_LEVEL="@DEBUG_LEVEL@"
+
+export AWK="@AWK@"
+export BASH="@BASH@"
+export CAT="@CAT@"
+export CMP="@CMP@"
+export CP="@CP@"
+export CUT="@CUT@"
+export DIFF="@DIFF@"
+export DUMPBIN="@FIXPATH@ @DUMPBIN@"
+export EXPR="@EXPR@"
+export FILE="@FILE@"
+export FIND="@FIND@"
+export GREP="@GREP@"
+export GUNZIP="@GUNZIP@"
+export LDD="@LDD@"
+export LN="@LN@"
+export MKDIR="@MKDIR@"
+export MV="@MV@"
+export NAWK="@NAWK@"
+export NM="@GNM@"
+export OBJDUMP="@OBJDUMP@"
+export OTOOL="@OTOOL@"
+export PRINTF="@PRINTF@"
+export READELF="@READELF@"
+export RM="@RM@"
+export SED="@SED@"
+export SORT="@SORT@"
+export STAT="@STAT@"
+export STRIP="@STRIP@ @STRIPFLAGS@"
+export TAR="@TAR@"
+export TEE="@TEE@"
+export UNIQ="@UNIQ@"
+export UNPACK200="@FIXPATH@ @BOOT_JDK@/bin/unpack200"
+export UNARCHIVE="@UNZIP@ -q -o"
+
+export SRC_ROOT="@TOPDIR@"
+export OUTPUT_ROOT="@OUTPUT_ROOT@"
+
+if [ "@COMPILE_TYPE@" != "cross" ]; then
+ export JAVAP="@FIXPATH@ $OUTPUT_ROOT/jdk/bin/javap @JAVA_TOOL_FLAGS_SMALL@"
+ export JIMAGE="@FIXPATH@ $OUTPUT_ROOT/jdk/bin/jimage"
+elif [ "@CREATE_BUILDJDK@" = "true" ]; then
+ export JAVAP="@FIXPATH@ $OUTPUT_ROOT/buildjdk/jdk/bin/javap @JAVA_TOOL_FLAGS_SMALL@"
+ export JIMAGE="@FIXPATH@ $OUTPUT_ROOT/buildjdk/jdk/bin/jimage"
+else
+ export JAVAP="@FIXPATH@ @BUILD_JDK@/bin/javap @JAVA_TOOL_FLAGS_SMALL@"
+ export JIMAGE="@FIXPATH@ @BUILD_JDK@/bin/jimage"
+fi
+
+if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+ export PATH="@VS_PATH@"
+fi
+
+# Now locate the main script and run it.
+REAL_COMPARE_SCRIPT="$SRC_ROOT/common/bin/compare.sh"
+if [ ! -e "$REAL_COMPARE_SCRIPT" ]; then
+ echo "Error: Cannot locate compare script, it should have been in $REAL_COMPARE_SCRIPT"
+ exit 1
+fi
+
+# Rotate logs
+$RM $OUTPUT_ROOT/compare.log.old 2> /dev/null
+$MV $OUTPUT_ROOT/compare.log $OUTPUT_ROOT/compare.log.old 2> /dev/null
+
+export SCRIPT_DIR="$( cd "$( dirname "$0" )" > /dev/null && pwd )"
+
+$BASH $SRC_ROOT/common/bin/logger.sh $OUTPUT_ROOT/compare.log $BASH "$REAL_COMPARE_SCRIPT" "$@"
diff --git a/common/autoconf/configure b/common/autoconf/configure
new file mode 100644
index 0000000..547cb33
--- /dev/null
+++ b/common/autoconf/configure
@@ -0,0 +1,303 @@
+#!/bin/bash
+#
+# Copyright (c) 2012, 2016, 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.
+#
+
+if test "x$1" != xCHECKME; then
+ echo "WARNING: Calling the wrapper script directly is deprecated and unsupported."
+ echo "Not all features of configure will be available."
+ echo "Use the 'configure' script in the top-level directory instead."
+ TOPDIR=$(cd $(dirname $0)/../.. > /dev/null && pwd)
+else
+ # Now the next argument is the absolute top-level directory path.
+ # The TOPDIR variable is passed on to configure.ac.
+ TOPDIR="$2"
+ # Remove these two arguments to get to the user supplied arguments
+ shift
+ shift
+fi
+
+if test "x$BASH" = x; then
+ echo "Error: This script must be run using bash." 1>&2
+ exit 1
+fi
+# Force autoconf to use bash. This also means we must disable autoconf re-exec.
+export CONFIG_SHELL=$BASH
+export _as_can_reexec=no
+
+conf_script_dir="$TOPDIR/common/autoconf"
+
+if [ "$CUSTOM_CONFIG_DIR" = "" ]; then
+ conf_custom_script_dir="$TOPDIR/closed/autoconf"
+else
+ conf_custom_script_dir="$CUSTOM_CONFIG_DIR"
+fi
+
+###
+### Test that the generated configure is up-to-date
+###
+
+run_autogen_or_fail() {
+ if test "x`which autoconf 2> /dev/null | grep -v '^no autoconf in'`" = x; then
+ echo "Cannot locate autoconf, unable to correct situation."
+ echo "Please install autoconf and run 'bash autogen.sh' to update the generated files."
+ echo "Error: Cannot continue" 1>&2
+ exit 1
+ else
+ echo "Running autogen.sh to correct the situation"
+ bash $conf_script_dir/autogen.sh
+ fi
+}
+
+check_autoconf_timestamps() {
+ for file in $conf_script_dir/configure.ac $conf_script_dir/*.m4 ; do
+ if test $file -nt $conf_script_dir/generated-configure.sh; then
+ echo "Warning: The configure source files is newer than the generated files."
+ run_autogen_or_fail
+ fi
+ done
+
+ 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 $conf_script_dir/configure.ac $conf_script_dir/*.m4 $conf_custom_script_dir/*.m4; do
+ if test $file -nt $conf_custom_script_dir/generated-configure.sh; then
+ echo "Warning: The configure source files is newer than the custom generated files."
+ run_autogen_or_fail
+ fi
+ done
+ fi
+}
+
+check_hg_updates() {
+ if test "x`which hg 2> /dev/null | grep -v '^no hg in'`" != x; then
+ conf_updated_autoconf_files=`cd $conf_script_dir && hg status -mard 2> /dev/null | grep autoconf`
+ if test "x$conf_updated_autoconf_files" != x; then
+ echo "Configure source code has been updated, checking time stamps"
+ check_autoconf_timestamps
+ fi
+
+ if test -e $conf_custom_script_dir; then
+ # If custom source configure is available, make sure it is up-to-date as well.
+ conf_custom_updated_autoconf_files=`cd $conf_custom_script_dir && hg status -mard 2> /dev/null | grep autoconf`
+ if test "x$conf_custom_updated_autoconf_files" != x; then
+ echo "Configure custom source code has been updated, checking time stamps"
+ check_autoconf_timestamps
+ fi
+ fi
+ fi
+}
+
+# Check for local changes
+check_hg_updates
+
+if test -e $conf_custom_script_dir/generated-configure.sh; then
+ # 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 2`
+ conf_custom_configure_timestamp=`grep DATE_WHEN_GENERATED= $conf_custom_script_dir/generated-configure.sh | cut -d"=" -f 2`
+ if test $conf_open_configure_timestamp -gt $conf_custom_configure_timestamp; then
+ echo "Warning: The generated configure file contains changes not present in the custom generated file."
+ run_autogen_or_fail
+ 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
+###
+
+# Returns a shell-escaped version of the argument given.
+function shell_quote() {
+ if [[ -n "$1" ]]; then
+ # Uses only shell-safe characters? No quoting needed.
+ # '=' is a zsh meta-character, but only in word-initial position.
+ if echo "$1" | grep '^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\.:,%/+=_-]\{1,\}$' > /dev/null \
+ && ! echo "$1" | grep '^=' > /dev/null; then
+ quoted="$1"
+ else
+ if echo "$1" | grep "[\'!]" > /dev/null; then
+ # csh does history expansion within single quotes, but not
+ # when backslash-escaped!
+ local quoted_quote="'\\''" quoted_exclam="'\\!'"
+ word="${1//\'/${quoted_quote}}"
+ word="${1//\!/${quoted_exclam}}"
+ fi
+ quoted="'$1'"
+ fi
+ echo "$quoted"
+ fi
+}
+
+conf_processed_arguments=()
+conf_quoted_arguments=()
+conf_openjdk_target=
+
+for conf_option
+do
+
+ # Process (and remove) our own extensions that will not be passed to autoconf
+ case $conf_option in
+ --openjdk-target=*)
+ conf_openjdk_target=`expr "X$conf_option" : '[^=]*=\(.*\)'`
+ ;;
+ --debug-configure)
+ if test "x$conf_debug_configure" != xrecursive; then
+ conf_debug_configure=true
+ export conf_debug_configure
+ fi
+ ;;
+ *)
+ conf_processed_arguments=("${conf_processed_arguments[@]}" "$conf_option")
+ ;;
+ esac
+
+ # Store all variables overridden on the command line
+ case $conf_option in
+ [^-]*=*)
+ # Add name of variable to CONFIGURE_OVERRIDDEN_VARIABLES list inside !...!.
+ conf_env_var=`expr "x$conf_option" : 'x\([^=]*\)='`
+ CONFIGURE_OVERRIDDEN_VARIABLES="$CONFIGURE_OVERRIDDEN_VARIABLES!$conf_env_var!"
+ ;;
+ esac
+
+ # Save the arguments, intelligently quoted for CONFIGURE_COMMAND_LINE.
+ case $conf_option in
+ *=*)
+ conf_option_name=`expr "x$conf_option" : 'x\([^=]*\)='`
+ conf_option_name=$(shell_quote "$conf_option_name")
+ conf_option_value=`expr "x$conf_option" : 'x[^=]*=\(.*\)'`
+ conf_option_value=$(shell_quote "$conf_option_value")
+ conf_quoted_arguments=("${conf_quoted_arguments[@]}" "$conf_option_name=$conf_option_value")
+ ;;
+ *)
+ conf_quoted_arguments=("${conf_quoted_arguments[@]}" "$(shell_quote "$conf_option")")
+ ;;
+ esac
+
+ # Check for certain autoconf options that require extra action
+ case $conf_option in
+ -build | --build | --buil | --bui | --bu |-build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ conf_legacy_crosscompile="$conf_legacy_crosscompile $conf_option" ;;
+ -target | --target | --targe | --targ | --tar | --ta | --t | -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ conf_legacy_crosscompile="$conf_legacy_crosscompile $conf_option" ;;
+ -host | --host | --hos | --ho | -host=* | --host=* | --hos=* | --ho=*)
+ conf_legacy_crosscompile="$conf_legacy_crosscompile $conf_option" ;;
+ -help | --help | --hel | --he | -h)
+ conf_print_help=true ;;
+ esac
+done
+
+# Save the quoted command line
+CONFIGURE_COMMAND_LINE="${conf_quoted_arguments[@]}"
+
+if test "x$conf_legacy_crosscompile" != "x"; then
+ if test "x$conf_openjdk_target" != "x"; then
+ echo "Error: Specifying --openjdk-target together with autoconf"
+ echo "legacy cross-compilation flags is not supported."
+ echo "You specified: --openjdk-target=$conf_openjdk_target and $conf_legacy_crosscompile."
+ echo "The recommended use is just --openjdk-target."
+ exit 1
+ else
+ echo "Warning: You are using legacy autoconf cross-compilation flags."
+ echo "It is recommended that you use --openjdk-target instead."
+ echo ""
+ fi
+fi
+
+if test "x$conf_openjdk_target" != "x"; then
+ conf_build_platform=`sh $conf_script_dir/build-aux/config.guess`
+ conf_processed_arguments=("--build=$conf_build_platform" "--host=$conf_openjdk_target" "--target=$conf_openjdk_target" "${conf_processed_arguments[@]}")
+fi
+
+# Make configure exit with error on invalid options as default.
+# Can be overridden by --disable-option-checking, since we prepend our argument
+# and later options override earlier.
+conf_processed_arguments=("--enable-option-checking=fatal" "${conf_processed_arguments[@]}")
+
+###
+### Call the configure script
+###
+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
+ 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
+
+# Now transfer control to the script generated by autoconf. This is where the
+# main work is done.
+RCDIR=`mktemp -dt jdk-build-configure.tmp.XXXXXX` || exit $?
+trap "rm -rf \"$RCDIR\"" EXIT
+conf_logfile=./configure.log
+(exec 3>&1 ; ((. $conf_script_to_run "${conf_processed_arguments[@]}" 2>&1 1>&3 ) \
+ ; echo $? > "$RCDIR/rc" ) \
+ | tee -a $conf_logfile 1>&2 ; exec 3>&-) | tee -a $conf_logfile
+
+conf_result_code=`cat "$RCDIR/rc"`
+###
+### Post-processing
+###
+
+if test $conf_result_code -eq 0; then
+ if test "x$conf_print_help" = xtrue; then
+ cat <<EOT
+
+Additional (non-autoconf) OpenJDK Options:
+ --openjdk-target=TARGET cross-compile with TARGET as target platform
+ (i.e. the one you will run the resulting binary on).
+ Equivalent to --host=TARGET --target=TARGET
+ --build=<current platform>
+ --debug-configure Run the configure script with additional debug
+ logging enabled.
+
+EOT
+
+ # Print additional help, e.g. a list of toolchains and JVM features.
+ # This must be done by the autoconf script.
+ ( CONFIGURE_PRINT_ADDITIONAL_HELP=true . $conf_script_to_run PRINTF=printf )
+
+ cat <<EOT
+
+Please be aware that, when cross-compiling, the OpenJDK configure script will
+generally use 'target' where autoconf traditionally uses 'host'.
+
+Also note that variables must be passed on the command line. Variables in the
+environment will generally be ignored, unlike traditional autoconf scripts.
+EOT
+ fi
+else
+ echo configure exiting with result code $conf_result_code
+fi
+
+exit $conf_result_code
diff --git a/common/autoconf/configure.ac b/common/autoconf/configure.ac
new file mode 100644
index 0000000..e9aff62
--- /dev/null
+++ b/common/autoconf/configure.ac
@@ -0,0 +1,293 @@
+#
+# Copyright (c) 2011, 2016, 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.
+#
+
+###############################################################################
+#
+# Includes and boilerplate
+#
+###############################################################################
+
+
+AC_PREREQ([2.69])
+AC_INIT(OpenJDK, jdk9, build-dev@openjdk.java.net,,http://openjdk.java.net)
+
+AC_CONFIG_AUX_DIR([$TOPDIR/common/autoconf/build-aux])
+m4_include([build-aux/pkg.m4])
+
+# Include these first...
+m4_include([basics.m4])
+m4_include([basics_windows.m4])
+# ... then the rest
+m4_include([boot-jdk.m4])
+m4_include([build-performance.m4])
+m4_include([flags.m4])
+m4_include([help.m4])
+m4_include([hotspot.m4])
+m4_include([jdk-options.m4])
+m4_include([jdk-version.m4])
+m4_include([libraries.m4])
+m4_include([platform.m4])
+m4_include([source-dirs.m4])
+m4_include([toolchain.m4])
+m4_include([toolchain_windows.m4])
+
+AC_DEFUN_ONCE([CUSTOM_EARLY_HOOK])
+AC_DEFUN_ONCE([CUSTOM_LATE_HOOK])
+AC_DEFUN_ONCE([CUSTOM_CONFIG_OUTPUT_GENERATED_HOOK])
+AC_DEFUN_ONCE([CUSTOM_SUMMARY_AND_WARNINGS_HOOK])
+
+# This line needs to be here, verbatim, after all includes and the dummy hook
+# definitions. It is replaced with custom functionality when building
+# custom sources.
+#CUSTOM_AUTOCONF_INCLUDE
+
+# Do not change or remove the following line, it is needed for consistency checks:
+DATE_WHEN_GENERATED=@DATE_WHEN_GENERATED@
+
+###############################################################################
+#
+# Initialization / Boot-strapping
+#
+# The bootstrapping process needs to solve the "chicken or the egg" problem,
+# thus it jumps back and forth, each time gaining something needed later on.
+#
+###############################################################################
+
+# If we are requested to print additional help, do that and then exit.
+# This must be the very first call.
+HELP_PRINT_ADDITIONAL_HELP_AND_EXIT
+
+# Basic initialization that must happen first of all in the normal process.
+BASIC_INIT
+BASIC_SETUP_FUNDAMENTAL_TOOLS
+
+# 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. Most remaining code require fundamental tools.
+BASIC_SETUP_PATHS
+
+# Check if it's a pure open build or if custom sources are to be used.
+JDKOPT_SETUP_OPEN_OR_CUSTOM
+
+# These are needed to be able to create a configuration name (and thus the output directory)
+JDKOPT_SETUP_JDK_VARIANT
+JDKOPT_SETUP_DEBUG_LEVEL
+HOTSPOT_SETUP_JVM_VARIANTS
+
+# With basic setup done, call the custom early hook.
+CUSTOM_EARLY_HOOK
+
+# Check if we have devkits, extra paths or sysroot set.
+BASIC_SETUP_DEVKIT
+
+# To properly create a configuration name, we need to have the OpenJDK target
+# and options (variants and debug level) parsed.
+BASIC_SETUP_OUTPUT_DIR
+
+# Must be done before we can call HELP_MSG_MISSING_DEPENDENCY.
+HELP_SETUP_DEPENDENCY_HELP
+
+# Setup tools that requires more complex handling, or that is not needed by the configure script.
+BASIC_SETUP_COMPLEX_TOOLS
+BASIC_CHECK_BASH_OPTIONS
+
+# 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
+
+# Misc basic settings
+BASIC_SETUP_DEFAULT_MAKE_TARGET
+
+###############################################################################
+#
+# Determine OpenJDK variants, options and version numbers.
+#
+###############################################################################
+
+# We need build & target for this.
+JDKOPT_SETUP_JDK_OPTIONS
+JDKOPT_SETUP_JLINK_OPTIONS
+JDKVER_SETUP_JDK_VERSION_NUMBERS
+
+###############################################################################
+#
+# Setup BootJDK, used to bootstrap the build.
+#
+###############################################################################
+
+BOOTJDK_SETUP_BOOT_JDK
+BOOTJDK_SETUP_BUILD_JDK
+
+###############################################################################
+#
+# Configure the sources to use. We can add or override individual directories.
+#
+###############################################################################
+
+SRCDIRS_SETUP_TOPDIRS
+SRCDIRS_SETUP_ALTERNATIVE_TOPDIRS
+SRCDIRS_SETUP_OUTPUT_DIRS
+
+SRCDIRS_SETUP_IMPORT_MODULES
+
+###############################################################################
+#
+# Setup the toolchain (compilers etc), i.e. tools used to compile and process
+# native code.
+#
+###############################################################################
+
+# See if we are doing a complete static build or not
+JDKOPT_SETUP_STATIC_BUILD
+
+# First determine the toolchain type (compiler family)
+TOOLCHAIN_DETERMINE_TOOLCHAIN_TYPE
+
+# User supplied flags should be used when configure detects compilers
+FLAGS_SETUP_USER_SUPPLIED_FLAGS
+# The sysroot cflags are needed for configure to be able to run the compilers
+FLAGS_SETUP_SYSROOT_FLAGS
+
+# Then detect the actual binaries needed
+TOOLCHAIN_PRE_DETECTION
+TOOLCHAIN_DETECT_TOOLCHAIN_CORE
+TOOLCHAIN_DETECT_TOOLCHAIN_EXTRA
+TOOLCHAIN_POST_DETECTION
+
+# Finally do some processing after the detection phase
+TOOLCHAIN_SETUP_BUILD_COMPILERS
+TOOLCHAIN_MISC_CHECKS
+
+# Setup the JTReg Regression Test Harness.
+TOOLCHAIN_SETUP_JTREG
+
+FLAGS_SETUP_INIT_FLAGS
+
+# Now we can test some aspects on the target using configure macros.
+PLATFORM_SETUP_OPENJDK_TARGET_BITS
+PLATFORM_SETUP_OPENJDK_TARGET_ENDIANNESS
+
+# Configure flags for the tools
+FLAGS_SETUP_COMPILER_FLAGS_FOR_LIBS
+FLAGS_SETUP_COMPILER_FLAGS_FOR_OPTIMIZATION
+FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK
+FLAGS_SETUP_COMPILER_FLAGS_MISC
+
+# Setup debug symbols (need objcopy from the toolchain for that)
+JDKOPT_SETUP_DEBUG_SYMBOLS
+JDKOPT_SETUP_CODE_COVERAGE
+
+# Need toolchain to setup dtrace
+HOTSPOT_SETUP_DTRACE
+HOTSPOT_ENABLE_DISABLE_AOT
+HOTSPOT_ENABLE_DISABLE_GTEST
+
+###############################################################################
+#
+# Check dependencies for external and internal libraries.
+#
+###############################################################################
+
+# After we have toolchain, we can compile fixpath. It's needed by the lib checks.
+BASIC_COMPILE_FIXPATH
+
+LIB_DETERMINE_DEPENDENCIES
+LIB_SETUP_LIBRARIES
+
+# Hotspot setup depends on lib checks (AOT needs libelf).
+
+HOTSPOT_SETUP_JVM_FEATURES
+
+###############################################################################
+#
+# We need to do some final tweaking, when everything else is done.
+#
+###############################################################################
+
+JDKOPT_DETECT_INTREE_EC
+JDKOPT_ENABLE_DISABLE_FAILURE_HANDLER
+JDKOPT_ENABLE_DISABLE_GENERATE_CLASSLIST
+
+###############################################################################
+#
+# Configure parts of the build that only affect the build performance,
+# not the result.
+#
+###############################################################################
+
+BPERF_SETUP_BUILD_CORES
+BPERF_SETUP_BUILD_MEMORY
+BPERF_SETUP_BUILD_JOBS
+BPERF_SETUP_TEST_JOBS
+
+# Setup arguments for the boot jdk (after cores and memory have been setup)
+BOOTJDK_SETUP_BOOT_JDK_ARGUMENTS
+
+# Setup smart javac (after cores and memory have been setup)
+BPERF_SETUP_SMART_JAVAC
+
+# Setup use of icecc if requested
+BPERF_SETUP_ICECC
+
+# Can the C/C++ compiler use precompiled headers?
+BPERF_SETUP_PRECOMPILED_HEADERS
+
+# Setup use of ccache, if available
+BPERF_SETUP_CCACHE
+
+###############################################################################
+#
+# And now the finish...
+#
+###############################################################################
+
+# Check for some common pitfalls
+BASIC_TEST_USABILITY_ISSUES
+
+# At the end, call the custom hook. (Dummy macro if no custom sources available)
+CUSTOM_LATE_HOOK
+
+# This needs to be done after CUSTOM_LATE_HOOK since we can setup custom features.
+HOTSPOT_VALIDATE_JVM_FEATURES
+
+# We're messing a bit with internal autoconf variables to put the config.status
+# in the output directory instead of the current directory.
+CONFIG_STATUS="$CONFIGURESUPPORT_OUTPUTDIR/config.status"
+
+# Create the actual output files. Now the main work of configure is done.
+AC_OUTPUT
+
+# After AC_OUTPUT, we need to do final work
+CUSTOM_CONFIG_OUTPUT_GENERATED_HOOK
+BASIC_POST_CONFIG_OUTPUT
+
+# Finally output some useful information to the user
+HELP_PRINT_SUMMARY_AND_WARNINGS
+CUSTOM_SUMMARY_AND_WARNINGS_HOOK
+HELP_REPEAT_WARNINGS
diff --git a/common/autoconf/flags.m4 b/common/autoconf/flags.m4
new file mode 100644
index 0000000..a96b74b
--- /dev/null
+++ b/common/autoconf/flags.m4
@@ -0,0 +1,1546 @@
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+################################################################################
+#
+# Setup ABI profile (for arm)
+#
+AC_DEFUN([FLAGS_SETUP_ABI_PROFILE],
+[
+ AC_ARG_WITH(abi-profile, [AS_HELP_STRING([--with-abi-profile],
+ [specify ABI profile for ARM builds (arm-vfp-sflt,arm-vfp-hflt,arm-sflt, armv5-vfp-sflt,armv6-vfp-hflt,arm64,aarch64) @<:@toolchain dependent@:>@ ])])
+
+ if test "x$with_abi_profile" != x; then
+ if test "x$OPENJDK_TARGET_CPU" != xarm && \
+ test "x$OPENJDK_TARGET_CPU" != xaarch64; then
+ AC_MSG_ERROR([--with-abi-profile only available on arm/aarch64])
+ fi
+
+ OPENJDK_TARGET_ABI_PROFILE=$with_abi_profile
+ AC_MSG_CHECKING([for ABI profle])
+ AC_MSG_RESULT([$OPENJDK_TARGET_ABI_PROFILE])
+
+ if test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm-vfp-sflt; then
+ ARM_FLOAT_TYPE=vfp-sflt
+ ARM_ARCH_TYPE_FLAGS='-march=armv7-a -mthumb'
+ elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm-vfp-hflt; then
+ ARM_FLOAT_TYPE=vfp-hflt
+ ARM_ARCH_TYPE_FLAGS='-march=armv7-a -mthumb'
+ elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm-sflt; then
+ ARM_FLOAT_TYPE=sflt
+ ARM_ARCH_TYPE_FLAGS='-march=armv5t -marm'
+ elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarmv5-vfp-sflt; then
+ ARM_FLOAT_TYPE=vfp-sflt
+ ARM_ARCH_TYPE_FLAGS='-march=armv5t -marm'
+ elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarmv6-vfp-hflt; then
+ ARM_FLOAT_TYPE=vfp-hflt
+ ARM_ARCH_TYPE_FLAGS='-march=armv6 -marm'
+ elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm64; then
+ # No special flags, just need to trigger setting JDK_ARCH_ABI_PROP_NAME
+ ARM_FLOAT_TYPE=
+ ARM_ARCH_TYPE_FLAGS=
+ elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xaarch64; then
+ # No special flags, just need to trigger setting JDK_ARCH_ABI_PROP_NAME
+ ARM_FLOAT_TYPE=
+ ARM_ARCH_TYPE_FLAGS=
+ else
+ AC_MSG_ERROR([Invalid ABI profile: "$OPENJDK_TARGET_ABI_PROFILE"])
+ fi
+
+ if test "x$ARM_FLOAT_TYPE" = xvfp-sflt; then
+ ARM_FLOAT_TYPE_FLAGS='-mfloat-abi=softfp -mfpu=vfp -DFLOAT_ARCH=-vfp-sflt'
+ elif test "x$ARM_FLOAT_TYPE" = xvfp-hflt; then
+ ARM_FLOAT_TYPE_FLAGS='-mfloat-abi=hard -mfpu=vfp -DFLOAT_ARCH=-vfp-hflt'
+ elif test "x$ARM_FLOAT_TYPE" = xsflt; then
+ ARM_FLOAT_TYPE_FLAGS='-msoft-float -mfpu=vfp'
+ fi
+ AC_MSG_CHECKING([for $ARM_FLOAT_TYPE floating point flags])
+ AC_MSG_RESULT([$ARM_FLOAT_TYPE_FLAGS])
+
+ AC_MSG_CHECKING([for arch type flags])
+ AC_MSG_RESULT([$ARM_ARCH_TYPE_FLAGS])
+
+ # Now set JDK_ARCH_ABI_PROP_NAME. This is equivalent to the last part of the
+ # autoconf target triplet.
+ [ JDK_ARCH_ABI_PROP_NAME=`$ECHO $OPENJDK_TARGET_AUTOCONF_NAME | $SED -e 's/.*-\([^-]*\)$/\1/'` ]
+ # Sanity check that it is a known ABI.
+ if test "x$JDK_ARCH_ABI_PROP_NAME" != xgnu && \
+ test "x$JDK_ARCH_ABI_PROP_NAME" != xgnueabi && \
+ test "x$JDK_ARCH_ABI_PROP_NAME" != xgnueabihf; then
+ AC_MSG_WARN([Unknown autoconf target triplet ABI: "$JDK_ARCH_ABI_PROP_NAME"])
+ fi
+ AC_MSG_CHECKING([for ABI property name])
+ AC_MSG_RESULT([$JDK_ARCH_ABI_PROP_NAME])
+ AC_SUBST(JDK_ARCH_ABI_PROP_NAME)
+
+ # Pass these on to the open part of configure as if they were set using
+ # --with-extra-c[xx]flags.
+ EXTRA_CFLAGS="$EXTRA_CFLAGS $ARM_ARCH_TYPE_FLAGS $ARM_FLOAT_TYPE_FLAGS"
+ EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS $ARM_ARCH_TYPE_FLAGS $ARM_FLOAT_TYPE_FLAGS"
+ # Get rid of annoying "note: the mangling of 'va_list' has changed in GCC 4.4"
+ # FIXME: This should not really be set using extra_cflags.
+ if test "x$OPENJDK_TARGET_CPU" = xarm; then
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -Wno-psabi"
+ EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -Wno-psabi"
+ fi
+ # Also add JDK_ARCH_ABI_PROP_NAME define, but only to CFLAGS.
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -DJDK_ARCH_ABI_PROP_NAME='\"\$(JDK_ARCH_ABI_PROP_NAME)\"'"
+ # And pass the architecture flags to the linker as well
+ EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ARM_ARCH_TYPE_FLAGS $ARM_FLOAT_TYPE_FLAGS"
+ fi
+
+ # When building with an abi profile, the name of that profile is appended on the
+ # bundle platform, which is used in bundle names.
+ if test "x$OPENJDK_TARGET_ABI_PROFILE" != x; then
+ OPENJDK_TARGET_BUNDLE_PLATFORM="$OPENJDK_TARGET_OS_BUNDLE-$OPENJDK_TARGET_ABI_PROFILE"
+ fi
+])
+
+# Reset the global CFLAGS/LDFLAGS variables and initialize them with the
+# corresponding configure arguments instead
+AC_DEFUN_ONCE([FLAGS_SETUP_USER_SUPPLIED_FLAGS],
+[
+ if test "x$CFLAGS" != "x${ADDED_CFLAGS}"; then
+ 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])
+ fi
+
+ if test "x$LDFLAGS" != "x${ADDED_LDFLAGS}"; then
+ 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],
+ [extra flags to be used when compiling jdk c-files])])
+
+ AC_ARG_WITH(extra-cxxflags, [AS_HELP_STRING([--with-extra-cxxflags],
+ [extra flags to be used when compiling jdk c++-files])])
+
+ AC_ARG_WITH(extra-ldflags, [AS_HELP_STRING([--with-extra-ldflags],
+ [extra flags to be used when linking jdk])])
+
+ EXTRA_CFLAGS="$with_extra_cflags"
+ EXTRA_CXXFLAGS="$with_extra_cxxflags"
+ EXTRA_LDFLAGS="$with_extra_ldflags"
+
+ AC_SUBST(EXTRA_CFLAGS)
+ AC_SUBST(EXTRA_CXXFLAGS)
+ AC_SUBST(EXTRA_LDFLAGS)
+
+ # The global CFLAGS and LDLAGS variables are used by configure tests and
+ # should include the extra parameters
+ CFLAGS="$EXTRA_CFLAGS"
+ CXXFLAGS="$EXTRA_CXXFLAGS"
+ LDFLAGS="$EXTRA_LDFLAGS"
+ CPPFLAGS=""
+])
+
+# Setup the sysroot flags and add them to global CFLAGS and LDFLAGS so
+# that configure can use them while detecting compilers.
+# TOOLCHAIN_TYPE is available here.
+# Param 1 - Optional prefix to all variables. (e.g BUILD_)
+AC_DEFUN([FLAGS_SETUP_SYSROOT_FLAGS],
+[
+ if test "x[$]$1SYSROOT" != "x"; then
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ # Solaris Studio does not have a concept of sysroot. Instead we must
+ # make sure the default include and lib dirs are appended to each
+ # compile and link command line. Must also add -I-xbuiltin to enable
+ # inlining of system functions and intrinsics.
+ $1SYSROOT_CFLAGS="-I-xbuiltin -I[$]$1SYSROOT/usr/include"
+ $1SYSROOT_LDFLAGS="-L[$]$1SYSROOT/usr/lib$OPENJDK_TARGET_CPU_ISADIR \
+ -L[$]$1SYSROOT/lib$OPENJDK_TARGET_CPU_ISADIR"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ $1SYSROOT_CFLAGS="--sysroot=[$]$1SYSROOT"
+ $1SYSROOT_LDFLAGS="--sysroot=[$]$1SYSROOT"
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ $1SYSROOT_CFLAGS="-isysroot [$]$1SYSROOT"
+ $1SYSROOT_LDFLAGS="-isysroot [$]$1SYSROOT"
+ fi
+ # The global CFLAGS and LDFLAGS variables need these for configure to function
+ $1CFLAGS="[$]$1CFLAGS [$]$1SYSROOT_CFLAGS"
+ $1CPPFLAGS="[$]$1CPPFLAGS [$]$1SYSROOT_CFLAGS"
+ $1CXXFLAGS="[$]$1CXXFLAGS [$]$1SYSROOT_CFLAGS"
+ $1LDFLAGS="[$]$1LDFLAGS [$]$1SYSROOT_LDFLAGS"
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # We also need -iframework<path>/System/Library/Frameworks
+ $1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
+ $1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -iframework [$]$1SYSROOT/System/Library/Frameworks"
+ # These always need to be set, or we can't find the frameworks embedded in JavaVM.framework
+ # set this here so it doesn't have to be peppered throughout the forest
+ $1SYSROOT_CFLAGS="[$]$1SYSROOT_CFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
+ $1SYSROOT_LDFLAGS="[$]$1SYSROOT_LDFLAGS -F [$]$1SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
+ fi
+
+ AC_SUBST($1SYSROOT_CFLAGS)
+ AC_SUBST($1SYSROOT_LDFLAGS)
+])
+
+AC_DEFUN_ONCE([FLAGS_SETUP_INIT_FLAGS],
+[
+ # COMPILER_TARGET_BITS_FLAG : option for selecting 32- or 64-bit output
+ # COMPILER_COMMAND_FILE_FLAG : option for passing a command file to the compiler
+ # COMPILER_BINDCMD_FILE_FLAG : option for specifying a file which saves the binder
+ # commands produced by the link step (currently AIX only)
+ if test "x$TOOLCHAIN_TYPE" = xxlc; then
+ COMPILER_TARGET_BITS_FLAG="-q"
+ COMPILER_COMMAND_FILE_FLAG="-f"
+ COMPILER_BINDCMD_FILE_FLAG="-bloadmap:"
+ else
+ COMPILER_TARGET_BITS_FLAG="-m"
+ COMPILER_COMMAND_FILE_FLAG="@"
+ COMPILER_BINDCMD_FILE_FLAG=""
+
+ # The solstudio linker does not support @-files.
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ COMPILER_COMMAND_FILE_FLAG=
+ fi
+
+ # Check if @file is supported by gcc
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ AC_MSG_CHECKING([if @file is supported by gcc])
+ # Extra emtpy "" to prevent ECHO from interpreting '--version' as argument
+ $ECHO "" "--version" > command.file
+ if $CXX @command.file 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD; then
+ AC_MSG_RESULT(yes)
+ COMPILER_COMMAND_FILE_FLAG="@"
+ else
+ AC_MSG_RESULT(no)
+ COMPILER_COMMAND_FILE_FLAG=
+ fi
+ $RM command.file
+ fi
+ fi
+ AC_SUBST(COMPILER_TARGET_BITS_FLAG)
+ AC_SUBST(COMPILER_COMMAND_FILE_FLAG)
+ AC_SUBST(COMPILER_BINDCMD_FILE_FLAG)
+
+ # FIXME: figure out if we should select AR flags depending on OS or toolchain.
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ ARFLAGS="-r"
+ elif test "x$OPENJDK_TARGET_OS" = xaix; then
+ ARFLAGS="-X64"
+ elif test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # lib.exe is used as AR to create static libraries.
+ ARFLAGS="-nologo -NODEFAULTLIB:MSVCRT"
+ else
+ ARFLAGS=""
+ fi
+ AC_SUBST(ARFLAGS)
+
+ ## Setup strip.
+ # FIXME: should this really be per platform, or should it be per toolchain type?
+ # strip is not provided by clang or solstudio; so guessing platform makes most sense.
+ # FIXME: we should really only export STRIPFLAGS from here, not POST_STRIP_CMD.
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ STRIPFLAGS="-g"
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ STRIPFLAGS="-x"
+ elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ STRIPFLAGS="-S"
+ elif test "x$OPENJDK_TARGET_OS" = xaix; then
+ STRIPFLAGS="-X32_64"
+ fi
+
+ AC_SUBST(STRIPFLAGS)
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ CC_OUT_OPTION=-Fo
+ EXE_OUT_OPTION=-out:
+ LD_OUT_OPTION=-out:
+ AR_OUT_OPTION=-out:
+ else
+ # The option used to specify the target .o,.a or .so file.
+ # When compiling, how to specify the to be created object file.
+ CC_OUT_OPTION='-o$(SPACE)'
+ # When linking, how to specify the to be created executable.
+ EXE_OUT_OPTION='-o$(SPACE)'
+ # When linking, how to specify the to be created dynamically linkable library.
+ LD_OUT_OPTION='-o$(SPACE)'
+ # When archiving, how to specify the to be create static archive for object files.
+ AR_OUT_OPTION='rcs$(SPACE)'
+ fi
+ AC_SUBST(CC_OUT_OPTION)
+ AC_SUBST(EXE_OUT_OPTION)
+ AC_SUBST(LD_OUT_OPTION)
+ AC_SUBST(AR_OUT_OPTION)
+
+ # On Windows, we need to set RC flags.
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ RC_FLAGS="-nologo -l0x409"
+ JVM_RCFLAGS="-nologo"
+ if test "x$DEBUG_LEVEL" = xrelease; then
+ RC_FLAGS="$RC_FLAGS -DNDEBUG"
+ JVM_RCFLAGS="$JVM_RCFLAGS -DNDEBUG"
+ fi
+
+ # The version variables used to create RC_FLAGS may be overridden
+ # in a custom configure script, or possibly the command line.
+ # Let those variables be expanded at make time in spec.gmk.
+ # The \$ are escaped to the shell, and the $(...) variables
+ # are evaluated by make.
+ RC_FLAGS="$RC_FLAGS \
+ -D\"JDK_VERSION_STRING=\$(VERSION_STRING)\" \
+ -D\"JDK_COMPANY=\$(COMPANY_NAME)\" \
+ -D\"JDK_COMPONENT=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) binary\" \
+ -D\"JDK_VER=\$(VERSION_NUMBER)\" \
+ -D\"JDK_COPYRIGHT=Copyright \xA9 $COPYRIGHT_YEAR\" \
+ -D\"JDK_NAME=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) \$(VERSION_MAJOR)\" \
+ -D\"JDK_FVER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\""
+
+ JVM_RCFLAGS="$JVM_RCFLAGS \
+ -D\"HS_BUILD_ID=\$(VERSION_STRING)\" \
+ -D\"HS_COMPANY=\$(COMPANY_NAME)\" \
+ -D\"JDK_DOTVER=\$(VERSION_NUMBER_FOUR_POSITIONS)\" \
+ -D\"HS_COPYRIGHT=Copyright $COPYRIGHT_YEAR\" \
+ -D\"HS_NAME=\$(PRODUCT_NAME) \$(VERSION_SHORT)\" \
+ -D\"JDK_VER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\" \
+ -D\"HS_FNAME=jvm.dll\" \
+ -D\"HS_INTERNAL_NAME=jvm\""
+ fi
+ AC_SUBST(RC_FLAGS)
+ AC_SUBST(JVM_RCFLAGS)
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # silence copyright notice and other headers.
+ COMMON_CCXXFLAGS="$COMMON_CCXXFLAGS -nologo"
+ fi
+])
+
+AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_LIBS],
+[
+ ###############################################################################
+ #
+ # How to compile shared libraries.
+ #
+
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ PICFLAG="-fPIC"
+ C_FLAG_REORDER=''
+ CXX_FLAG_REORDER=''
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # Linking is different on MacOSX
+ if test "x$STATIC_BUILD" = xtrue; then
+ SHARED_LIBRARY_FLAGS ='-undefined dynamic_lookup'
+ else
+ SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG"
+ JVM_CFLAGS="$JVM_CFLAGS $PICFLAG"
+ fi
+ SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path$(or [$]1,/.)'
+ SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
+ SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1'
+ SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,[$]1'
+ else
+ # Default works for linux, might work on other platforms as well.
+ SHARED_LIBRARY_FLAGS='-shared'
+ SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$ORIGIN[$]1'
+ SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN"
+ SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1'
+ SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1'
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ C_FLAG_REORDER=''
+ CXX_FLAG_REORDER=''
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # Linking is different on MacOSX
+ PICFLAG=''
+ SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG"
+ SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path$(or [$]1,/.)'
+ SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
+ SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/[$]1'
+ SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,[$]1'
+
+ if test "x$STATIC_BUILD" = xfalse; then
+ JVM_CFLAGS="$JVM_CFLAGS -fPIC"
+ fi
+ else
+ # Default works for linux, might work on other platforms as well.
+ PICFLAG='-fPIC'
+ SHARED_LIBRARY_FLAGS='-shared'
+ SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$ORIGIN[$]1'
+ SET_SHARED_LIBRARY_NAME='-Wl,-soname=[$]1'
+ SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=[$]1'
+
+ # arm specific settings
+ if test "x$OPENJDK_TARGET_CPU" = "xarm"; then
+ # '-Wl,-z,origin' isn't used on arm.
+ SET_SHARED_LIBRARY_ORIGIN='-Wl,-rpath,\$$$$ORIGIN[$]1'
+ else
+ SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN"
+ fi
+
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ if test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
+ PICFLAG="-xcode=pic32"
+ else
+ PICFLAG="-KPIC"
+ fi
+ C_FLAG_REORDER='-xF'
+ CXX_FLAG_REORDER='-xF'
+ SHARED_LIBRARY_FLAGS="-G"
+ SET_EXECUTABLE_ORIGIN='-R\$$ORIGIN[$]1'
+ SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
+ SET_SHARED_LIBRARY_NAME='-h [$]1'
+ SET_SHARED_LIBRARY_MAPFILE='-M[$]1'
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ # '-qpic' defaults to 'qpic=small'. This means that the compiler generates only
+ # one instruction for accessing the TOC. If the TOC grows larger than 64K, the linker
+ # will have to patch this single instruction with a call to some out-of-order code which
+ # does the load from the TOC. This is of course slow. But in that case we also would have
+ # to use '-bbigtoc' for linking anyway so we could also change the PICFLAG to 'qpic=large'.
+ # With 'qpic=large' the compiler will by default generate a two-instruction sequence which
+ # can be patched directly by the linker and does not require a jump to out-of-order code.
+ # Another alternative instead of using 'qpic=large -bbigtoc' may be to use '-qminimaltoc'
+ # instead. This creates a distinct TOC for every compilation unit (and thus requires two
+ # loads for accessing a global variable). But there are rumors that this may be seen as a
+ # 'performance feature' because of improved code locality of the symbols used in a
+ # compilation unit.
+ PICFLAG="-qpic"
+ JVM_CFLAGS="$JVM_CFLAGS $PICFLAG"
+ C_FLAG_REORDER=''
+ CXX_FLAG_REORDER=''
+ SHARED_LIBRARY_FLAGS="-qmkshrobj -bM:SRE -bnoentry"
+ SET_EXECUTABLE_ORIGIN=""
+ SET_SHARED_LIBRARY_ORIGIN=''
+ SET_SHARED_LIBRARY_NAME=''
+ SET_SHARED_LIBRARY_MAPFILE=''
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ PICFLAG=""
+ C_FLAG_REORDER=''
+ CXX_FLAG_REORDER=''
+ SHARED_LIBRARY_FLAGS="-dll"
+ SET_EXECUTABLE_ORIGIN=''
+ SET_SHARED_LIBRARY_ORIGIN=''
+ SET_SHARED_LIBRARY_NAME=''
+ SET_SHARED_LIBRARY_MAPFILE='-def:[$]1'
+ fi
+
+ AC_SUBST(C_FLAG_REORDER)
+ AC_SUBST(CXX_FLAG_REORDER)
+ AC_SUBST(SET_EXECUTABLE_ORIGIN)
+ AC_SUBST(SET_SHARED_LIBRARY_ORIGIN)
+ AC_SUBST(SET_SHARED_LIBRARY_NAME)
+ AC_SUBST(SET_SHARED_LIBRARY_MAPFILE)
+ AC_SUBST(SHARED_LIBRARY_FLAGS)
+
+ # The (cross) compiler is now configured, we can now test capabilities
+ # of the target platform.
+])
+
+# Documentation on common flags used for solstudio in 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.
+#
+# -fns: Use non-standard floating point mode (not IEEE 754)
+# -fsimple: Do some simplification of floating point arithmetic (not IEEE 754)
+# -fsingle: Use single precision floating point with 'float'
+# -xalias_level=basic: 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)
+# -xbuiltin=%all: Use intrinsic or inline versions for math/std functions
+# (If you expect perfect errno behavior, do not use this)
+# -xdepend: Loop data dependency optimizations (need -xO3 or higher)
+# -xrestrict: 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)
+# -xlibmil: Inline some library routines
+# (If you expect perfect errno behavior, do not use this)
+# -xlibmopt: Use optimized math routines (CURRENTLY DISABLED)
+# (If you expect perfect errno behavior, do not use this)
+# Can cause undefined external on Solaris 8 X86 on __sincos, removing for now
+
+ # FIXME: this will never happen since sparc != sparcv9, ie 32 bit, which we don't build anymore.
+ # Bug?
+ #if test "x$OPENJDK_TARGET_CPU" = xsparc; then
+ # CFLAGS_JDK="${CFLAGS_JDK} -xmemalign=4s"
+ # CXXFLAGS_JDK="${CXXFLAGS_JDK} -xmemalign=4s"
+ #fi
+
+AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_OPTIMIZATION],
+[
+
+ ###############################################################################
+ #
+ # Setup the opt flags for different compilers
+ # and different operating systems.
+ #
+
+ # FIXME: this was indirectly the old default, but just inherited.
+ # if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # C_FLAG_DEPS="-MMD -MF"
+ # fi
+
+ # Generate make dependency files
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ C_FLAG_DEPS="-MMD -MF"
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ C_FLAG_DEPS="-MMD -MF"
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ C_FLAG_DEPS="-xMMD -xMF"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ C_FLAG_DEPS="-qmakedep=gcc -MF"
+ fi
+ CXX_FLAG_DEPS="$C_FLAG_DEPS"
+ AC_SUBST(C_FLAG_DEPS)
+ AC_SUBST(CXX_FLAG_DEPS)
+
+ # Debug symbols
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ if test "x$OPENJDK_TARGET_CPU_BITS" = "x64" && test "x$DEBUG_LEVEL" = "xfastdebug"; then
+ # reduce from default "-g2" option to save space
+ CFLAGS_DEBUG_SYMBOLS="-g1"
+ CXXFLAGS_DEBUG_SYMBOLS="-g1"
+ else
+ CFLAGS_DEBUG_SYMBOLS="-g"
+ CXXFLAGS_DEBUG_SYMBOLS="-g"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ CFLAGS_DEBUG_SYMBOLS="-g"
+ CXXFLAGS_DEBUG_SYMBOLS="-g"
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ CFLAGS_DEBUG_SYMBOLS="-g -xs"
+ # -g0 enables debug symbols without disabling inlining.
+ CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ CFLAGS_DEBUG_SYMBOLS="-g"
+ CXXFLAGS_DEBUG_SYMBOLS="-g"
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ CFLAGS_DEBUG_SYMBOLS="-Zi"
+ CXXFLAGS_DEBUG_SYMBOLS="-Zi"
+ fi
+ AC_SUBST(CFLAGS_DEBUG_SYMBOLS)
+ AC_SUBST(CXXFLAGS_DEBUG_SYMBOLS)
+
+ # Debug symbols for JVM_CFLAGS
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -xs"
+ if test "x$DEBUG_LEVEL" = xslowdebug; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g"
+ else
+ # -g0 does not disable inlining, which -g does.
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g0"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -Z7 -d2Zi+"
+ else
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g"
+ fi
+ AC_SUBST(JVM_CFLAGS_SYMBOLS)
+
+ # bounds, memory and behavior checking options
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ case $DEBUG_LEVEL in
+ release )
+ # no adjustment
+ ;;
+ fastdebug )
+ # no adjustment
+ ;;
+ slowdebug )
+ # FIXME: By adding this to C(XX)FLAGS_DEBUG_OPTIONS/JVM_CFLAGS_SYMBOLS it
+ # get's added conditionally on whether we produce debug symbols or not.
+ # This is most likely not really correct.
+
+ # Add runtime stack smashing and undefined behavior checks.
+ # Not all versions of gcc support -fstack-protector
+ STACK_PROTECTOR_CFLAG="-fstack-protector-all"
+ FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$STACK_PROTECTOR_CFLAG -Werror], IF_FALSE: [STACK_PROTECTOR_CFLAG=""])
+
+ CFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
+ CXXFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
+ if test "x$STACK_PROTECTOR_CFLAG" != x; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS $STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
+ fi
+ ;;
+ esac
+ fi
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ if test "x$DEBUG_LEVEL" != xrelease; then
+ if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ JVM_CFLAGS="$JVM_CFLAGS -homeparams"
+ fi
+ fi
+ fi
+
+ # Optimization levels
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ CC_HIGHEST="$CC_HIGHEST -fns -fsimple -fsingle -xbuiltin=%all -xdepend -xrestrict -xlibmil"
+
+ if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
+ # FIXME: seems we always set -xregs=no%frameptr; put it elsewhere more global?
+ C_O_FLAG_HIGHEST_JVM="-xO4"
+ C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xalias_level=basic -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_DEBUG="-xregs=no%frameptr"
+ C_O_FLAG_DEBUG_JVM=""
+ C_O_FLAG_NONE="-xregs=no%frameptr"
+ CXX_O_FLAG_HIGHEST_JVM="-xO4"
+ 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_DEBUG="-xregs=no%frameptr"
+ CXX_O_FLAG_DEBUG_JVM=""
+ CXX_O_FLAG_NONE="-xregs=no%frameptr"
+ if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
+ C_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST -xchip=pentium"
+ CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HIGHEST -xchip=pentium"
+ fi
+ elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
+ C_O_FLAG_HIGHEST_JVM="-xO4"
+ C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xalias_level=basic -xprefetch=auto,explicit -xchip=ultra"
+ C_O_FLAG_HI="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0"
+ C_O_FLAG_NORM="-xO2 -Wc,-Qrm-s -Wc,-Qiselect-T0"
+ C_O_FLAG_DEBUG=""
+ C_O_FLAG_DEBUG_JVM=""
+ C_O_FLAG_NONE=""
+ CXX_O_FLAG_HIGHEST_JVM="-xO4"
+ CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
+ CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
+ CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
+ CXX_O_FLAG_DEBUG=""
+ CXX_O_FLAG_DEBUG_JVM=""
+ CXX_O_FLAG_NONE=""
+ fi
+ else
+ # The remaining toolchains share opt flags between CC and CXX;
+ # setup for C and duplicate afterwards.
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # On MacOSX we optimize for size, something
+ # we should do for all platforms?
+ C_O_FLAG_HIGHEST_JVM="-Os"
+ C_O_FLAG_HIGHEST="-Os"
+ C_O_FLAG_HI="-Os"
+ C_O_FLAG_NORM="-Os"
+ C_O_FLAG_SIZE="-Os"
+ else
+ C_O_FLAG_HIGHEST_JVM="-O3"
+ C_O_FLAG_HIGHEST="-O3"
+ C_O_FLAG_HI="-O3"
+ C_O_FLAG_NORM="-O2"
+ C_O_FLAG_SIZE="-Os"
+ fi
+ C_O_FLAG_DEBUG="-O0"
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ C_O_FLAG_DEBUG_JVM=""
+ elif test "x$OPENJDK_TARGET_OS" = xlinux; then
+ C_O_FLAG_DEBUG_JVM="-O0"
+ fi
+ C_O_FLAG_NONE="-O0"
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # On MacOSX we optimize for size, something
+ # we should do for all platforms?
+ C_O_FLAG_HIGHEST_JVM="-Os"
+ C_O_FLAG_HIGHEST="-Os"
+ C_O_FLAG_HI="-Os"
+ C_O_FLAG_NORM="-Os"
+ C_O_FLAG_SIZE="-Os"
+ else
+ C_O_FLAG_HIGHEST_JVM="-O3"
+ C_O_FLAG_HIGHEST="-O3"
+ C_O_FLAG_HI="-O3"
+ C_O_FLAG_NORM="-O2"
+ C_O_FLAG_SIZE="-Os"
+ fi
+ C_O_FLAG_DEBUG="-O0"
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ C_O_FLAG_DEBUG_JVM=""
+ elif test "x$OPENJDK_TARGET_OS" = xlinux; then
+ C_O_FLAG_DEBUG_JVM="-O0"
+ fi
+ C_O_FLAG_NONE="-O0"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ C_O_FLAG_HIGHEST_JVM="-O3 -qhot=level=1 -qinline -qinlglue"
+ C_O_FLAG_HIGHEST="-O3 -qhot=level=1 -qinline -qinlglue"
+ C_O_FLAG_HI="-O3 -qinline -qinlglue"
+ C_O_FLAG_NORM="-O2"
+ C_O_FLAG_DEBUG="-qnoopt"
+ # FIXME: Value below not verified.
+ C_O_FLAG_DEBUG_JVM=""
+ C_O_FLAG_NONE="-qnoopt"
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ C_O_FLAG_HIGHEST_JVM="-O2 -Oy-"
+ C_O_FLAG_HIGHEST="-O2"
+ C_O_FLAG_HI="-O1"
+ C_O_FLAG_NORM="-O1"
+ C_O_FLAG_DEBUG="-Od"
+ C_O_FLAG_DEBUG_JVM=""
+ C_O_FLAG_NONE="-Od"
+ C_O_FLAG_SIZE="-Os"
+ fi
+ CXX_O_FLAG_HIGHEST_JVM="$C_O_FLAG_HIGHEST_JVM"
+ 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_DEBUG="$C_O_FLAG_DEBUG"
+ CXX_O_FLAG_DEBUG_JVM="$C_O_FLAG_DEBUG_JVM"
+ CXX_O_FLAG_NONE="$C_O_FLAG_NONE"
+ CXX_O_FLAG_SIZE="$C_O_FLAG_SIZE"
+ fi
+
+ # Adjust optimization flags according to debug level.
+ case $DEBUG_LEVEL in
+ release )
+ # no adjustment
+ ;;
+ fastdebug )
+ # Not quite so much optimization
+ C_O_FLAG_HI="$C_O_FLAG_NORM"
+ CXX_O_FLAG_HI="$CXX_O_FLAG_NORM"
+ ;;
+ slowdebug )
+ # Disable optimization
+ C_O_FLAG_HIGHEST_JVM="$C_O_FLAG_DEBUG_JVM"
+ C_O_FLAG_HIGHEST="$C_O_FLAG_DEBUG"
+ C_O_FLAG_HI="$C_O_FLAG_DEBUG"
+ C_O_FLAG_NORM="$C_O_FLAG_DEBUG"
+ C_O_FLAG_SIZE="$C_O_FLAG_DEBUG"
+ CXX_O_FLAG_HIGHEST_JVM="$CXX_O_FLAG_DEBUG_JVM"
+ CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_DEBUG"
+ CXX_O_FLAG_HI="$CXX_O_FLAG_DEBUG"
+ CXX_O_FLAG_NORM="$CXX_O_FLAG_DEBUG"
+ CXX_O_FLAG_SIZE="$CXX_O_FLAG_DEBUG"
+ ;;
+ esac
+
+ AC_SUBST(C_O_FLAG_HIGHEST_JVM)
+ AC_SUBST(C_O_FLAG_HIGHEST)
+ AC_SUBST(C_O_FLAG_HI)
+ AC_SUBST(C_O_FLAG_NORM)
+ AC_SUBST(C_O_FLAG_DEBUG)
+ AC_SUBST(C_O_FLAG_NONE)
+ AC_SUBST(C_O_FLAG_SIZE)
+ AC_SUBST(CXX_O_FLAG_HIGHEST_JVM)
+ AC_SUBST(CXX_O_FLAG_HIGHEST)
+ AC_SUBST(CXX_O_FLAG_HI)
+ AC_SUBST(CXX_O_FLAG_NORM)
+ AC_SUBST(CXX_O_FLAG_DEBUG)
+ AC_SUBST(CXX_O_FLAG_NONE)
+ AC_SUBST(CXX_O_FLAG_SIZE)
+])
+
+
+AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK],
+[
+
+ FLAGS_SETUP_ABI_PROFILE
+ FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER([TARGET])
+ FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER([BUILD], [OPENJDK_BUILD_])
+
+ # Tests are only ever compiled for TARGET
+ # Flags for compiling test libraries
+ CFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
+ CXXFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA"
+
+ # Flags for compiling test executables
+ CFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK"
+ CXXFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK"
+
+ AC_SUBST(CFLAGS_TESTLIB)
+ AC_SUBST(CFLAGS_TESTEXE)
+ AC_SUBST(CXXFLAGS_TESTLIB)
+ AC_SUBST(CXXFLAGS_TESTEXE)
+
+ LDFLAGS_TESTLIB="$LDFLAGS_JDKLIB"
+ LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE $JAVA_BASE_LDFLAGS"
+
+ AC_SUBST(LDFLAGS_TESTLIB)
+ AC_SUBST(LDFLAGS_TESTEXE)
+
+])
+
+################################################################################
+# $1 - Either BUILD or TARGET to pick the correct OS/CPU variables to check
+# conditionals against.
+# $2 - Optional prefix for each variable defined.
+AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER],
+[
+ # Special extras...
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ if test "x$OPENJDK_$1_CPU_ARCH" = "xsparc"; then
+ $2CFLAGS_JDKLIB_EXTRA="${$2CFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
+ $2CXXFLAGS_JDKLIB_EXTRA="${$2CXXFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
+ fi
+ $2CFLAGS_JDKLIB_EXTRA="${$2CFLAGS_JDKLIB_EXTRA} -errtags=yes -errfmt"
+ $2CXXFLAGS_JDKLIB_EXTRA="${$2CXXFLAGS_JDKLIB_EXTRA} -errtags=yes -errfmt"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
+ $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ $2CXXSTD_CXXFLAG="-std=gnu++98"
+ FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [[$]$2CXXSTD_CXXFLAG -Werror],
+ IF_FALSE: [$2CXXSTD_CXXFLAG=""])
+ $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} ${$2CXXSTD_CXXFLAG}"
+ $2JVM_CFLAGS="${$2JVM_CFLAGS} ${$2CXXSTD_CXXFLAG}"
+ AC_SUBST($2CXXSTD_CXXFLAG)
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -D__solaris__"
+ $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} -D__solaris__"
+ fi
+
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} ${$2EXTRA_CFLAGS}"
+ $2CXXFLAGS_JDK="${$2CXXFLAGS_JDK} ${$2EXTRA_CXXFLAGS}"
+ $2LDFLAGS_JDK="${$2LDFLAGS_JDK} ${$2EXTRA_LDFLAGS}"
+
+ ###############################################################################
+ #
+ # Now setup the CFLAGS and LDFLAGS for the JDK build.
+ # Later we will also have CFLAGS and LDFLAGS for the hotspot subrepo build.
+ #
+
+ # Setup compiler/platform specific flags into
+ # $2CFLAGS_JDK - C Compiler flags
+ # $2CXXFLAGS_JDK - C++ Compiler flags
+ # $2COMMON_CCXXFLAGS_JDK - common to C and C++
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_GNU_SOURCE"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_REENTRANT"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -fcheck-new"
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ # Force compatibility with i586 on 32 bit intel platforms.
+ $2COMMON_CCXXFLAGS="${$2COMMON_CCXXFLAGS} -march=i586"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -march=i586"
+ fi
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \
+ -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
+ case $OPENJDK_$1_CPU_ARCH in
+ arm )
+ # on arm we don't prevent gcc to omit frame pointer but do prevent strict aliasing
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing"
+ $2COMMON_CCXXFLAGS_JDK="${$2COMMON_CCXXFLAGS_JDK} -fsigned-char"
+ ;;
+ ppc )
+ # on ppc we don't prevent gcc to omit frame pointer but do prevent strict aliasing
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ s390 )
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer -mbackchain -march=z10"
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ * )
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer"
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ esac
+ TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: 6, PREFIX: $2, IF_AT_LEAST: FLAGS_SETUP_GCC6_COMPILER_FLAGS($2))
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_GNU_SOURCE"
+
+ # Restrict the debug information created by Clang to avoid
+ # too big object files and speed the build up a little bit
+ # (see http://llvm.org/bugs/show_bug.cgi?id=7554)
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -flimit-debug-info"
+ if test "x$OPENJDK_$1_OS" = xlinux; then
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ # Force compatibility with i586 on 32 bit intel platforms.
+ $2COMMON_CCXXFLAGS="${$2COMMON_CCXXFLAGS} -march=i586"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -march=i586"
+ fi
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wno-sometimes-uninitialized"
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \
+ -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
+ case $OPENJDK_$1_CPU_ARCH in
+ ppc )
+ # on ppc we don't prevent gcc to omit frame pointer but do prevent strict aliasing
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ * )
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer"
+ $2CFLAGS_JDK="${$2CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ esac
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DSPARC_WORKS"
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
+ if test "x$OPENJDK_$1_CPU_ARCH" = xx86; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_$1_CPU_LEGACY_LIB"
+ fi
+
+ $2CFLAGS_JDK="[$]$2CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -W0,-noglobal"
+ $2CXXFLAGS_JDK="[$]$2CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_REENTRANT -D__STDC_FORMAT_MACROS"
+ $2CFLAGS_JDK="[$]$2CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
+ $2CXXFLAGS_JDK="[$]$2CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS [$]$2COMMON_CCXXFLAGS_JDK \
+ -MD -Zc:wchar_t- -W3 -wd4800 \
+ -DWIN32_LEAN_AND_MEAN \
+ -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
+ -D_WINSOCK_DEPRECATED_NO_WARNINGS \
+ -DWIN32 -DIAL"
+ if test "x$OPENJDK_$1_CPU" = xx86_64; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64"
+ else
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86"
+ fi
+ # If building with Visual Studio 2010, we can still use _STATIC_CPPLIB to
+ # avoid bundling msvcpNNN.dll. Doesn't work with newer versions of visual
+ # studio.
+ if test "x$TOOLCHAIN_VERSION" = "x2010"; then
+ STATIC_CPPLIB_FLAGS="-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB"
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK $STATIC_CPPLIB_FLAGS"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS $STATIC_CPPLIB_FLAGS"
+ fi
+ fi
+
+ ###############################################################################
+
+ # Adjust flags according to debug level.
+ case $DEBUG_LEVEL in
+ fastdebug | slowdebug )
+ $2CFLAGS_JDK="[$]$2CFLAGS_JDK $CFLAGS_DEBUG_SYMBOLS $CFLAGS_DEBUG_OPTIONS"
+ $2CXXFLAGS_JDK="[$]$2CXXFLAGS_JDK $CXXFLAGS_DEBUG_SYMBOLS $CXXFLAGS_DEBUG_OPTIONS"
+ ;;
+ release )
+ ;;
+ * )
+ AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL])
+ ;;
+ esac
+
+ # Set some common defines. These works for all compilers, but assume
+ # -D is universally accepted.
+
+ # Setup endianness
+ if test "x$OPENJDK_$1_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_$1_OS" = xsolaris; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN="
+ else
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
+ fi
+ else
+ # Same goes for _BIG_ENDIAN. Do we really need to set *ENDIAN on Solaris if they
+ # are defined in the system?
+ if test "x$OPENJDK_$1_OS" = xsolaris; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN="
+ else
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN"
+ fi
+ fi
+
+ # Setup target OS define. Use OS target name but in upper case.
+ OPENJDK_$1_OS_UPPERCASE=`$ECHO $OPENJDK_$1_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D$OPENJDK_$1_OS_UPPERCASE"
+
+ # Setup target CPU
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \
+ $OPENJDK_$1_ADD_LP64 \
+ -DARCH='\"$OPENJDK_$1_CPU_LEGACY\"' -D$OPENJDK_$1_CPU_LEGACY"
+
+ # Setup debug/release defines
+ if test "x$DEBUG_LEVEL" = xrelease; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DNDEBUG"
+ if test "x$OPENJDK_$1_OS" = xsolaris; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DTRIMMED"
+ fi
+ else
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DDEBUG"
+ fi
+
+ # Set some additional per-OS defines.
+ if test "x$OPENJDK_$1_OS" = xlinux; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DLINUX"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -pipe $PICFLAG -fno-rtti -fno-exceptions \
+ -fvisibility=hidden -fno-strict-aliasing -fno-omit-frame-pointer"
+ elif test "x$OPENJDK_$1_OS" = xsolaris; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DSOLARIS"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -template=no%extdef -features=no%split_init \
+ -D_Crun_inline_placement -library=%none $PICFLAG -mt -features=no%except"
+ elif test "x$OPENJDK_$1_OS" = xmacosx; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_ALLBSD_SOURCE"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -fno-rtti -fno-exceptions -fvisibility=hidden \
+ -mno-omit-leaf-frame-pointer -mstack-alignment=16 -pipe -fno-strict-aliasing \
+ -DMAC_OS_X_VERSION_MAX_ALLOWED=1070 -mmacosx-version-min=10.7.0 \
+ -fno-omit-frame-pointer"
+ elif test "x$OPENJDK_$1_OS" = xaix; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DAIX"
+ # We may need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qtune=balanced \
+ -qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
+ -qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
+ elif test "x$OPENJDK_$1_OS" = xbsd; then
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
+ elif test "x$OPENJDK_$1_OS" = xwindows; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_WINDOWS -DWIN32 -D_JNI_IMPLEMENTATION_"
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -nologo -W3 -MD -MP"
+ fi
+
+ # Set some additional per-CPU defines.
+ if test "x$OPENJDK_$1_OS-$OPENJDK_$1_CPU" = xwindows-x86; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -arch:IA32"
+ elif test "x$OPENJDK_$1_CPU" = xsparcv9; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -xarch=sparc"
+ elif test "x$OPENJDK_$1_CPU" = xppc64; then
+ if test "x$OPENJDK_$1_OS" = xlinux; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -minsert-sched-nops=regroup_exact -mno-multiple -mno-string"
+ # fixes `relocation truncated to fit' error for gcc 4.1.
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mminimal-toc"
+ # Use ppc64 instructions, but schedule for power5
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mcpu=powerpc64 -mtune=power5"
+ elif test "x$OPENJDK_$1_OS" = xaix; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -qarch=ppc64"
+ fi
+ elif test "x$OPENJDK_$1_CPU" = xppc64le; then
+ if test "x$OPENJDK_$1_OS" = xlinux; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -minsert-sched-nops=regroup_exact -mno-multiple -mno-string"
+ # Little endian machine uses ELFv2 ABI.
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DABI_ELFv2"
+ # Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI.
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mcpu=power8 -mtune=power8"
+ fi
+ elif test "x$OPENJDK_$1_CPU" = xs390x; then
+ if test "x$OPENJDK_$1_OS" = xlinux; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -mbackchain -march=z10"
+ fi
+ fi
+
+ if test "x$OPENJDK_$1_CPU_ENDIAN" = xlittle; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -DVM_LITTLE_ENDIAN"
+ fi
+
+ if test "x$OPENJDK_$1_CPU_BITS" = x64; then
+ if test "x$OPENJDK_$1_OS" != xsolaris && test "x$OPENJDK_$1_OS" != xaix; then
+ # Solaris does not have _LP64=1 in the old build.
+ # xlc on AIX defines _LP64=1 by default and issues a warning if we redefine it.
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -D_LP64=1"
+ fi
+ fi
+
+ # Set $2JVM_CFLAGS warning handling
+ if test "x$OPENJDK_$1_OS" = xlinux; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wpointer-arith -Wsign-compare -Wunused-function \
+ -Wunused-value -Woverloaded-virtual"
+
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: [4.8], PREFIX: $2,
+ IF_AT_LEAST: [
+ # These flags either do not work or give spurious warnings prior to gcc 4.8.
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wno-format-zero-length -Wtype-limits -Wuninitialized"
+ ]
+ )
+ fi
+ if ! HOTSPOT_CHECK_JVM_VARIANT(zero) && ! HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
+ # Non-zero builds have stricter warnings
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wreturn-type -Wundef -Wformat=2"
+ else
+ if test "x$TOOLCHAIN_TYPE" = xclang; then
+ # Some versions of llvm do not like -Wundef
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wno-undef"
+ fi
+ fi
+ elif test "x$OPENJDK_$1_OS" = xmacosx; then
+ $2JVM_CFLAGS="[$]$2JVM_CFLAGS -Wno-deprecated -Wpointer-arith \
+ -Wsign-compare -Wundef -Wunused-function -Wformat=2"
+ fi
+
+ # Additional macosx handling
+ if test "x$OPENJDK_$1_OS" = xmacosx; then
+ # Setting these parameters makes it an error to link to macosx APIs that are
+ # newer than the given OS version and makes the linked binaries compatible
+ # even if built on a newer version of the OS.
+ # The expected format is X.Y.Z
+ MACOSX_VERSION_MIN=10.7.0
+ AC_SUBST(MACOSX_VERSION_MIN)
+
+ # The macro takes the version with no dots, ex: 1070
+ # Let the flags variables get resolved in make for easier override on make
+ # command line.
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ fi
+
+ # Setup some hard coded includes
+ $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \
+ -I\$(SUPPORT_OUTPUTDIR)/modules_include/java.base \
+ -I${JDK_TOPDIR}/src/java.base/share/native/include \
+ -I${JDK_TOPDIR}/src/java.base/$OPENJDK_$1_OS/native/include \
+ -I${JDK_TOPDIR}/src/java.base/$OPENJDK_$1_OS_TYPE/native/include \
+ -I${JDK_TOPDIR}/src/java.base/share/native/libjava \
+ -I${JDK_TOPDIR}/src/java.base/$OPENJDK_$1_OS_TYPE/native/libjava"
+
+ # The shared libraries are compiled using the picflag.
+ $2CFLAGS_JDKLIB="[$]$2COMMON_CCXXFLAGS_JDK \
+ [$]$2CFLAGS_JDK [$]$2EXTRA_CFLAGS_JDK $PICFLAG [$]$2CFLAGS_JDKLIB_EXTRA"
+ $2CXXFLAGS_JDKLIB="[$]$2COMMON_CCXXFLAGS_JDK \
+ [$]$2CXXFLAGS_JDK [$]$2EXTRA_CXXFLAGS_JDK $PICFLAG [$]$2CXXFLAGS_JDKLIB_EXTRA"
+
+ # Executable flags
+ $2CFLAGS_JDKEXE="[$]$2COMMON_CCXXFLAGS_JDK [$]$2CFLAGS_JDK [$]$2EXTRA_CFLAGS_JDK"
+ $2CXXFLAGS_JDKEXE="[$]$2COMMON_CCXXFLAGS_JDK [$]$2CXXFLAGS_JDK [$]$2EXTRA_CXXFLAGS_JDK"
+
+ AC_SUBST($2CFLAGS_JDKLIB)
+ AC_SUBST($2CFLAGS_JDKEXE)
+ AC_SUBST($2CXXFLAGS_JDKLIB)
+ AC_SUBST($2CXXFLAGS_JDKEXE)
+
+ # Setup LDFLAGS et al.
+ #
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ LDFLAGS_MICROSOFT="-nologo -opt:ref"
+ $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_MICROSOFT -incremental:no"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_MICROSOFT -opt:icf,8 -subsystem:windows -base:0x8000000"
+ if test "x$OPENJDK_$1_CPU_BITS" = "x32"; then
+ LDFLAGS_SAFESH="-safeseh"
+ $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_SAFESH"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_SAFESH"
+ # NOTE: Old build added -machine. Probably not needed.
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -machine:I386"
+ else
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -machine:AMD64"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -mno-omit-leaf-frame-pointer -mstack-alignment=16 -stdlib=libstdc++ -fPIC"
+ if test "x$OPENJDK_$1_OS" = xmacosx; then
+ # FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead.
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ # If this is a --hash-style=gnu system, use --hash-style=both, why?
+ # We have previously set HAS_GNU_HASH if this is the case
+ if test -n "$HAS_GNU_HASH"; then
+ $2LDFLAGS_HASH_STYLE="-Wl,--hash-style=both"
+ $2LDFLAGS_JDK="${$2LDFLAGS_JDK} [$]$2LDFLAGS_HASH_STYLE"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS [$]$2LDFLAGS_HASH_STYLE"
+ fi
+ if test "x$OPENJDK_$1_OS" = xmacosx; then
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
+ fi
+ if test "x$OPENJDK_$1_OS" = xlinux; then
+ # And since we now know that the linker is gnu, then add -z defs, to forbid
+ # undefined symbols in object files.
+ LDFLAGS_NO_UNDEF_SYM="-Wl,-z,defs"
+ $2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_NO_UNDEF_SYM"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_NO_UNDEF_SYM"
+ LDFLAGS_NO_EXEC_STACK="-Wl,-z,noexecstack"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_NO_EXEC_STACK"
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -march=i586"
+ fi
+ case $DEBUG_LEVEL in
+ release )
+ # tell linker to optimize libraries.
+ # Should this be supplied to the OSS linker as well?
+ LDFLAGS_DEBUGLEVEL_release="-Wl,-O1"
+ $2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_DEBUGLEVEL_release"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_DEBUGLEVEL_release"
+ if test "x$HAS_LINKER_RELRO" = "xtrue"; then
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_RELRO_FLAG"
+ fi
+ ;;
+ slowdebug )
+ # Hotspot always let the linker optimize
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-O1"
+ if test "x$HAS_LINKER_NOW" = "xtrue"; then
+ # do relocations at load
+ $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LINKER_NOW_FLAG"
+ $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LINKER_NOW_FLAG"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_NOW_FLAG"
+ fi
+ if test "x$HAS_LINKER_RELRO" = "xtrue"; then
+ # mark relocations read only
+ $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LINKER_RELRO_FLAG"
+ $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_RELRO_FLAG"
+ fi
+ ;;
+ fastdebug )
+ # Hotspot always let the linker optimize
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -Wl,-O1"
+ if test "x$HAS_LINKER_RELRO" = "xtrue"; then
+ # mark relocations read only
+ $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LINKER_RELRO_FLAG"
+ $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LINKER_RELRO_FLAG"
+ fi
+ ;;
+ * )
+ AC_MSG_ERROR([Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL])
+ ;;
+ esac
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ LDFLAGS_SOLSTUDIO="-Wl,-z,defs"
+ $2LDFLAGS_JDK="[$]$2LDFLAGS_JDK $LDFLAGS_SOLSTUDIO -ztext"
+ LDFLAGS_CXX_SOLSTUDIO="-norunpath"
+ $2LDFLAGS_CXX_JDK="[$]$2LDFLAGS_CXX_JDK $LDFLAGS_CXX_SOLSTUDIO -xnolib"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_SOLSTUDIO -library=%none -mt $LDFLAGS_CXX_SOLSTUDIO -z noversion"
+ if test "x$OPENJDK_$1_CPU_ARCH" = "xsparc"; then
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS -xarch=sparc"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ LDFLAGS_XLC="-b64 -brtl -bnolibpath -bexpall -bernotok"
+ $2LDFLAGS_JDK="${$2LDFLAGS_JDK} $LDFLAGS_XLC"
+ $2JVM_LDFLAGS="[$]$2JVM_LDFLAGS $LDFLAGS_XLC"
+ fi
+
+ # Customize LDFLAGS for executables
+
+ $2LDFLAGS_JDKEXE="${$2LDFLAGS_JDK}"
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ if test "x$OPENJDK_$1_CPU_BITS" = "x64"; then
+ LDFLAGS_STACK_SIZE=1048576
+ else
+ LDFLAGS_STACK_SIZE=327680
+ fi
+ $2LDFLAGS_JDKEXE="${$2LDFLAGS_JDKEXE} /STACK:$LDFLAGS_STACK_SIZE"
+ elif test "x$OPENJDK_$1_OS" = xlinux; then
+ $2LDFLAGS_JDKEXE="[$]$2LDFLAGS_JDKEXE -Wl,--allow-shlib-undefined"
+ fi
+
+ $2LDFLAGS_JDKEXE="${$2LDFLAGS_JDKEXE} ${$2EXTRA_LDFLAGS_JDK}"
+
+ # Customize LDFLAGS for libs
+ $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDK}"
+
+ $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${SHARED_LIBRARY_FLAGS}"
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \
+ -libpath:${OUTPUT_ROOT}/support/modules_libs/java.base"
+ $2JDKLIB_LIBS=""
+ else
+ $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base"
+
+ if test "x$1" = "xTARGET"; then
+ # On some platforms (mac) the linker warns about non existing -L dirs.
+ # For any of the variants server, client or minimal, the dir matches the
+ # variant name. The "main" variant should be used for linking. For the
+ # rest, the dir is just server.
+ if HOTSPOT_CHECK_JVM_VARIANT(server) || HOTSPOT_CHECK_JVM_VARIANT(client) \
+ || HOTSPOT_CHECK_JVM_VARIANT(minimal); then
+ $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/$JVM_VARIANT_MAIN"
+ else
+ $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/server"
+ fi
+ elif test "x$1" = "xBUILD"; then
+ # When building a buildjdk, it's always only the server variant
+ $2JAVA_BASE_LDFLAGS="${$2JAVA_BASE_LDFLAGS} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/server"
+ fi
+
+ $2JDKLIB_LIBS="-ljava -ljvm"
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ $2JDKLIB_LIBS="[$]$2JDKLIB_LIBS -lc"
+ fi
+
+ fi
+
+$2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${$2JAVA_BASE_LDFLAGS}"
+
+ # Set $2JVM_LIBS (per os)
+ if test "x$OPENJDK_$1_OS" = xlinux; then
+ $2JVM_LIBS="[$]$2JVM_LIBS -lm -ldl -lpthread"
+ elif test "x$OPENJDK_$1_OS" = xsolaris; then
+ # FIXME: This hard-coded path is not really proper.
+ if test "x$OPENJDK_$1_CPU" = xx86_64; then
+ $2SOLARIS_LIBM_LIBS="/usr/lib/amd64/libm.so.1"
+ elif test "x$OPENJDK_$1_CPU" = xsparcv9; then
+ $2SOLARIS_LIBM_LIBS="/usr/lib/sparcv9/libm.so.1"
+ fi
+ $2JVM_LIBS="[$]$2JVM_LIBS -lsocket -lsched -ldl $SOLARIS_LIBM_LIBS -lCrun \
+ -lthread -ldoor -lc -ldemangle -lnsl -lkstat -lrt"
+ elif test "x$OPENJDK_$1_OS" = xmacosx; then
+ $2JVM_LIBS="[$]$2JVM_LIBS -lm"
+ elif test "x$OPENJDK_$1_OS" = xaix; then
+ $2JVM_LIBS="[$]$2JVM_LIBS -Wl,-lC_r -lm -ldl -lpthread"
+ elif test "x$OPENJDK_$1_OS" = xbsd; then
+ $2JVM_LIBS="[$]$2JVM_LIBS -lm"
+ elif test "x$OPENJDK_$1_OS" = xwindows; then
+ $2JVM_LIBS="[$]$2JVM_LIBS kernel32.lib user32.lib gdi32.lib winspool.lib \
+ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \
+ wsock32.lib winmm.lib version.lib psapi.lib"
+ fi
+
+ # Set $2JVM_ASFLAGS
+ if test "x$OPENJDK_$1_OS" = xlinux; then
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ $2JVM_ASFLAGS="[$]$2JVM_ASFLAGS -march=i586"
+ fi
+ elif test "x$OPENJDK_$1_OS" = xmacosx; then
+ $2JVM_ASFLAGS="[$]$2JVM_ASFLAGS -x assembler-with-cpp -mno-omit-leaf-frame-pointer -mstack-alignment=16"
+ fi
+
+ $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${$2EXTRA_LDFLAGS_JDK}"
+
+ AC_SUBST($2LDFLAGS_JDKLIB)
+ AC_SUBST($2LDFLAGS_JDKEXE)
+ AC_SUBST($2JDKLIB_LIBS)
+ AC_SUBST($2JDKEXE_LIBS)
+ AC_SUBST($2LDFLAGS_CXX_JDK)
+ AC_SUBST($2LDFLAGS_HASH_STYLE)
+
+ AC_SUBST($2JVM_CFLAGS)
+ AC_SUBST($2JVM_LDFLAGS)
+ AC_SUBST($2JVM_ASFLAGS)
+ AC_SUBST($2JVM_LIBS)
+
+])
+
+# FLAGS_C_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE],
+# IF_FALSE: [RUN-IF-FALSE])
+# ------------------------------------------------------------
+# Check that the C compiler supports an argument
+BASIC_DEFUN_NAMED([FLAGS_C_COMPILER_CHECK_ARGUMENTS],
+ [*ARGUMENT IF_TRUE IF_FALSE], [$@],
+[
+ AC_MSG_CHECKING([if the C compiler supports "ARG_ARGUMENT"])
+ supports=yes
+
+ saved_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS ARG_ARGUMENT"
+ AC_LANG_PUSH([C])
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [],
+ [supports=no])
+ AC_LANG_POP([C])
+ CFLAGS="$saved_cflags"
+
+ AC_MSG_RESULT([$supports])
+ if test "x$supports" = "xyes" ; then
+ :
+ ARG_IF_TRUE
+ else
+ :
+ ARG_IF_FALSE
+ fi
+])
+
+# FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE],
+# IF_FALSE: [RUN-IF-FALSE])
+# ------------------------------------------------------------
+# Check that the C++ compiler supports an argument
+BASIC_DEFUN_NAMED([FLAGS_CXX_COMPILER_CHECK_ARGUMENTS],
+ [*ARGUMENT IF_TRUE IF_FALSE], [$@],
+[
+ AC_MSG_CHECKING([if the C++ compiler supports "ARG_ARGUMENT"])
+ supports=yes
+
+ saved_cxxflags="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAG ARG_ARGUMENT"
+ AC_LANG_PUSH([C++])
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int i;]])], [],
+ [supports=no])
+ AC_LANG_POP([C++])
+ CXXFLAGS="$saved_cxxflags"
+
+ AC_MSG_RESULT([$supports])
+ if test "x$supports" = "xyes" ; then
+ :
+ ARG_IF_TRUE
+ else
+ :
+ ARG_IF_FALSE
+ fi
+])
+
+# FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE],
+# IF_FALSE: [RUN-IF-FALSE])
+# ------------------------------------------------------------
+# Check that the C and C++ compilers support an argument
+BASIC_DEFUN_NAMED([FLAGS_COMPILER_CHECK_ARGUMENTS],
+ [*ARGUMENT IF_TRUE IF_FALSE], [$@],
+[
+ FLAGS_C_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARG_ARGUMENT],
+ IF_TRUE: [C_COMP_SUPPORTS="yes"],
+ IF_FALSE: [C_COMP_SUPPORTS="no"])
+ FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARG_ARGUMENT],
+ IF_TRUE: [CXX_COMP_SUPPORTS="yes"],
+ IF_FALSE: [CXX_COMP_SUPPORTS="no"])
+
+ AC_MSG_CHECKING([if both compilers support "ARG_ARGUMENT"])
+ supports=no
+ if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi
+
+ AC_MSG_RESULT([$supports])
+ if test "x$supports" = "xyes" ; then
+ :
+ ARG_IF_TRUE
+ else
+ :
+ ARG_IF_FALSE
+ fi
+])
+
+# FLAGS_LINKER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE],
+# IF_FALSE: [RUN-IF-FALSE])
+# ------------------------------------------------------------
+# Check that the linker support an argument
+BASIC_DEFUN_NAMED([FLAGS_LINKER_CHECK_ARGUMENTS],
+ [*ARGUMENT IF_TRUE IF_FALSE], [$@],
+[
+ AC_MSG_CHECKING([if linker supports "ARG_ARGUMENT"])
+ supports=yes
+
+ saved_ldflags="$LDFLAGS"
+ LDFLAGS="$LDFLAGS ARG_ARGUMENT"
+ AC_LANG_PUSH([C])
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],
+ [], [supports=no])
+ AC_LANG_POP([C])
+ LDFLAGS="$saved_ldflags"
+
+ AC_MSG_RESULT([$supports])
+ if test "x$supports" = "xyes" ; then
+ :
+ ARG_IF_TRUE
+ else
+ :
+ ARG_IF_FALSE
+ fi
+])
+
+AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_MISC],
+[
+ # Check that the compiler supports -mX (or -qX on AIX) flags
+ # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does
+ FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}],
+ IF_TRUE: [COMPILER_SUPPORTS_TARGET_BITS_FLAG=true],
+ IF_FALSE: [COMPILER_SUPPORTS_TARGET_BITS_FLAG=false])
+ AC_SUBST(COMPILER_SUPPORTS_TARGET_BITS_FLAG)
+
+ AC_ARG_ENABLE([warnings-as-errors], [AS_HELP_STRING([--disable-warnings-as-errors],
+ [do not consider native warnings to be an error @<:@enabled@:>@])])
+
+ AC_MSG_CHECKING([if native warnings are errors])
+ if test "x$enable_warnings_as_errors" = "xyes"; then
+ AC_MSG_RESULT([yes (explicitly set)])
+ WARNINGS_AS_ERRORS=true
+ elif test "x$enable_warnings_as_errors" = "xno"; then
+ AC_MSG_RESULT([no])
+ WARNINGS_AS_ERRORS=false
+ elif test "x$enable_warnings_as_errors" = "x"; then
+ AC_MSG_RESULT([yes (default)])
+ WARNINGS_AS_ERRORS=true
+ else
+ AC_MSG_ERROR([--enable-warnings-as-errors accepts no argument])
+ fi
+
+ AC_SUBST(WARNINGS_AS_ERRORS)
+
+ case "${TOOLCHAIN_TYPE}" in
+ microsoft)
+ DISABLE_WARNING_PREFIX="-wd"
+ CFLAGS_WARNINGS_ARE_ERRORS="-WX"
+ ;;
+ solstudio)
+ DISABLE_WARNING_PREFIX="-erroff="
+ CFLAGS_WARNINGS_ARE_ERRORS="-errtags -errwarn=%all"
+ ;;
+ gcc)
+ # Prior to gcc 4.4, a -Wno-X where X is unknown for that version of gcc will cause an error
+ FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [-Wno-this-is-a-warning-that-do-not-exist],
+ IF_TRUE: [GCC_CAN_DISABLE_WARNINGS=true],
+ IF_FALSE: [GCC_CAN_DISABLE_WARNINGS=false]
+ )
+ if test "x$GCC_CAN_DISABLE_WARNINGS" = "xtrue"; then
+ DISABLE_WARNING_PREFIX="-Wno-"
+ else
+ DISABLE_WARNING_PREFIX=
+ fi
+ CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
+ # Repeate the check for the BUILD_CC and BUILD_CXX. Need to also reset
+ # CFLAGS since any target specific flags will likely not work with the
+ # build compiler
+ CC_OLD="$CC"
+ CXX_OLD="$CXX"
+ CC="$BUILD_CC"
+ CXX="$BUILD_CXX"
+ CFLAGS_OLD="$CFLAGS"
+ CFLAGS=""
+ FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [-Wno-this-is-a-warning-that-do-not-exist],
+ IF_TRUE: [BUILD_CC_CAN_DISABLE_WARNINGS=true],
+ IF_FALSE: [BUILD_CC_CAN_DISABLE_WARNINGS=false]
+ )
+ if test "x$BUILD_CC_CAN_DISABLE_WARNINGS" = "xtrue"; then
+ BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
+ else
+ BUILD_CC_DISABLE_WARNING_PREFIX=
+ fi
+ CC="$CC_OLD"
+ CXX="$CXX_OLD"
+ CFLAGS="$CFLAGS_OLD"
+ ;;
+ clang)
+ DISABLE_WARNING_PREFIX="-Wno-"
+ CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
+ ;;
+ xlc)
+ DISABLE_WARNING_PREFIX="-qsuppress="
+ CFLAGS_WARNINGS_ARE_ERRORS="-qhalt=w"
+ ;;
+ esac
+ AC_SUBST(DISABLE_WARNING_PREFIX)
+ AC_SUBST(BUILD_CC_DISABLE_WARNING_PREFIX)
+ AC_SUBST(CFLAGS_WARNINGS_ARE_ERRORS)
+])
+
+# FLAGS_SETUP_GCC6_COMPILER_FLAGS([PREFIX])
+# Arguments:
+# $1 - Optional prefix for each variable defined.
+AC_DEFUN([FLAGS_SETUP_GCC6_COMPILER_FLAGS],
+[
+ # These flags are required for GCC 6 builds as undefined behaviour in OpenJDK code
+ # runs afoul of the more aggressive versions of these optimisations.
+ # Notably, value range propagation now assumes that the this pointer of C++
+ # member functions is non-null.
+ NO_DELETE_NULL_POINTER_CHECKS_CFLAG="-fno-delete-null-pointer-checks"
+ dnl Argument check is disabled until FLAGS_COMPILER_CHECK_ARGUMENTS handles cross-compilation
+ dnl FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_DELETE_NULL_POINTER_CHECKS_CFLAG -Werror],
+ dnl IF_FALSE: [NO_DELETE_NULL_POINTER_CHECKS_CFLAG=""])
+ NO_LIFETIME_DSE_CFLAG="-fno-lifetime-dse"
+ dnl Argument check is disabled until FLAGS_COMPILER_CHECK_ARGUMENTS handles cross-compilation
+ dnl FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$NO_LIFETIME_DSE_CFLAG -Werror],
+ dnl IF_FALSE: [NO_LIFETIME_DSE_CFLAG=""])
+ AC_MSG_NOTICE([GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} and ${NO_LIFETIME_DSE_CFLAG}])
+ $1CFLAGS_JDK="[$]$1CFLAGS_JDK ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} ${NO_LIFETIME_DSE_CFLAG}"
+ $1JVM_CFLAGS="[$]$1JVM_CFLAGS ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} ${NO_LIFETIME_DSE_CFLAG}"
+])
diff --git a/common/autoconf/generated-configure.sh b/common/autoconf/generated-configure.sh
new file mode 100644
index 0000000..ab0642a
--- /dev/null
+++ b/common/autoconf/generated-configure.sh
@@ -0,0 +1,68834 @@
+#!/bin/bash
+#
+# ##########################################################
+# ### THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT. ###
+# ##########################################################
+#
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69 for OpenJDK jdk9.
+#
+# Report bugs to <build-dev@openjdk.java.net>.
+#
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: build-dev@openjdk.java.net about your system, including
+$0: any error possibly output before this message. Then
+$0: install a modern shell, or manually run the script
+$0: under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='OpenJDK'
+PACKAGE_TARNAME='openjdk'
+PACKAGE_VERSION='jdk9'
+PACKAGE_STRING='OpenJDK jdk9'
+PACKAGE_BUGREPORT='build-dev@openjdk.java.net'
+PACKAGE_URL='http://openjdk.java.net'
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+CFLAGS_CCACHE
+CCACHE
+USE_PRECOMPILED_HEADER
+BUILD_ICECC
+ICECC
+ICECC_WRAPPER
+ICECC_CREATE_ENV
+ICECC_CMD
+ENABLE_JAVAC_SERVER
+ENABLE_SJAVAC
+SJAVAC_SERVER_JAVA_FLAGS
+SJAVAC_SERVER_JAVA
+JAVA_TOOL_FLAGS_SMALL
+JAVA_FLAGS_SMALL
+JAVA_FLAGS_JAVAC
+BOOTCYCLE_JVM_ARGS_BIG
+JAVA_FLAGS_BIG
+JAVA_FLAGS
+TEST_JOBS
+JOBS
+MEMORY_SIZE
+NUM_CORES
+ENABLE_GENERATE_CLASSLIST
+BUILD_FAILURE_HANDLER
+ENABLE_INTREE_EC
+VALID_JVM_FEATURES
+JVM_FEATURES_custom
+JVM_FEATURES_zeroshark
+JVM_FEATURES_zero
+JVM_FEATURES_minimal
+JVM_FEATURES_core
+JVM_FEATURES_client
+JVM_FEATURES_server
+INCLUDE_GRAAL
+ELF_LIBS
+ELF_CFLAGS
+STLPORT_LIB
+LIBZIP_CAN_USE_MMAP
+LIBDL
+LIBM
+USE_EXTERNAL_LCMS
+LCMS_LIBS
+LCMS_CFLAGS
+USE_EXTERNAL_LIBZ
+USE_EXTERNAL_LIBPNG
+PNG_LIBS
+PNG_CFLAGS
+USE_EXTERNAL_LIBGIF
+USE_EXTERNAL_LIBJPEG
+LLVM_LIBS
+LLVM_LDFLAGS
+LLVM_CFLAGS
+LLVM_CONFIG
+LIBFFI_LIB_FILE
+ENABLE_LIBFFI_BUNDLING
+LIBFFI_LIBS
+LIBFFI_CFLAGS
+ALSA_LIBS
+ALSA_CFLAGS
+FREETYPE_LICENSE
+FREETYPE_BUNDLE_LIB_PATH
+FREETYPE_LIBS
+FREETYPE_CFLAGS
+CUPS_CFLAGS
+X_EXTRA_LIBS
+X_LIBS
+X_PRE_LIBS
+X_CFLAGS
+XMKMF
+MSVCP_DLL
+MSVCR_DLL
+LIBCXX
+FIXPATH_DETACH_FLAG
+FIXPATH
+BUILD_GTEST
+ENABLE_AOT
+GCOV_ENABLED
+ZIP_EXTERNAL_DEBUG_SYMBOLS
+COPY_DEBUG_SYMBOLS
+COMPILE_WITH_DEBUG_SYMBOLS
+CFLAGS_WARNINGS_ARE_ERRORS
+BUILD_CC_DISABLE_WARNING_PREFIX
+DISABLE_WARNING_PREFIX
+WARNINGS_AS_ERRORS
+COMPILER_SUPPORTS_TARGET_BITS_FLAG
+LDFLAGS_TESTEXE
+LDFLAGS_TESTLIB
+CXXFLAGS_TESTEXE
+CXXFLAGS_TESTLIB
+CFLAGS_TESTEXE
+CFLAGS_TESTLIB
+OPENJDK_BUILD_JVM_LIBS
+OPENJDK_BUILD_JVM_ASFLAGS
+OPENJDK_BUILD_JVM_LDFLAGS
+OPENJDK_BUILD_JVM_CFLAGS
+OPENJDK_BUILD_LDFLAGS_HASH_STYLE
+OPENJDK_BUILD_LDFLAGS_CXX_JDK
+OPENJDK_BUILD_JDKEXE_LIBS
+OPENJDK_BUILD_JDKLIB_LIBS
+OPENJDK_BUILD_LDFLAGS_JDKEXE
+OPENJDK_BUILD_LDFLAGS_JDKLIB
+OPENJDK_BUILD_CXXFLAGS_JDKEXE
+OPENJDK_BUILD_CXXFLAGS_JDKLIB
+OPENJDK_BUILD_CFLAGS_JDKEXE
+OPENJDK_BUILD_CFLAGS_JDKLIB
+OPENJDK_BUILD_CXXSTD_CXXFLAG
+JVM_LIBS
+JVM_ASFLAGS
+JVM_LDFLAGS
+JVM_CFLAGS
+LDFLAGS_HASH_STYLE
+LDFLAGS_CXX_JDK
+JDKEXE_LIBS
+JDKLIB_LIBS
+LDFLAGS_JDKEXE
+LDFLAGS_JDKLIB
+CXXFLAGS_JDKEXE
+CXXFLAGS_JDKLIB
+CFLAGS_JDKEXE
+CFLAGS_JDKLIB
+MACOSX_VERSION_MIN
+CXXSTD_CXXFLAG
+JDK_ARCH_ABI_PROP_NAME
+CXX_O_FLAG_SIZE
+CXX_O_FLAG_NONE
+CXX_O_FLAG_DEBUG
+CXX_O_FLAG_NORM
+CXX_O_FLAG_HI
+CXX_O_FLAG_HIGHEST
+CXX_O_FLAG_HIGHEST_JVM
+C_O_FLAG_SIZE
+C_O_FLAG_NONE
+C_O_FLAG_DEBUG
+C_O_FLAG_NORM
+C_O_FLAG_HI
+C_O_FLAG_HIGHEST
+C_O_FLAG_HIGHEST_JVM
+JVM_CFLAGS_SYMBOLS
+CXXFLAGS_DEBUG_SYMBOLS
+CFLAGS_DEBUG_SYMBOLS
+CXX_FLAG_DEPS
+C_FLAG_DEPS
+SHARED_LIBRARY_FLAGS
+SET_SHARED_LIBRARY_MAPFILE
+SET_SHARED_LIBRARY_NAME
+SET_SHARED_LIBRARY_ORIGIN
+SET_EXECUTABLE_ORIGIN
+CXX_FLAG_REORDER
+C_FLAG_REORDER
+JVM_RCFLAGS
+RC_FLAGS
+AR_OUT_OPTION
+LD_OUT_OPTION
+EXE_OUT_OPTION
+CC_OUT_OPTION
+STRIPFLAGS
+ARFLAGS
+COMPILER_BINDCMD_FILE_FLAG
+COMPILER_COMMAND_FILE_FLAG
+COMPILER_TARGET_BITS_FLAG
+JT_HOME
+JTREGEXE
+HOTSPOT_TOOLCHAIN_TYPE
+USING_BROKEN_SUSE_LD
+PACKAGE_PATH
+BUILD_AS
+BUILD_LDCXX
+BUILD_LD
+BUILD_STRIP
+BUILD_OBJCOPY
+BUILD_AR
+BUILD_NM
+BUILD_CXX
+BUILD_CC
+BUILD_SYSROOT_LDFLAGS
+BUILD_SYSROOT_CFLAGS
+ac_ct_OBJDUMP
+OBJDUMP
+ac_ct_OBJCOPY
+OBJCOPY
+ac_ct_NM
+ac_ct_STRIP
+GNM
+NM
+STRIP
+MSBUILD
+DUMPBIN
+RC
+MT
+LIPO
+ac_ct_AR
+AR
+AS
+LDCXX
+LD
+CXXCPP
+CPP
+CXX_VERSION_NUMBER
+CC_VERSION_NUMBER
+ac_ct_CXX
+CXXFLAGS
+CXX
+TOOLCHAIN_PATH_CXX
+POTENTIAL_CXX
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+TOOLCHAIN_PATH_CC
+POTENTIAL_CC
+TOOLCHAIN_VERSION
+VS_LIB
+VS_INCLUDE
+VS_PATH
+CYGWIN_LINK
+SYSROOT_LDFLAGS
+SYSROOT_CFLAGS
+EXTRA_LDFLAGS
+EXTRA_CXXFLAGS
+EXTRA_CFLAGS
+EXE_SUFFIX
+OBJ_SUFFIX
+STATIC_LIBRARY
+SHARED_LIBRARY
+STATIC_LIBRARY_SUFFIX
+SHARED_LIBRARY_SUFFIX
+LIBRARY_PREFIX
+TOOLCHAIN_TYPE
+STATIC_BUILD
+IMPORT_MODULES_MAKE
+IMPORT_MODULES_SRC
+IMPORT_MODULES_MAN
+IMPORT_MODULES_LEGAL
+IMPORT_MODULES_CONF
+IMPORT_MODULES_LIBS
+IMPORT_MODULES_CMDS
+IMPORT_MODULES_CLASSES
+BUILD_OUTPUT
+JDK_TOPDIR
+NASHORN_TOPDIR
+HOTSPOT_TOPDIR
+JAXWS_TOPDIR
+JAXP_TOPDIR
+CORBA_TOPDIR
+LANGTOOLS_TOPDIR
+EXTERNAL_BUILDJDK
+BUILD_JDK
+CREATE_BUILDJDK
+JLINK
+JMOD
+JAVAC_FLAGS
+BOOT_JDK_MODULAR
+BOOT_JDK_SOURCETARGET
+JARSIGNER
+JAR
+JAVAH
+JAVAC
+JAVA
+BOOT_JDK
+JAVA_CHECK
+JAVAC_CHECK
+VERSION_IS_GA
+VERSION_SHORT
+VERSION_STRING
+VERSION_NUMBER_FOUR_POSITIONS
+VERSION_NUMBER
+VERSION_OPT
+VERSION_BUILD
+VERSION_PRE
+VERSION_PATCH
+VERSION_SECURITY
+VERSION_MINOR
+VERSION_MAJOR
+MACOSX_BUNDLE_ID_BASE
+MACOSX_BUNDLE_NAME_BASE
+HOTSPOT_VM_DISTRO
+COMPANY_NAME
+JDK_RC_PLATFORM_NAME
+PRODUCT_SUFFIX
+PRODUCT_NAME
+LAUNCHER_NAME
+JLINK_KEEP_PACKAGED_MODULES
+COPYRIGHT_YEAR
+COMPRESS_JARS
+INCLUDE_SA
+UNLIMITED_CRYPTO
+CACERTS_FILE
+ENABLE_FULL_DOCS
+ENABLE_HEADLESS_ONLY
+DEFAULT_MAKE_TARGET
+OS_VERSION_MICRO
+OS_VERSION_MINOR
+OS_VERSION_MAJOR
+PKG_CONFIG
+BASH_ARGS
+SETFILE
+CODESIGN
+XATTR
+DSYMUTIL
+IS_GNU_TIME
+PATCH
+DTRACE
+TIME
+STAT
+HG
+DOT
+READELF
+OTOOL
+LDD
+ZIPEXE
+UNZIP
+TAR_SUPPORTS_TRANSFORM
+TAR_INCLUDE_PARAM
+TAR_CREATE_EXTRA_PARAM
+TAR_TYPE
+FIND_DELETE
+OUTPUT_SYNC
+OUTPUT_SYNC_SUPPORTED
+CHECK_TOOLSDIR_MAKE
+CHECK_TOOLSDIR_GMAKE
+CHECK_MAKE
+CHECK_GMAKE
+MAKE
+PKGHANDLER
+CONFIGURESUPPORT_OUTPUTDIR
+OUTPUT_ROOT
+CONF_NAME
+SPEC
+SDKROOT
+XCODEBUILD
+JVM_VARIANT_MAIN
+VALID_JVM_VARIANTS
+JVM_VARIANTS
+DEBUG_LEVEL
+HOTSPOT_DEBUG_LEVEL
+JDK_VARIANT
+USERNAME
+CANONICAL_TOPDIR
+ORIGINAL_TOPDIR
+TOPDIR
+PATH_SEP
+HOTSPOT_BUILD_CPU_DEFINE
+HOTSPOT_BUILD_CPU_ARCH
+HOTSPOT_BUILD_CPU
+HOTSPOT_BUILD_OS_TYPE
+HOTSPOT_BUILD_OS
+OPENJDK_BUILD_BUNDLE_PLATFORM
+OPENJDK_BUILD_OS_EXPORT_DIR
+OPENJDK_BUILD_CPU_OSARCH
+OPENJDK_BUILD_CPU_ISADIR
+OPENJDK_BUILD_CPU_LEGACY_LIB
+OPENJDK_BUILD_CPU_LEGACY
+HOTSPOT_TARGET_CPU_DEFINE
+HOTSPOT_TARGET_CPU_ARCH
+HOTSPOT_TARGET_CPU
+HOTSPOT_TARGET_OS_TYPE
+HOTSPOT_TARGET_OS
+DEFINE_CROSS_COMPILE_ARCH
+OPENJDK_TARGET_BUNDLE_PLATFORM
+OPENJDK_TARGET_OS_EXPORT_DIR
+OPENJDK_TARGET_CPU_OSARCH
+OPENJDK_TARGET_CPU_ISADIR
+OPENJDK_TARGET_CPU_LEGACY_LIB
+OPENJDK_TARGET_CPU_LEGACY
+RELEASE_FILE_OS_ARCH
+RELEASE_FILE_OS_NAME
+OPENJDK_MODULE_TARGET_PLATFORM
+COMPILE_TYPE
+OPENJDK_TARGET_CPU_ENDIAN
+OPENJDK_TARGET_CPU_BITS
+OPENJDK_TARGET_CPU_ARCH
+OPENJDK_TARGET_CPU
+OPENJDK_TARGET_OS_ENV
+OPENJDK_TARGET_OS_TYPE
+OPENJDK_TARGET_OS
+OPENJDK_BUILD_CPU_ENDIAN
+OPENJDK_BUILD_CPU_BITS
+OPENJDK_BUILD_CPU_ARCH
+OPENJDK_BUILD_CPU
+OPENJDK_BUILD_OS_ENV
+OPENJDK_BUILD_OS_TYPE
+OPENJDK_BUILD_OS
+OPENJDK_BUILD_AUTOCONF_NAME
+OPENJDK_TARGET_AUTOCONF_NAME
+target_os
+target_vendor
+target_cpu
+target
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+PANDOC
+NICE
+CPIO
+DF
+READLINK
+CYGPATH
+SED
+FGREP
+EGREP
+GREP
+AWK
+XARGS
+WHICH
+WC
+UNIQ
+UNAME
+TR
+TOUCH
+TEE
+TAR
+TAIL
+SORT
+SH
+RMDIR
+RM
+PRINTF
+NAWK
+MV
+MKTEMP
+MKDIR
+LS
+LN
+GZIP
+GUNZIP
+HEAD
+FIND
+FILE
+EXPR
+ECHO
+DIRNAME
+DIFF
+DATE
+CUT
+CP
+COMM
+CMP
+CHMOD
+CAT
+BASH
+BASENAME
+DATE_WHEN_CONFIGURED
+ORIGINAL_PATH
+CONFIGURE_COMMAND_LINE
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_target_bits
+enable_openjdk_only
+with_custom_make_dir
+with_jdk_variant
+enable_debug
+with_debug_level
+with_jvm_variants
+with_cpu_port
+with_devkit
+with_sys_root
+with_sysroot
+with_tools_dir
+with_toolchain_path
+with_extra_path
+with_sdk_name
+with_conf_name
+with_output_sync
+with_default_make_target
+enable_headless_only
+enable_full_docs
+with_cacerts_file
+enable_unlimited_crypto
+with_copyright_year
+enable_keep_packaged_modules
+with_milestone
+with_update_version
+with_user_release_suffix
+with_build_number
+with_version_string
+with_version_pre
+with_version_opt
+with_version_build
+with_version_major
+with_version_minor
+with_version_security
+with_version_patch
+with_boot_jdk
+with_build_jdk
+with_add_source_root
+with_override_source_root
+with_adds_and_overrides
+with_override_langtools
+with_override_corba
+with_override_jaxp
+with_override_jaxws
+with_override_hotspot
+with_override_nashorn
+with_override_jdk
+with_import_hotspot
+with_import_modules
+enable_static_build
+with_toolchain_type
+with_extra_cflags
+with_extra_cxxflags
+with_extra_ldflags
+with_toolchain_version
+with_build_devkit
+with_jtreg
+with_abi_profile
+enable_warnings_as_errors
+with_native_debug_symbols
+enable_debug_symbols
+enable_zip_debug_info
+enable_native_coverage
+enable_dtrace
+enable_aot
+enable_hotspot_gtest
+with_stdc__lib
+with_msvcr_dll
+with_msvcp_dll
+with_x
+with_cups
+with_cups_include
+with_freetype
+with_freetype_include
+with_freetype_lib
+with_freetype_src
+enable_freetype_bundling
+with_freetype_license
+with_alsa
+with_alsa_include
+with_alsa_lib
+with_libffi
+with_libffi_include
+with_libffi_lib
+enable_libffi_bundling
+with_libjpeg
+with_giflib
+with_libpng
+with_zlib
+with_lcms
+with_dxsdk
+with_dxsdk_lib
+with_dxsdk_include
+with_libelf
+with_libelf_include
+with_libelf_lib
+with_jvm_features
+with_jvm_interpreter
+enable_jtreg_failure_handler
+enable_generate_classlist
+with_num_cores
+with_memory_size
+with_jobs
+with_test_jobs
+with_boot_jdk_jvmargs
+with_sjavac_server_java
+enable_sjavac
+enable_javac_server
+enable_icecc
+enable_precompiled_headers
+enable_ccache
+with_ccache_dir
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+BASENAME
+BASH
+CAT
+CHMOD
+CMP
+COMM
+CP
+CUT
+DATE
+DIFF
+DIRNAME
+ECHO
+EXPR
+FILE
+FIND
+HEAD
+GUNZIP
+GZIP
+LN
+LS
+MKDIR
+MKTEMP
+MV
+NAWK
+PRINTF
+RM
+RMDIR
+SH
+SORT
+TAIL
+TAR
+TEE
+TOUCH
+TR
+UNAME
+UNIQ
+WC
+WHICH
+XARGS
+AWK
+GREP
+EGREP
+FGREP
+SED
+CYGPATH
+READLINK
+DF
+CPIO
+NICE
+PANDOC
+MAKE
+UNZIP
+ZIPEXE
+LDD
+OTOOL
+READELF
+DOT
+HG
+STAT
+TIME
+DTRACE
+PATCH
+DSYMUTIL
+XATTR
+CODESIGN
+SETFILE
+PKG_CONFIG
+JAVA
+JAVAC
+JAVAH
+JAR
+JARSIGNER
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CXX
+CXXFLAGS
+CCC
+CPP
+CXXCPP
+AS
+AR
+LIPO
+STRIP
+NM
+GNM
+OBJCOPY
+OBJDUMP
+BUILD_CC
+BUILD_CXX
+BUILD_NM
+BUILD_AR
+BUILD_OBJCOPY
+BUILD_STRIP
+JTREGEXE
+XMKMF
+FREETYPE_CFLAGS
+FREETYPE_LIBS
+ALSA_CFLAGS
+ALSA_LIBS
+LIBFFI_CFLAGS
+LIBFFI_LIBS
+PNG_CFLAGS
+PNG_LIBS
+LCMS_CFLAGS
+LCMS_LIBS
+ELF_CFLAGS
+ELF_LIBS
+ICECC_CMD
+ICECC_CREATE_ENV
+ICECC_WRAPPER
+CCACHE'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures OpenJDK jdk9 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking ...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/openjdk]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+X features:
+ --x-includes=DIR X include files are in DIR
+ --x-libraries=DIR X library files are in DIR
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+ --target=TARGET configure for building compilers for TARGET [HOST]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of OpenJDK jdk9:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-option-checking ignore unrecognized --enable/--with options
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-openjdk-only suppress building custom source even if present
+ [disabled]
+ --enable-debug set the debug level to fastdebug (shorthand for
+ --with-debug-level=fastdebug) [disabled]
+ --enable-headless-only only build headless (no GUI) support [disabled]
+ --enable-full-docs build complete documentation [enabled if all tools
+ found]
+ --disable-unlimited-crypto
+ Disable unlimited crypto policy [enabled]
+ --disable-keep-packaged-modules
+ Do not keep packaged modules in jdk image [enable]
+ --enable-static-build enable static library build [disabled]
+ --disable-warnings-as-errors
+ do not consider native warnings to be an error
+ [enabled]
+ --enable-debug-symbols Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --enable-zip-debug-info Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --enable-native-coverage
+ enable native compilation with code coverage
+ data[disabled]
+ --enable-dtrace[=yes/no/auto]
+ enable dtrace. Default is auto, where dtrace is
+ enabled if all dependencies are present.
+ --enable-aot[=yes/no/auto]
+ enable ahead of time compilation feature. Default is
+ auto, where aot is enabled if all dependencies are
+ present.
+ --disable-hotspot-gtest Disables building of the Hotspot unit tests
+ --disable-freetype-bundling
+ disable bundling of the freetype library with the
+ build result [enabled on Windows or when using
+ --with-freetype, disabled otherwise]
+ --enable-libffi-bundling
+ enable bundling of libffi.so to make the built JDK
+ runnable on more systems
+ --enable-jtreg-failure-handler
+ forces build of the jtreg failure handler to be
+ enabled, missing dependencies become fatal errors.
+ Default is auto, where the failure handler is built
+ if all dependencies are present and otherwise just
+ disabled.
+ --disable-generate-classlist
+ forces enabling or disabling of the generation of a
+ CDS classlist at build time. Default is to generate
+ it when either the server or client JVMs are built.
+ --enable-sjavac use sjavac to do fast incremental compiles
+ [disabled]
+ --disable-javac-server disable javac server [enabled]
+ --enable-icecc enable distribted compilation of native code using
+ icecc/icecream [disabled]
+ --disable-precompiled-headers
+ disable using precompiled headers when compiling C++
+ [enabled]
+ --enable-ccache enable using ccache to speed up recompilations
+ [disabled]
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-target-bits build 32-bit or 64-bit binaries (for platforms that
+ support it), e.g. --with-target-bits=32 [guessed]
+ --with-custom-make-dir Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-jdk-variant JDK variant to build (normal) [normal]
+ --with-debug-level set the debug level (release, fastdebug, slowdebug,
+ optimized) [release]
+ --with-jvm-variants JVM variants (separated by commas) to build
+ (server,client,minimal,core,zero,zeroshark,custom)
+ [server]
+ --with-cpu-port specify sources to use for Hotspot 64-bit ARM port
+ (arm64,aarch64) [aarch64]
+ --with-devkit use this devkit for compilers, tools and resources
+ --with-sys-root alias for --with-sysroot for backwards compatability
+ --with-sysroot use this directory as sysroot
+ --with-tools-dir alias for --with-toolchain-path for backwards
+ compatibility
+ --with-toolchain-path prepend these directories when searching for
+ toolchain binaries (compilers etc)
+ --with-extra-path prepend these directories to the default path
+ --with-sdk-name use the platform SDK of the given name. [macosx]
+ --with-conf-name use this as the name of the configuration [generated
+ from important configuration options]
+ --with-output-sync set make output sync type if supported by make.
+ [recurse]
+ --with-default-make-target
+ set the default make target [exploded-image]
+ --with-cacerts-file specify alternative cacerts file
+ --with-copyright-year Set copyright year value for build [current year]
+ --with-milestone Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-update-version Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-user-release-suffix
+ Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-build-number Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-version-string Set version string [calculated]
+ --with-version-pre Set the base part of the version 'PRE' field
+ (pre-release identifier) ['internal']
+ --with-version-opt Set version 'OPT' field (build metadata)
+ [<timestamp>.<user>.<dirname>]
+ --with-version-build Set version 'BUILD' field (build number) [not
+ specified]
+ --with-version-major Set version 'MAJOR' field (first number) [current
+ source value]
+ --with-version-minor Set version 'MINOR' field (second number) [current
+ source value]
+ --with-version-security Set version 'SECURITY' field (third number) [current
+ source value]
+ --with-version-patch Set version 'PATCH' field (fourth number) [not
+ specified]
+ --with-boot-jdk path to Boot JDK (used to bootstrap build) [probed]
+ --with-build-jdk path to JDK of same version as is being built[the
+ newly built JDK]
+ --with-add-source-root Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-override-source-root
+ Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-adds-and-overrides
+ Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-override-langtools
+ Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-override-corba Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-override-jaxp Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-override-jaxws Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-override-hotspot Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-override-nashorn Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-override-jdk Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-import_hotspot Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-import-modules import a set of prebuilt modules either as a zip
+ file or an exploded directory
+ --with-toolchain-type the toolchain type (or family) to use, use '--help'
+ to show possible values [platform dependent]
+ --with-extra-cflags extra flags to be used when compiling jdk c-files
+ --with-extra-cxxflags extra flags to be used when compiling jdk c++-files
+ --with-extra-ldflags extra flags to be used when linking jdk
+ --with-toolchain-version
+ the version of the toolchain to look for, use
+ '--help' to show possible values [platform
+ dependent]
+ --with-build-devkit Devkit to use for the build platform toolchain
+ --with-jtreg Regression Test Harness [probed]
+ --with-abi-profile specify ABI profile for ARM builds
+ (arm-vfp-sflt,arm-vfp-hflt,arm-sflt,
+ armv5-vfp-sflt,armv6-vfp-hflt,arm64,aarch64)
+ [toolchain dependent]
+ --with-native-debug-symbols
+ set the native debug symbol configuration (none,
+ internal, external, zipped) [varying]
+ --with-stdc++lib=<static>,<dynamic>,<default>
+ force linking of the C++ runtime on Linux to either
+ static or dynamic, default is static with dynamic as
+ fallback
+ --with-msvcr-dll path to microsoft C runtime dll (msvcr*.dll)
+ (Windows only) [probed]
+ --with-msvcp-dll path to microsoft C++ runtime dll (msvcp*.dll)
+ (Windows only) [probed]
+ --with-x use the X Window System
+ --with-cups specify prefix directory for the cups package
+ (expecting the headers under PATH/include)
+ --with-cups-include specify directory for the cups include files
+ --with-freetype specify prefix directory for the freetype package
+ (expecting the libraries under PATH/lib and the
+ headers under PATH/include)
+ --with-freetype-include specify directory for the freetype include files
+ --with-freetype-lib specify directory for the freetype library
+ --with-freetype-src specify directory with freetype sources to
+ automatically build the library (experimental,
+ Windows-only)
+ --with-freetype-license if bundling freetype, also bundle this license file
+ --with-alsa specify prefix directory for the alsa package
+ (expecting the libraries under PATH/lib and the
+ headers under PATH/include)
+ --with-alsa-include specify directory for the alsa include files
+ --with-alsa-lib specify directory for the alsa library
+ --with-libffi specify prefix directory for the libffi package
+ (expecting the libraries under PATH/lib and the
+ headers under PATH/include)
+ --with-libffi-include specify directory for the libffi include files
+ --with-libffi-lib specify directory for the libffi library
+ --with-libjpeg use libjpeg from build system or OpenJDK source
+ (system, bundled) [bundled]
+ --with-giflib use giflib from build system or OpenJDK source
+ (system, bundled) [bundled]
+ --with-libpng use libpng from build system or OpenJDK source
+ (system, bundled) [bundled]
+ --with-zlib use zlib from build system or OpenJDK source
+ (system, bundled) [bundled]
+ --with-lcms use lcms2 from build system or OpenJDK source
+ (system, bundled) [bundled]
+ --with-dxsdk Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-dxsdk-lib Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-dxsdk-include Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-libelf specify prefix directory for the libelf package
+ (expecting the libraries under PATH/lib and the
+ headers under PATH/include)
+ --with-libelf-include specify directory for the libelf include files
+ --with-libelf-lib specify directory for the libelf library
+ --with-jvm-features additional JVM features to enable (separated by
+ comma), use '--help' to show possible values [none]
+ --with-jvm-interpreter Deprecated. Option is kept for backwards
+ compatibility and is ignored
+ --with-num-cores number of cores in the build system, e.g.
+ --with-num-cores=8 [probed]
+ --with-memory-size memory (in MB) available in the build system, e.g.
+ --with-memory-size=1024 [probed]
+ --with-jobs number of parallel jobs to let make run [calculated
+ based on cores and memory]
+ --with-test-jobs number of parallel tests jobs to run [based on build
+ jobs]
+ --with-boot-jdk-jvmargs specify JVM arguments to be passed to all java
+ invocations of boot JDK, overriding the default
+ values, e.g --with-boot-jdk-jvmargs="-Xmx8G
+ -enableassertions"
+ --with-sjavac-server-java
+ use this java binary for running the sjavac
+ background server [Boot JDK java]
+ --with-ccache-dir where to store ccache files [~/.ccache]
+
+Some influential environment variables:
+ BASENAME Override default value for BASENAME
+ BASH Override default value for BASH
+ CAT Override default value for CAT
+ CHMOD Override default value for CHMOD
+ CMP Override default value for CMP
+ COMM Override default value for COMM
+ CP Override default value for CP
+ CUT Override default value for CUT
+ DATE Override default value for DATE
+ DIFF Override default value for DIFF
+ DIRNAME Override default value for DIRNAME
+ ECHO Override default value for ECHO
+ EXPR Override default value for EXPR
+ FILE Override default value for FILE
+ FIND Override default value for FIND
+ HEAD Override default value for HEAD
+ GUNZIP Override default value for GUNZIP
+ GZIP Override default value for GZIP
+ LN Override default value for LN
+ LS Override default value for LS
+ MKDIR Override default value for MKDIR
+ MKTEMP Override default value for MKTEMP
+ MV Override default value for MV
+ NAWK Override default value for NAWK
+ PRINTF Override default value for PRINTF
+ RM Override default value for RM
+ RMDIR Override default value for RMDIR
+ SH Override default value for SH
+ SORT Override default value for SORT
+ TAIL Override default value for TAIL
+ TAR Override default value for TAR
+ TEE Override default value for TEE
+ TOUCH Override default value for TOUCH
+ TR Override default value for TR
+ UNAME Override default value for UNAME
+ UNIQ Override default value for UNIQ
+ WC Override default value for WC
+ WHICH Override default value for WHICH
+ XARGS Override default value for XARGS
+ AWK Override default value for AWK
+ GREP Override default value for GREP
+ EGREP Override default value for EGREP
+ FGREP Override default value for FGREP
+ SED Override default value for SED
+ CYGPATH Override default value for CYGPATH
+ READLINK Override default value for READLINK
+ DF Override default value for DF
+ CPIO Override default value for CPIO
+ NICE Override default value for NICE
+ PANDOC Override default value for PANDOC
+ MAKE Override default value for MAKE
+ UNZIP Override default value for UNZIP
+ ZIPEXE Override default value for ZIPEXE
+ LDD Override default value for LDD
+ OTOOL Override default value for OTOOL
+ READELF Override default value for READELF
+ DOT Override default value for DOT
+ HG Override default value for HG
+ STAT Override default value for STAT
+ TIME Override default value for TIME
+ DTRACE Override default value for DTRACE
+ PATCH Override default value for PATCH
+ DSYMUTIL Override default value for DSYMUTIL
+ XATTR Override default value for XATTR
+ CODESIGN Override default value for CODESIGN
+ SETFILE Override default value for SETFILE
+ PKG_CONFIG path to pkg-config utility
+ JAVA Override default value for JAVA
+ JAVAC Override default value for JAVAC
+ JAVAH Override default value for JAVAH
+ JAR Override default value for JAR
+ JARSIGNER Override default value for JARSIGNER
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ CPP C preprocessor
+ CXXCPP C++ preprocessor
+ AS Override default value for AS
+ AR Override default value for AR
+ LIPO Override default value for LIPO
+ STRIP Override default value for STRIP
+ NM Override default value for NM
+ GNM Override default value for GNM
+ OBJCOPY Override default value for OBJCOPY
+ OBJDUMP Override default value for OBJDUMP
+ BUILD_CC Override default value for BUILD_CC
+ BUILD_CXX Override default value for BUILD_CXX
+ BUILD_NM Override default value for BUILD_NM
+ BUILD_AR Override default value for BUILD_AR
+ BUILD_OBJCOPY
+ Override default value for BUILD_OBJCOPY
+ BUILD_STRIP Override default value for BUILD_STRIP
+ JTREGEXE Override default value for JTREGEXE
+ XMKMF Path to xmkmf, Makefile generator for X Window System
+ FREETYPE_CFLAGS
+ C compiler flags for FREETYPE, overriding pkg-config
+ FREETYPE_LIBS
+ linker flags for FREETYPE, overriding pkg-config
+ ALSA_CFLAGS C compiler flags for ALSA, overriding pkg-config
+ ALSA_LIBS linker flags for ALSA, overriding pkg-config
+ LIBFFI_CFLAGS
+ C compiler flags for LIBFFI, overriding pkg-config
+ LIBFFI_LIBS linker flags for LIBFFI, overriding pkg-config
+ PNG_CFLAGS C compiler flags for PNG, overriding pkg-config
+ PNG_LIBS linker flags for PNG, overriding pkg-config
+ LCMS_CFLAGS C compiler flags for LCMS, overriding pkg-config
+ LCMS_LIBS linker flags for LCMS, overriding pkg-config
+ ELF_CFLAGS C compiler flags for ELF, overriding pkg-config
+ ELF_LIBS linker flags for ELF, overriding pkg-config
+ ICECC_CMD Override default value for ICECC_CMD
+ ICECC_CREATE_ENV
+ Override default value for ICECC_CREATE_ENV
+ ICECC_WRAPPER
+ Override default value for ICECC_WRAPPER
+ CCACHE Override default value for CCACHE
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <build-dev@openjdk.java.net>.
+OpenJDK home page: <http://openjdk.java.net>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+OpenJDK configure jdk9
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_cpp
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES
+# ---------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_cxx_check_header_mongrel ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if eval \${$3+:} false; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_header_compiler=yes
+else
+ ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+ ac_header_preproc=yes
+else
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #((
+ yes:no: )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ----------------------------------------- ##
+## Report this to build-dev@openjdk.java.net ##
+## ----------------------------------------- ##"
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_header_mongrel
+
+# ac_fn_cxx_try_run LINENO
+# ------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_cxx_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_run
+
+# ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES
+# ---------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_cxx_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_header_compile
+
+# ac_fn_cxx_compute_int LINENO EXPR VAR INCLUDES
+# ----------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_cxx_compute_int ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_hi=$ac_mid; break
+else
+ as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_lo=$ac_mid; break
+else
+ as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+ as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_hi=$ac_mid
+else
+ as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if (($2) < 0)
+ {
+ long int i = longval ();
+ if (i != ($2))
+ return 1;
+ fprintf (f, "%ld", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != ($2))
+ return 1;
+ fprintf (f, "%lu", i);
+ }
+ /* Do not output a trailing newline, as this causes \r\n confusion
+ on some platforms. */
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_run "$LINENO"; then :
+ echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+ ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+ fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_compute_int
+
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_link
+
+# ac_fn_cxx_check_func LINENO FUNC VAR
+# ------------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_cxx_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_cxx_check_func
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by OpenJDK $as_me jdk9, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in #((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_aux_dir=
+for ac_dir in $TOPDIR/common/autoconf/build-aux "$srcdir"/$TOPDIR/common/autoconf/build-aux; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in $TOPDIR/common/autoconf/build-aux \"$srcdir\"/$TOPDIR/common/autoconf/build-aux" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+
+#
+# Copyright (c) 2012, 2013, 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.
+#
+
+#
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists. Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+# PKG_CHECK_MODULES
+
+
+# Include these first...
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# Create a function/macro that takes a series of named arguments. The call is
+# similar to AC_DEFUN, but the setup of the function looks like this:
+# BASIC_DEFUN_NAMED([MYFUNC], [FOO *BAR], [$@], [
+# ... do something
+# AC_MSG_NOTICE([Value of BAR is ARG_BAR])
+# ])
+# A star (*) in front of a named argument means that it is required and it's
+# presence will be verified. To pass e.g. the first value as a normal indexed
+# argument, use [m4_shift($@)] as the third argument instead of [$@]. These
+# arguments are referenced in the function by their name prefixed by ARG_, e.g.
+# "ARG_FOO".
+#
+# The generated function can be called like this:
+# MYFUNC(FOO: [foo-val],
+# BAR: [
+# $ECHO hello world
+# ])
+# Note that the argument value must start on the same line as the argument name.
+#
+# Argument 1: Name of the function to define
+# Argument 2: List of legal named arguments, with a * prefix for required arguments
+# Argument 3: Argument array to treat as named, typically $@
+# Argument 4: The main function body
+
+
+# Test if $1 is a valid argument to $3 (often is $JAVA passed as $3)
+# If so, then append $1 to $2 \
+# Also set JVM_ARG_OK to true/false depending on outcome.
+
+
+# Appends a string to a path variable, only adding the : when needed.
+
+
+# Prepends a string to a path variable, only adding the : when needed.
+
+
+# This will make sure the given variable points to a full and proper
+# path. This means:
+# 1) There will be no spaces in the path. On unix platforms,
+# spaces in the path will result in an error. On Windows,
+# the path will be rewritten using short-style to be space-free.
+# 2) The path will be absolute, and it will be in unix-style (on
+# cygwin).
+# $1: The name of the variable to fix
+
+
+# This will make sure the given variable points to a executable
+# with a full and proper path. This means:
+# 1) There will be no spaces in the path. On unix platforms,
+# spaces in the path will result in an error. On Windows,
+# the path will be rewritten using short-style to be space-free.
+# 2) The path will be absolute, and it will be in unix-style (on
+# cygwin).
+# Any arguments given to the executable is preserved.
+# If the input variable does not have a directory specification, then
+# it need to be in the PATH.
+# $1: The name of the variable to fix
+
+
+
+
+# Register a --with argument but mark it as deprecated
+# $1: The name of the with argument to deprecate, not including --with-
+
+
+# Register a --enable argument but mark it as deprecated
+# $1: The name of the with argument to deprecate, not including --enable-
+# $2: The name of the argument to deprecate, in shell variable style (i.e. with _ instead of -)
+# $3: Messages to user.
+
+
+
+
+# Test that variable $1 denoting a program is not empty. If empty, exit with an error.
+# $1: variable to check
+
+
+# Check that there are no unprocessed overridden variables left.
+# If so, they are an incorrect argument and we will exit with an error.
+
+
+# Setup a tool for the given variable. If correctly specified by the user,
+# use that value, otherwise search for the tool using the supplied code snippet.
+# $1: variable to set
+# $2: code snippet to call to look for the tool
+# $3: code snippet to call if variable was used to find tool
+
+
+# Call BASIC_SETUP_TOOL with AC_PATH_PROGS to locate the tool
+# $1: variable to set
+# $2: executable name (or list of names) to look for
+# $3: [path]
+
+
+# Call BASIC_SETUP_TOOL with AC_CHECK_TOOLS to locate the tool
+# $1: variable to set
+# $2: executable name (or list of names) to look for
+
+
+# Like BASIC_PATH_PROGS but fails if no tool was found.
+# $1: variable to set
+# $2: executable name (or list of names) to look for
+# $3: [path]
+
+
+# Like BASIC_SETUP_TOOL but fails if no tool was found.
+# $1: variable to set
+# $2: autoconf macro to call to look for the special tool
+
+
+# Setup the most fundamental tools that relies on not much else to set up,
+# but is used by much of the early bootstrap code.
+
+
+# Setup basic configuration paths, and platform-specific stuff related to PATHs.
+
+
+# Evaluates platform specific overrides for devkit variables.
+# $1: Name of variable
+
+
+
+
+
+
+#%%% 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
+
+
+
+
+# Goes looking for a usable version of GNU make.
+
+
+
+
+
+
+
+
+
+
+# Check if build directory is on local disk. If not possible to determine,
+# we prefer to claim it's local.
+# Argument 1: directory to test
+# Argument 2: what to do if it is on local disk
+# Argument 3: what to do otherwise (remote disk or failure)
+
+
+# Check that source files have basic read permissions set. This might
+# not be the case in cygwin in certain conditions.
+
+
+
+
+# Check for support for specific options in bash
+
+
+################################################################################
+#
+# Default make target
+#
+
+
+# Code to run after AC_OUTPUT
+
+
+#
+# Copyright (c) 2011, 2016, 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.
+#
+
+
+
+
+
+# Helper function which possibly converts a path using DOS-style short mode.
+# If so, the updated path is stored in $new_path.
+# $1: The path to check
+
+
+# Helper function which possibly converts a path using DOS-style short mode.
+# If so, the updated path is stored in $new_path.
+# $1: The path to check
+
+
+# FIXME: The BASIC_FIXUP_*_CYGWIN/MSYS is most likely too convoluted
+# and could probably be heavily simplified. However, all changes in this
+# area tend to need lot of testing in different scenarios, and in lack of
+# proper unit testing, cleaning this up has not been deemed worth the effort
+# at the moment.
+
+
+
+
+
+
+
+
+
+# Setup basic configuration paths, and platform-specific stuff related to PATHs.
+
+
+
+
+# ... then the rest
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+########################################################################
+# This file handles detection of the Boot JDK. The Boot JDK detection
+# process has been developed as a response to solve a complex real-world
+# problem. Initially, it was simple, but it has grown as platform after
+# platform, idiosyncracy after idiosyncracy has been supported.
+#
+# The basic idea is this:
+# 1) You need an acceptable *) JDK to use as a Boot JDK
+# 2) There are several ways to locate a JDK, that are mostly platform
+# dependent **)
+# 3) You can have multiple JDKs installed
+# 4) If possible, configure should try to dig out an acceptable JDK
+# automatically, without having to resort to command-line options
+#
+# *) acceptable means e.g. JDK7 for building JDK8, a complete JDK (with
+# javac) and not a JRE, etc.
+#
+# **) On Windows we typically use a well-known path.
+# On MacOSX we typically use the tool java_home.
+# On Linux we typically find javac in the $PATH, and then follow a
+# chain of symlinks that often ends up in a real JDK.
+#
+# This leads to the code where we check in different ways to locate a
+# JDK, and if one is found, check if it is acceptable. If not, we print
+# our reasons for rejecting it (useful when debugging non-working
+# configure situations) and continue checking the next one.
+########################################################################
+
+# 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
+
+
+# Test: Is bootjdk explicitly set by command line arguments?
+
+
+# Test: Is $JAVA_HOME set?
+
+
+# Test: Is there a java or javac in the PATH, which is a symlink to the JDK?
+
+
+# Test: Is there a /usr/libexec/java_home? (Typically on MacOSX)
+# $1: Argument to the java_home binary (optional)
+
+
+# Test: On MacOS X, can we find a boot jdk using /usr/libexec/java_home?
+
+
+# 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
+
+
+# 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.
+
+
+# Test: Is there a JDK installed in default, well-known locations?
+
+
+# Check that a command-line tool in the Boot JDK is correct
+# $1 = name of variable to assign
+# $2 = name of binary
+
+
+###############################################################################
+#
+# We need a Boot JDK to bootstrap the build.
+#
+
+
+
+
+
+# BUILD_JDK: the location of the latest JDK that can run
+# on the host system and supports the target class file version
+# generated in this JDK build. This variable should only be
+# used after the launchers are built.
+#
+
+# Execute the check given as argument, and verify the result.
+# If the JDK was previously found, do nothing.
+# $1 A command line (typically autoconf macro) to execute
+
+
+# By default the BUILD_JDK is the JDK_OUTPUTDIR. If the target architecture
+# is different than the host system doing the build (e.g. cross-compilation),
+# a special BUILD_JDK is built as part of the build process. An external
+# prebuilt BUILD_JDK can also be supplied.
+
+
+#
+# Copyright (c) 2011, 2016, 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.
+#
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+################################################################################
+#
+# Runs icecc-create-env once and prints the error if it fails
+#
+# $1: arguments to icecc-create-env
+# $2: log file
+#
+
+
+################################################################################
+#
+# Optionally enable distributed compilation of native code using icecc/icecream
+#
+
+
+
+
+
+
+
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+################################################################################
+#
+# Setup ABI profile (for arm)
+#
+
+
+# Reset the global CFLAGS/LDFLAGS variables and initialize them with the
+# corresponding configure arguments instead
+
+
+# Setup the sysroot flags and add them to global CFLAGS and LDFLAGS so
+# that configure can use them while detecting compilers.
+# TOOLCHAIN_TYPE is available here.
+# Param 1 - Optional prefix to all variables. (e.g BUILD_)
+
+
+
+
+
+
+# Documentation on common flags used for solstudio in 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.
+#
+# -fns: Use non-standard floating point mode (not IEEE 754)
+# -fsimple: Do some simplification of floating point arithmetic (not IEEE 754)
+# -fsingle: Use single precision floating point with 'float'
+# -xalias_level=basic: 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)
+# -xbuiltin=%all: Use intrinsic or inline versions for math/std functions
+# (If you expect perfect errno behavior, do not use this)
+# -xdepend: Loop data dependency optimizations (need -xO3 or higher)
+# -xrestrict: 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)
+# -xlibmil: Inline some library routines
+# (If you expect perfect errno behavior, do not use this)
+# -xlibmopt: Use optimized math routines (CURRENTLY DISABLED)
+# (If you expect perfect errno behavior, do not use this)
+# Can cause undefined external on Solaris 8 X86 on __sincos, removing for now
+
+ # FIXME: this will never happen since sparc != sparcv9, ie 32 bit, which we don't build anymore.
+ # Bug?
+ #if test "x$OPENJDK_TARGET_CPU" = xsparc; then
+ # CFLAGS_JDK="${CFLAGS_JDK} -xmemalign=4s"
+ # CXXFLAGS_JDK="${CXXFLAGS_JDK} -xmemalign=4s"
+ #fi
+
+
+
+
+
+
+################################################################################
+# $1 - Either BUILD or TARGET to pick the correct OS/CPU variables to check
+# conditionals against.
+# $2 - Optional prefix for each variable defined.
+
+
+# FLAGS_C_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE],
+# IF_FALSE: [RUN-IF-FALSE])
+# ------------------------------------------------------------
+# Check that the C compiler supports an argument
+
+
+
+
+# FLAGS_CXX_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE],
+# IF_FALSE: [RUN-IF-FALSE])
+# ------------------------------------------------------------
+# Check that the C++ compiler supports an argument
+
+
+
+
+# FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE],
+# IF_FALSE: [RUN-IF-FALSE])
+# ------------------------------------------------------------
+# Check that the C and C++ compilers support an argument
+
+
+
+
+# FLAGS_LINKER_CHECK_ARGUMENTS(ARGUMENT: [ARGUMENT], IF_TRUE: [RUN-IF-TRUE],
+# IF_FALSE: [RUN-IF-FALSE])
+# ------------------------------------------------------------
+# Check that the linker support an argument
+
+
+
+
+
+
+# FLAGS_SETUP_GCC6_COMPILER_FLAGS([PREFIX])
+# Arguments:
+# $1 - Optional prefix for each variable defined.
+
+
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+
+
+
+
+cygwin_help() {
+ case $1 in
+ unzip)
+ PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P unzip )"
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ ;;
+ zip)
+ PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P zip )"
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ ;;
+ make)
+ PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P make )"
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ ;;
+ freetype)
+ HELP_MSG="
+The freetype library can now be build during the configure process.
+Download the freetype sources and unpack them into an arbitrary directory:
+
+wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.3.tar.gz
+tar -xzf freetype-2.5.3.tar.gz
+
+Then run configure with '--with-freetype-src=<freetype_src>'. This will
+automatically build the freetype library into '<freetype_src>/lib64' for 64-bit
+builds or into '<freetype_src>/lib32' for 32-bit builds.
+Afterwards you can always use '--with-freetype-include=<freetype_src>/include'
+and '--with-freetype-lib=<freetype_src>/lib32|64' for other builds.
+
+Alternatively you can unpack the sources like this to use the default directory:
+
+tar --one-top-level=$HOME/freetype --strip-components=1 -xzf freetype-2.5.3.tar.gz"
+ ;;
+ esac
+}
+
+msys_help() {
+ PKGHANDLER_COMMAND=""
+}
+
+apt_help() {
+ case $1 in
+ reduced)
+ PKGHANDLER_COMMAND="sudo apt-get install gcc-multilib g++-multilib" ;;
+ devkit)
+ PKGHANDLER_COMMAND="sudo apt-get install build-essential" ;;
+ openjdk)
+ PKGHANDLER_COMMAND="sudo apt-get install openjdk-8-jdk" ;;
+ alsa)
+ PKGHANDLER_COMMAND="sudo apt-get install libasound2-dev" ;;
+ cups)
+ PKGHANDLER_COMMAND="sudo apt-get install libcups2-dev" ;;
+ freetype)
+ PKGHANDLER_COMMAND="sudo apt-get install libfreetype6-dev" ;;
+ ffi)
+ PKGHANDLER_COMMAND="sudo apt-get install libffi-dev" ;;
+ x11)
+ PKGHANDLER_COMMAND="sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev" ;;
+ ccache)
+ PKGHANDLER_COMMAND="sudo apt-get install ccache" ;;
+ dtrace)
+ PKGHANDLER_COMMAND="sudo apt-get install systemtap-sdt-dev" ;;
+ elf)
+ PKGHANDLER_COMMAND="sudo apt-get install libelf-dev" ;;
+ esac
+}
+
+yum_help() {
+ case $1 in
+ devkit)
+ PKGHANDLER_COMMAND="sudo yum groupinstall \"Development Tools\"" ;;
+ openjdk)
+ PKGHANDLER_COMMAND="sudo yum install java-1.8.0-openjdk-devel" ;;
+ alsa)
+ PKGHANDLER_COMMAND="sudo yum install alsa-lib-devel" ;;
+ cups)
+ PKGHANDLER_COMMAND="sudo yum install cups-devel" ;;
+ freetype)
+ PKGHANDLER_COMMAND="sudo yum install freetype-devel" ;;
+ x11)
+ PKGHANDLER_COMMAND="sudo yum install libXtst-devel libXt-devel libXrender-devel libXi-devel" ;;
+ ccache)
+ PKGHANDLER_COMMAND="sudo yum install ccache" ;;
+ elf)
+ PKGHANDLER_COMMAND="sudo yum install elfutils-libelf-devel" ;;
+ esac
+}
+
+brew_help() {
+ case $1 in
+ openjdk)
+ PKGHANDLER_COMMAND="brew cask install java" ;;
+ freetype)
+ PKGHANDLER_COMMAND="brew install freetype" ;;
+ ccache)
+ PKGHANDLER_COMMAND="brew install ccache" ;;
+ esac
+}
+
+port_help() {
+ PKGHANDLER_COMMAND=""
+}
+
+pkgutil_help() {
+ PKGHANDLER_COMMAND=""
+}
+
+pkgadd_help() {
+ PKGHANDLER_COMMAND=""
+}
+
+# This function will check if we're called from the "configure" wrapper while
+# printing --help. If so, we will print out additional information that can
+# only be extracted within the autoconf script, and then exit. This must be
+# called at the very beginning in configure.ac.
+
+
+
+
+
+
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# All valid JVM features, regardless of platform
+VALID_JVM_FEATURES="compiler1 compiler2 zero shark minimal dtrace jvmti jvmci \
+ graal fprof vm-structs jni-check services management all-gcs nmt cds \
+ static-build link-time-opt aot"
+
+# All valid JVM variants
+VALID_JVM_VARIANTS="server client minimal core zero zeroshark custom"
+
+###############################################################################
+# Check if the specified JVM variant should be built. To be used in shell if
+# constructs, like this:
+# if HOTSPOT_CHECK_JVM_VARIANT(server); then
+#
+# Only valid to use after HOTSPOT_SETUP_JVM_VARIANTS has setup variants.
+
+# Definition kept in one line to allow inlining in if statements.
+# Additional [] needed to keep m4 from mangling shell constructs.
+
+
+###############################################################################
+# Check if the specified JVM features are explicitly enabled. To be used in
+# shell if constructs, like this:
+# if HOTSPOT_CHECK_JVM_FEATURE(jvmti); then
+#
+# Only valid to use after HOTSPOT_SETUP_JVM_FEATURES has setup features.
+
+# Definition kept in one line to allow inlining in if statements.
+# Additional [] needed to keep m4 from mangling shell constructs.
+
+
+###############################################################################
+# Check which variants of the JVM that we want to build. Available variants are:
+# server: normal interpreter, and a tiered C1/C2 compiler
+# client: normal interpreter, and C1 (no C2 compiler)
+# minimal: reduced form of client with optional features stripped out
+# core: normal interpreter only, no compiler
+# zero: C++ based interpreter only, no compiler
+# zeroshark: C++ based interpreter, and a llvm-based compiler
+# custom: baseline JVM with no default features
+#
+
+
+###############################################################################
+# Check if dtrace should be enabled and has all prerequisites present.
+#
+
+
+################################################################################
+# Check if AOT should be enabled
+#
+
+
+###############################################################################
+# Set up all JVM features for each JVM variant.
+#
+
+
+###############################################################################
+# Validate JVM features once all setup is complete, including custom setup.
+#
+
+
+################################################################################
+#
+# Specify which sources will be used to build the 64-bit ARM port
+#
+# --with-cpu-port=arm64 will use hotspot/src/cpu/arm
+# --with-cpu-port=aarch64 will use hotspot/src/cpu/aarch64
+#
+
+
+
+################################################################################
+# Check if gtest should be built
+#
+
+
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+###############################################################################
+# Check which variant of the JDK that we want to build.
+# Currently we have:
+# normal: standard edition
+# 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.
+
+
+###############################################################################
+# Set the debug level
+# release: no debug information, all optimizations, no asserts.
+# optimized: no debug information, all optimizations, no asserts, HotSpot target is 'optimized'.
+# fastdebug: debug information (-g), all optimizations, all asserts
+# slowdebug: debug information (-g), no optimizations, all asserts
+
+
+###############################################################################
+#
+# Should we build only OpenJDK even if closed sources are present?
+#
+
+
+
+
+###############################################################################
+#
+# Enable or disable the elliptic curve crypto implementation
+#
+
+
+
+
+################################################################################
+#
+# Gcov coverage data for hotspot
+#
+
+
+################################################################################
+#
+# Static build support. When enabled will generate static
+# libraries instead of shared libraries for all JDK libs.
+#
+
+
+################################################################################
+#
+# jlink options.
+# We always keep packaged modules in JDK image.
+#
+
+
+################################################################################
+#
+# Check if building of the jtreg failure handler should be enabled.
+#
+
+
+################################################################################
+#
+# Enable or disable generation of the classlist at build time
+#
+
+
+#
+# Copyright (c) 2015, 2016, 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.
+#
+
+###############################################################################
+#
+# Setup version numbers
+#
+
+# Verify that a given string represents a valid version number, and assign it
+# to a variable.
+
+# Argument 1: the variable to assign to
+# Argument 2: the value given by the user
+
+
+
+
+#
+# Copyright (c) 2011, 2016, 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.
+#
+
+# Major library component reside in separate files.
+#
+# Copyright (c) 2011, 2015, 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.
+#
+
+################################################################################
+# Setup alsa (Advanced Linux Sound Architecture)
+################################################################################
+
+
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+################################################################################
+# Setup bundled libraries.
+#
+# For libjpeg, giflib, libpng, lcms2 and zlib, the source is present in the
+# OpenJDK repository. Default is to use these libraries as bundled, but they
+# might be replaced by en external version by the user.
+################################################################################
+
+
+################################################################################
+# Setup libjpeg
+################################################################################
+
+
+################################################################################
+# Setup giflib
+################################################################################
+
+
+################################################################################
+# Setup libpng
+################################################################################
+
+
+################################################################################
+# Setup zlib
+################################################################################
+
+
+################################################################################
+# Setup lcms (Little CMS)
+################################################################################
+
+
+#
+# Copyright (c) 2011, 2016, 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.
+#
+
+################################################################################
+# Setup cups (Common Unix Printing System)
+################################################################################
+
+
+#
+# Copyright (c) 2015, 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.
+#
+
+################################################################################
+# Setup libffi (Foreign Function Interface)
+################################################################################
+
+
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+################################################################################
+# Build the freetype lib from source
+################################################################################
+
+
+################################################################################
+# Check if a potential freeype library match is correct and usable
+################################################################################
+
+
+################################################################################
+# Setup freetype (The FreeType2 font rendering library)
+################################################################################
+
+
+#
+# Copyright (c) 2011, 2016, 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.
+#
+
+################################################################################
+# Setup the standard C/C++ runtime libraries.
+#
+# Most importantly, determine if stdc++ should be linked statically or
+# dynamically.
+################################################################################
+
+
+#
+# Copyright (c) 2011, 2015, 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.
+#
+
+################################################################################
+# Setup X11 Windows system
+################################################################################
+
+
+#
+# Copyright (c) 2015, 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.
+#
+
+################################################################################
+# Setup libelf (ELF library)
+################################################################################
+
+
+
+################################################################################
+# Determine which libraries are needed for this configuration
+################################################################################
+
+
+################################################################################
+# Parse library options, and setup needed libraries
+################################################################################
+
+
+################################################################################
+# Setup llvm (Low-Level VM)
+################################################################################
+
+
+################################################################################
+# Setup various libraries, typically small system libraries
+################################################################################
+
+
+################################################################################
+# libstlport.so.1 is needed for running gtest on Solaris. Find it to
+# redistribute it in the test image.
+################################################################################
+
+
+
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# 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.
+
+
+# Support macro for PLATFORM_EXTRACT_TARGET_AND_BUILD.
+# Converts autoconf style OS name to OpenJDK style, into
+# VAR_OS, VAR_OS_TYPE and VAR_OS_ENV.
+
+
+# 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.
+
+
+# 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.
+
+
+# Setup the legacy variables, for controlling the old makefiles.
+#
+
+
+# $1 - Either TARGET or BUILD to setup the variables for.
+
+
+
+
+
+
+#%%% Build and target systems %%%
+
+
+
+
+# Support macro for PLATFORM_SETUP_OPENJDK_TARGET_BITS.
+# Add -mX to various FLAGS variables.
+
+
+
+
+
+
+#
+# Copyright (c) 2011, 2016, 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.
+#
+
+
+
+
+
+
+
+################################################################################
+# Define a mechanism for importing extra prebuilt modules
+#
+
+
+
+#
+# Copyright (c) 2011, 2016, 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 is responsible for detecting, verifying and setting up the
+# toolchain, i.e. the compiler, linker and related utilities. It will setup
+# proper paths to the binaries, but it will not setup any flags.
+#
+# The binaries used is determined by the toolchain type, which is the family of
+# compilers and related tools that are used.
+########################################################################
+
+
+# All valid toolchains, regardless of platform (used by help.m4)
+VALID_TOOLCHAINS_all="gcc clang solstudio xlc microsoft"
+
+# These toolchains are valid on different platforms
+VALID_TOOLCHAINS_linux="gcc clang"
+VALID_TOOLCHAINS_solaris="solstudio"
+VALID_TOOLCHAINS_macosx="gcc clang"
+VALID_TOOLCHAINS_aix="xlc"
+VALID_TOOLCHAINS_windows="microsoft"
+
+# Toolchain descriptions
+TOOLCHAIN_DESCRIPTION_clang="clang/LLVM"
+TOOLCHAIN_DESCRIPTION_gcc="GNU Compiler Collection"
+TOOLCHAIN_DESCRIPTION_microsoft="Microsoft Visual Studio"
+TOOLCHAIN_DESCRIPTION_solstudio="Oracle Solaris Studio"
+TOOLCHAIN_DESCRIPTION_xlc="IBM XL C/C++"
+
+# Minimum supported versions, empty means unspecified
+TOOLCHAIN_MINIMUM_VERSION_clang="3.2"
+TOOLCHAIN_MINIMUM_VERSION_gcc="4.3"
+TOOLCHAIN_MINIMUM_VERSION_microsoft="16.00.30319.01" # VS2010
+TOOLCHAIN_MINIMUM_VERSION_solstudio="5.13"
+TOOLCHAIN_MINIMUM_VERSION_xlc=""
+
+# Prepare the system so that TOOLCHAIN_CHECK_COMPILER_VERSION can be called.
+# Must have CC_VERSION_NUMBER and CXX_VERSION_NUMBER.
+# $1 - optional variable prefix for compiler and version variables (BUILD_)
+# $2 - optional variable prefix for comparable variable (OPENJDK_BUILD_)
+
+
+# Check if the configured compiler (C and C++) is of a specific version or
+# newer. TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS must have been called before.
+#
+# Arguments:
+# VERSION: The version string to check against the found version
+# IF_AT_LEAST: block to run if the compiler is at least this version (>=)
+# IF_OLDER_THAN: block to run if the compiler is older than this version (<)
+# PREFIX: Optional variable prefix for compiler to compare version for (OPENJDK_BUILD_)
+
+
+
+
+# Setup a number of variables describing how native output files are
+# named on this platform/toolchain.
+
+
+# Determine which toolchain type to use, and make sure it is valid for this
+# platform. Setup various information about the selected toolchain.
+
+
+# Before we start detecting the toolchain executables, we might need some
+# special setup, e.g. additional paths etc.
+
+
+# Restore path, etc
+
+
+# Check if a compiler is of the toolchain type we expect, and save the version
+# information from it. If the compiler does not match the expected type,
+# this function will abort using AC_MSG_ERROR. If it matches, the version will
+# be stored in CC_VERSION_NUMBER/CXX_VERSION_NUMBER (as a dotted number), and
+# the full version string in CC_VERSION_STRING/CXX_VERSION_STRING.
+#
+# $1 = compiler to test (CC or CXX)
+# $2 = human readable name of compiler (C or C++)
+
+
+# Try to locate the given C or C++ compiler in the path, or otherwise.
+#
+# $1 = compiler to test (CC or CXX)
+# $2 = human readable name of compiler (C or C++)
+# $3 = compiler name to search for
+
+
+# Detect the core components of the toolchain, i.e. the compilers (CC and CXX),
+# preprocessor (CPP and CXXCPP), the linker (LD), the assembler (AS) and the
+# archiver (AR). Verify that the compilers are correct according to the
+# toolchain type.
+
+
+# Setup additional tools that is considered a part of the toolchain, but not the
+# core part. Many of these are highly platform-specific and do not exist,
+# and/or are not needed on all platforms.
+
+
+# Setup the build tools (i.e, the compiler and linker used to build programs
+# that should be run on the build platform, not the target platform, as a build
+# helper). Since the non-cross-compile case uses the normal, target compilers
+# for this, we can only do this after these have been setup.
+
+
+# Do some additional checks on the detected tools.
+
+
+# Setup the JTReg Regression Test Harness.
+
+
+#
+# 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.
+#
+
+################################################################################
+# The order of these defines the priority by which we try to find them.
+VALID_VS_VERSIONS="2013 2012 2010"
+
+VS_DESCRIPTION_2010="Microsoft Visual Studio 2010"
+VS_VERSION_INTERNAL_2010=100
+VS_MSVCR_2010=msvcr100.dll
+# We don't use msvcp on Visual Studio 2010
+#VS_MSVCP_2010=msvcp100.dll
+VS_ENVVAR_2010="VS100COMNTOOLS"
+VS_VS_INSTALLDIR_2010="Microsoft Visual Studio 10.0"
+VS_SDK_INSTALLDIR_2010="Microsoft SDKs/Windows/v7.1"
+VS_VS_PLATFORM_NAME_2010="v100"
+VS_SDK_PLATFORM_NAME_2010="Windows7.1SDK"
+
+VS_DESCRIPTION_2012="Microsoft Visual Studio 2012"
+VS_VERSION_INTERNAL_2012=110
+VS_MSVCR_2012=msvcr110.dll
+VS_MSVCP_2012=msvcp110.dll
+VS_ENVVAR_2012="VS110COMNTOOLS"
+VS_VS_INSTALLDIR_2012="Microsoft Visual Studio 11.0"
+VS_SDK_INSTALLDIR_2012=
+VS_VS_PLATFORM_NAME_2012="v110"
+VS_SDK_PLATFORM_NAME_2012=
+
+VS_DESCRIPTION_2013="Microsoft Visual Studio 2013"
+VS_VERSION_INTERNAL_2013=120
+VS_MSVCR_2013=msvcr120.dll
+VS_MSVCP_2013=msvcp120.dll
+VS_ENVVAR_2013="VS120COMNTOOLS"
+VS_VS_INSTALLDIR_2013="Microsoft Visual Studio 12.0"
+VS_SDK_INSTALLDIR_2013=
+VS_VS_PLATFORM_NAME_2013="v120"
+VS_SDK_PLATFORM_NAME_2013=
+
+################################################################################
+
+
+
+################################################################################
+
+
+
+################################################################################
+# Finds the bat or cmd file in Visual Studio or the SDK that sets up a proper
+# build environment and assigns it to VS_ENV_CMD
+
+
+################################################################################
+
+
+
+################################################################################
+# Check if the VS env variables were setup prior to running configure.
+# If not, then find vcvarsall.bat and run it automatically, and integrate
+# the set env variables into the spec file.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# This line needs to be here, verbatim, after all includes and the dummy hook
+# definitions. It is replaced with custom functionality when building
+# custom sources.
+#CUSTOM_AUTOCONF_INCLUDE
+
+# Do not change or remove the following line, it is needed for consistency checks:
+DATE_WHEN_GENERATED=1496926402
+
+###############################################################################
+#
+# Initialization / Boot-strapping
+#
+# The bootstrapping process needs to solve the "chicken or the egg" problem,
+# thus it jumps back and forth, each time gaining something needed later on.
+#
+###############################################################################
+
+# If we are requested to print additional help, do that and then exit.
+# This must be the very first call.
+
+ if test "x$CONFIGURE_PRINT_ADDITIONAL_HELP" != x; then
+
+ # Print available toolchains
+ $PRINTF "The following toolchains are available as arguments to --with-toolchain-type.\n"
+ $PRINTF "Which are valid to use depends on the build platform.\n"
+ for toolchain in $VALID_TOOLCHAINS_all; do
+ # Use indirect variable referencing
+ toolchain_var_name=TOOLCHAIN_DESCRIPTION_$toolchain
+ TOOLCHAIN_DESCRIPTION=${!toolchain_var_name}
+ $PRINTF " %-10s %s\n" $toolchain "$TOOLCHAIN_DESCRIPTION"
+ done
+ $PRINTF "\n"
+
+ # Print available jvm features
+ $PRINTF "The following JVM features are available as arguments to --with-jvm-features.\n"
+ $PRINTF "Which are valid to use depends on the target platform.\n "
+ $PRINTF "%s " $VALID_JVM_FEATURES
+ $PRINTF "\n"
+
+ # And now exit directly
+ exit 0
+ fi
+
+
+# Basic initialization that must happen first of all in the normal process.
+
+ # Save the original command line. This is passed to us by the wrapper configure script.
+
+ # Save the path variable before it gets changed
+ ORIGINAL_PATH="$PATH"
+
+ DATE_WHEN_CONFIGURED=`LANG=C date`
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Configuration created at $DATE_WHEN_CONFIGURED." >&5
+$as_echo "$as_me: Configuration created at $DATE_WHEN_CONFIGURED." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: configure script generated at timestamp $DATE_WHEN_GENERATED." >&5
+$as_echo "$as_me: configure script generated at timestamp $DATE_WHEN_GENERATED." >&6;}
+
+
+ # Start with tools that do not need have cross compilation support
+ # and can be expected to be found in the default PATH. These tools are
+ # used by configure.
+
+ # First are all the simple required tools.
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${BASENAME+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in basename
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BASENAME+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BASENAME in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BASENAME="$BASENAME" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BASENAME="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BASENAME=$ac_cv_path_BASENAME
+if test -n "$BASENAME"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASENAME" >&5
+$as_echo "$BASENAME" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BASENAME" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !BASENAME! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!BASENAME!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xBASENAME" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of BASENAME from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of BASENAME from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in basename
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BASENAME+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BASENAME in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BASENAME="$BASENAME" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BASENAME="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BASENAME=$ac_cv_path_BASENAME
+if test -n "$BASENAME"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASENAME" >&5
+$as_echo "$BASENAME" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BASENAME" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$BASENAME" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool BASENAME= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool BASENAME= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BASENAME" >&5
+$as_echo_n "checking for BASENAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$BASENAME"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool BASENAME=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool BASENAME=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BASENAME+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BASENAME in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BASENAME="$BASENAME" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BASENAME="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BASENAME=$ac_cv_path_BASENAME
+if test -n "$BASENAME"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASENAME" >&5
+$as_echo "$BASENAME" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$BASENAME" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool BASENAME=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool BASENAME=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BASENAME" >&5
+$as_echo_n "checking for BASENAME... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool BASENAME=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$BASENAME" = x; then
+ as_fn_error $? "Could not find required tool for BASENAME" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${BASH+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in bash
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BASH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BASH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BASH="$BASH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BASH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BASH=$ac_cv_path_BASH
+if test -n "$BASH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASH" >&5
+$as_echo "$BASH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BASH" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !BASH! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!BASH!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xBASH" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of BASH from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of BASH from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in bash
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BASH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BASH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BASH="$BASH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BASH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BASH=$ac_cv_path_BASH
+if test -n "$BASH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASH" >&5
+$as_echo "$BASH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BASH" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$BASH" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool BASH= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool BASH= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BASH" >&5
+$as_echo_n "checking for BASH... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$BASH"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool BASH=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool BASH=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BASH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BASH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BASH="$BASH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BASH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BASH=$ac_cv_path_BASH
+if test -n "$BASH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASH" >&5
+$as_echo "$BASH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$BASH" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool BASH=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool BASH=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BASH" >&5
+$as_echo_n "checking for BASH... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool BASH=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$BASH" = x; then
+ as_fn_error $? "Could not find required tool for BASH" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${CAT+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in cat
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CAT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CAT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CAT="$CAT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CAT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CAT=$ac_cv_path_CAT
+if test -n "$CAT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CAT" >&5
+$as_echo "$CAT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CAT" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !CAT! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CAT!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xCAT" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CAT from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of CAT from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in cat
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CAT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CAT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CAT="$CAT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CAT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CAT=$ac_cv_path_CAT
+if test -n "$CAT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CAT" >&5
+$as_echo "$CAT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CAT" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$CAT" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool CAT= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool CAT= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAT" >&5
+$as_echo_n "checking for CAT... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$CAT"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CAT=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool CAT=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CAT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CAT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CAT="$CAT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CAT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CAT=$ac_cv_path_CAT
+if test -n "$CAT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CAT" >&5
+$as_echo "$CAT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$CAT" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CAT=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool CAT=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAT" >&5
+$as_echo_n "checking for CAT... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool CAT=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$CAT" = x; then
+ as_fn_error $? "Could not find required tool for CAT" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${CHMOD+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in chmod
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CHMOD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CHMOD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CHMOD="$CHMOD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CHMOD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CHMOD=$ac_cv_path_CHMOD
+if test -n "$CHMOD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHMOD" >&5
+$as_echo "$CHMOD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CHMOD" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !CHMOD! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CHMOD!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xCHMOD" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CHMOD from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of CHMOD from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in chmod
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CHMOD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CHMOD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CHMOD="$CHMOD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CHMOD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CHMOD=$ac_cv_path_CHMOD
+if test -n "$CHMOD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHMOD" >&5
+$as_echo "$CHMOD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CHMOD" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$CHMOD" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool CHMOD= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool CHMOD= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CHMOD" >&5
+$as_echo_n "checking for CHMOD... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$CHMOD"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CHMOD=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool CHMOD=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CHMOD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CHMOD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CHMOD="$CHMOD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CHMOD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CHMOD=$ac_cv_path_CHMOD
+if test -n "$CHMOD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHMOD" >&5
+$as_echo "$CHMOD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$CHMOD" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CHMOD=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool CHMOD=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CHMOD" >&5
+$as_echo_n "checking for CHMOD... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool CHMOD=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$CHMOD" = x; then
+ as_fn_error $? "Could not find required tool for CHMOD" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${CMP+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in cmp
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CMP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CMP="$CMP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CMP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CMP=$ac_cv_path_CMP
+if test -n "$CMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CMP" >&5
+$as_echo "$CMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CMP" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !CMP! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CMP!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xCMP" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CMP from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of CMP from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in cmp
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CMP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CMP="$CMP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CMP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CMP=$ac_cv_path_CMP
+if test -n "$CMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CMP" >&5
+$as_echo "$CMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CMP" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$CMP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool CMP= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool CMP= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CMP" >&5
+$as_echo_n "checking for CMP... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$CMP"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CMP=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool CMP=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CMP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CMP="$CMP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CMP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CMP=$ac_cv_path_CMP
+if test -n "$CMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CMP" >&5
+$as_echo "$CMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$CMP" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CMP=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool CMP=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CMP" >&5
+$as_echo_n "checking for CMP... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool CMP=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$CMP" = x; then
+ as_fn_error $? "Could not find required tool for CMP" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${COMM+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in comm
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_COMM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $COMM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_COMM="$COMM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_COMM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+COMM=$ac_cv_path_COMM
+if test -n "$COMM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COMM" >&5
+$as_echo "$COMM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$COMM" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !COMM! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!COMM!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xCOMM" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of COMM from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of COMM from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in comm
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_COMM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $COMM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_COMM="$COMM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_COMM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+COMM=$ac_cv_path_COMM
+if test -n "$COMM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COMM" >&5
+$as_echo "$COMM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$COMM" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$COMM" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool COMM= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool COMM= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for COMM" >&5
+$as_echo_n "checking for COMM... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$COMM"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool COMM=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool COMM=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_COMM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $COMM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_COMM="$COMM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_COMM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+COMM=$ac_cv_path_COMM
+if test -n "$COMM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COMM" >&5
+$as_echo "$COMM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$COMM" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool COMM=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool COMM=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for COMM" >&5
+$as_echo_n "checking for COMM... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool COMM=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$COMM" = x; then
+ as_fn_error $? "Could not find required tool for COMM" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${CP+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in cp
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CP="$CP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CP=$ac_cv_path_CP
+if test -n "$CP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CP" >&5
+$as_echo "$CP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CP" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !CP! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CP!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xCP" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CP from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of CP from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in cp
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CP="$CP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CP=$ac_cv_path_CP
+if test -n "$CP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CP" >&5
+$as_echo "$CP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CP" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$CP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool CP= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool CP= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CP" >&5
+$as_echo_n "checking for CP... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$CP"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CP=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool CP=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CP="$CP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CP=$ac_cv_path_CP
+if test -n "$CP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CP" >&5
+$as_echo "$CP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$CP" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CP=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool CP=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CP" >&5
+$as_echo_n "checking for CP... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool CP=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$CP" = x; then
+ as_fn_error $? "Could not find required tool for CP" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${CUT+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in cut
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CUT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CUT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CUT="$CUT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CUT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CUT=$ac_cv_path_CUT
+if test -n "$CUT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUT" >&5
+$as_echo "$CUT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CUT" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !CUT! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CUT!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xCUT" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CUT from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of CUT from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in cut
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CUT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CUT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CUT="$CUT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CUT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CUT=$ac_cv_path_CUT
+if test -n "$CUT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUT" >&5
+$as_echo "$CUT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CUT" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$CUT" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool CUT= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool CUT= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CUT" >&5
+$as_echo_n "checking for CUT... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$CUT"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CUT=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool CUT=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CUT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CUT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CUT="$CUT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CUT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CUT=$ac_cv_path_CUT
+if test -n "$CUT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUT" >&5
+$as_echo "$CUT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$CUT" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CUT=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool CUT=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CUT" >&5
+$as_echo_n "checking for CUT... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool CUT=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$CUT" = x; then
+ as_fn_error $? "Could not find required tool for CUT" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${DATE+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in date
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DATE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DATE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DATE="$DATE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DATE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DATE=$ac_cv_path_DATE
+if test -n "$DATE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DATE" >&5
+$as_echo "$DATE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DATE" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !DATE! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!DATE!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xDATE" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of DATE from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of DATE from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in date
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DATE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DATE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DATE="$DATE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DATE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DATE=$ac_cv_path_DATE
+if test -n "$DATE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DATE" >&5
+$as_echo "$DATE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DATE" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$DATE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool DATE= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool DATE= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DATE" >&5
+$as_echo_n "checking for DATE... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$DATE"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool DATE=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool DATE=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DATE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DATE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DATE="$DATE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DATE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DATE=$ac_cv_path_DATE
+if test -n "$DATE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DATE" >&5
+$as_echo "$DATE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$DATE" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool DATE=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool DATE=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DATE" >&5
+$as_echo_n "checking for DATE... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool DATE=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$DATE" = x; then
+ as_fn_error $? "Could not find required tool for DATE" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${DIFF+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in gdiff diff
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DIFF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DIFF in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DIFF="$DIFF" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DIFF="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DIFF=$ac_cv_path_DIFF
+if test -n "$DIFF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DIFF" >&5
+$as_echo "$DIFF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DIFF" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !DIFF! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!DIFF!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xDIFF" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of DIFF from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of DIFF from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in gdiff diff
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DIFF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DIFF in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DIFF="$DIFF" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DIFF="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DIFF=$ac_cv_path_DIFF
+if test -n "$DIFF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DIFF" >&5
+$as_echo "$DIFF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DIFF" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$DIFF" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool DIFF= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool DIFF= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DIFF" >&5
+$as_echo_n "checking for DIFF... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$DIFF"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool DIFF=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool DIFF=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DIFF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DIFF in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DIFF="$DIFF" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DIFF="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DIFF=$ac_cv_path_DIFF
+if test -n "$DIFF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DIFF" >&5
+$as_echo "$DIFF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$DIFF" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool DIFF=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool DIFF=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DIFF" >&5
+$as_echo_n "checking for DIFF... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool DIFF=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$DIFF" = x; then
+ as_fn_error $? "Could not find required tool for DIFF" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${DIRNAME+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in dirname
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DIRNAME+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DIRNAME in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DIRNAME="$DIRNAME" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DIRNAME="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DIRNAME=$ac_cv_path_DIRNAME
+if test -n "$DIRNAME"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DIRNAME" >&5
+$as_echo "$DIRNAME" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DIRNAME" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !DIRNAME! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!DIRNAME!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xDIRNAME" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of DIRNAME from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of DIRNAME from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in dirname
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DIRNAME+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DIRNAME in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DIRNAME="$DIRNAME" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DIRNAME="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DIRNAME=$ac_cv_path_DIRNAME
+if test -n "$DIRNAME"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DIRNAME" >&5
+$as_echo "$DIRNAME" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DIRNAME" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$DIRNAME" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool DIRNAME= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool DIRNAME= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DIRNAME" >&5
+$as_echo_n "checking for DIRNAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$DIRNAME"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool DIRNAME=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool DIRNAME=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DIRNAME+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DIRNAME in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DIRNAME="$DIRNAME" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DIRNAME="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DIRNAME=$ac_cv_path_DIRNAME
+if test -n "$DIRNAME"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DIRNAME" >&5
+$as_echo "$DIRNAME" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$DIRNAME" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool DIRNAME=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool DIRNAME=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DIRNAME" >&5
+$as_echo_n "checking for DIRNAME... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool DIRNAME=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$DIRNAME" = x; then
+ as_fn_error $? "Could not find required tool for DIRNAME" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${ECHO+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in echo
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ECHO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ECHO in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ECHO="$ECHO" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ECHO="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ECHO=$ac_cv_path_ECHO
+if test -n "$ECHO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ECHO" >&5
+$as_echo "$ECHO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ECHO" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !ECHO! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!ECHO!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xECHO" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of ECHO from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of ECHO from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in echo
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ECHO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ECHO in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ECHO="$ECHO" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ECHO="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ECHO=$ac_cv_path_ECHO
+if test -n "$ECHO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ECHO" >&5
+$as_echo "$ECHO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ECHO" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$ECHO" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool ECHO= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool ECHO= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ECHO" >&5
+$as_echo_n "checking for ECHO... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$ECHO"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool ECHO=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool ECHO=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ECHO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ECHO in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ECHO="$ECHO" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ECHO="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ECHO=$ac_cv_path_ECHO
+if test -n "$ECHO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ECHO" >&5
+$as_echo "$ECHO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$ECHO" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool ECHO=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool ECHO=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ECHO" >&5
+$as_echo_n "checking for ECHO... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool ECHO=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$ECHO" = x; then
+ as_fn_error $? "Could not find required tool for ECHO" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${EXPR+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in expr
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_EXPR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $EXPR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_EXPR="$EXPR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_EXPR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+EXPR=$ac_cv_path_EXPR
+if test -n "$EXPR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXPR" >&5
+$as_echo "$EXPR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$EXPR" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !EXPR! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!EXPR!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xEXPR" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of EXPR from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of EXPR from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in expr
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_EXPR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $EXPR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_EXPR="$EXPR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_EXPR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+EXPR=$ac_cv_path_EXPR
+if test -n "$EXPR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXPR" >&5
+$as_echo "$EXPR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$EXPR" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$EXPR" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool EXPR= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool EXPR= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EXPR" >&5
+$as_echo_n "checking for EXPR... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$EXPR"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool EXPR=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool EXPR=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_EXPR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $EXPR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_EXPR="$EXPR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_EXPR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+EXPR=$ac_cv_path_EXPR
+if test -n "$EXPR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXPR" >&5
+$as_echo "$EXPR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$EXPR" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool EXPR=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool EXPR=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EXPR" >&5
+$as_echo_n "checking for EXPR... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool EXPR=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$EXPR" = x; then
+ as_fn_error $? "Could not find required tool for EXPR" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${FILE+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in file
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_FILE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $FILE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_FILE="$FILE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_FILE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+FILE=$ac_cv_path_FILE
+if test -n "$FILE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FILE" >&5
+$as_echo "$FILE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$FILE" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !FILE! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!FILE!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xFILE" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of FILE from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of FILE from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in file
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_FILE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $FILE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_FILE="$FILE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_FILE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+FILE=$ac_cv_path_FILE
+if test -n "$FILE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FILE" >&5
+$as_echo "$FILE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$FILE" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$FILE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool FILE= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool FILE= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FILE" >&5
+$as_echo_n "checking for FILE... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$FILE"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool FILE=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool FILE=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_FILE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $FILE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_FILE="$FILE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_FILE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+FILE=$ac_cv_path_FILE
+if test -n "$FILE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FILE" >&5
+$as_echo "$FILE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$FILE" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool FILE=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool FILE=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FILE" >&5
+$as_echo_n "checking for FILE... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool FILE=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$FILE" = x; then
+ as_fn_error $? "Could not find required tool for FILE" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${FIND+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in find
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_FIND+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $FIND in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_FIND="$FIND" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_FIND="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+FIND=$ac_cv_path_FIND
+if test -n "$FIND"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FIND" >&5
+$as_echo "$FIND" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$FIND" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !FIND! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!FIND!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xFIND" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of FIND from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of FIND from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in find
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_FIND+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $FIND in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_FIND="$FIND" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_FIND="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+FIND=$ac_cv_path_FIND
+if test -n "$FIND"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FIND" >&5
+$as_echo "$FIND" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$FIND" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$FIND" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool FIND= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool FIND= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FIND" >&5
+$as_echo_n "checking for FIND... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$FIND"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool FIND=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool FIND=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_FIND+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $FIND in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_FIND="$FIND" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_FIND="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+FIND=$ac_cv_path_FIND
+if test -n "$FIND"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FIND" >&5
+$as_echo "$FIND" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$FIND" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool FIND=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool FIND=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FIND" >&5
+$as_echo_n "checking for FIND... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool FIND=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$FIND" = x; then
+ as_fn_error $? "Could not find required tool for FIND" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${HEAD+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in head
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_HEAD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $HEAD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_HEAD="$HEAD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_HEAD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+HEAD=$ac_cv_path_HEAD
+if test -n "$HEAD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HEAD" >&5
+$as_echo "$HEAD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$HEAD" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !HEAD! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!HEAD!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xHEAD" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of HEAD from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of HEAD from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in head
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_HEAD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $HEAD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_HEAD="$HEAD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_HEAD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+HEAD=$ac_cv_path_HEAD
+if test -n "$HEAD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HEAD" >&5
+$as_echo "$HEAD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$HEAD" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$HEAD" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool HEAD= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool HEAD= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HEAD" >&5
+$as_echo_n "checking for HEAD... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$HEAD"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool HEAD=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool HEAD=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_HEAD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $HEAD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_HEAD="$HEAD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_HEAD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+HEAD=$ac_cv_path_HEAD
+if test -n "$HEAD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HEAD" >&5
+$as_echo "$HEAD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$HEAD" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool HEAD=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool HEAD=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HEAD" >&5
+$as_echo_n "checking for HEAD... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool HEAD=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$HEAD" = x; then
+ as_fn_error $? "Could not find required tool for HEAD" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${GUNZIP+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in gunzip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GUNZIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GUNZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GUNZIP="$GUNZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GUNZIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GUNZIP=$ac_cv_path_GUNZIP
+if test -n "$GUNZIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GUNZIP" >&5
+$as_echo "$GUNZIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$GUNZIP" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !GUNZIP! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!GUNZIP!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xGUNZIP" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of GUNZIP from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of GUNZIP from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in gunzip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GUNZIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GUNZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GUNZIP="$GUNZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GUNZIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GUNZIP=$ac_cv_path_GUNZIP
+if test -n "$GUNZIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GUNZIP" >&5
+$as_echo "$GUNZIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$GUNZIP" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$GUNZIP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool GUNZIP= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool GUNZIP= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUNZIP" >&5
+$as_echo_n "checking for GUNZIP... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$GUNZIP"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool GUNZIP=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool GUNZIP=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GUNZIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GUNZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GUNZIP="$GUNZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GUNZIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GUNZIP=$ac_cv_path_GUNZIP
+if test -n "$GUNZIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GUNZIP" >&5
+$as_echo "$GUNZIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$GUNZIP" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool GUNZIP=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool GUNZIP=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUNZIP" >&5
+$as_echo_n "checking for GUNZIP... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool GUNZIP=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$GUNZIP" = x; then
+ as_fn_error $? "Could not find required tool for GUNZIP" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${GZIP+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in pigz gzip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GZIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GZIP=$ac_cv_path_GZIP
+if test -n "$GZIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5
+$as_echo "$GZIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$GZIP" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !GZIP! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!GZIP!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xGZIP" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of GZIP from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of GZIP from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in pigz gzip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GZIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GZIP=$ac_cv_path_GZIP
+if test -n "$GZIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5
+$as_echo "$GZIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$GZIP" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$GZIP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool GZIP= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool GZIP= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GZIP" >&5
+$as_echo_n "checking for GZIP... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$GZIP"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool GZIP=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool GZIP=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GZIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GZIP=$ac_cv_path_GZIP
+if test -n "$GZIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5
+$as_echo "$GZIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$GZIP" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool GZIP=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool GZIP=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GZIP" >&5
+$as_echo_n "checking for GZIP... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool GZIP=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$GZIP" = x; then
+ as_fn_error $? "Could not find required tool for GZIP" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${LN+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in ln
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_LN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $LN in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_LN="$LN" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_LN="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+LN=$ac_cv_path_LN
+if test -n "$LN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LN" >&5
+$as_echo "$LN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LN" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !LN! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!LN!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xLN" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of LN from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of LN from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in ln
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_LN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $LN in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_LN="$LN" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_LN="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+LN=$ac_cv_path_LN
+if test -n "$LN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LN" >&5
+$as_echo "$LN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LN" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$LN" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool LN= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool LN= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LN" >&5
+$as_echo_n "checking for LN... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$LN"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool LN=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool LN=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_LN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $LN in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_LN="$LN" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_LN="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+LN=$ac_cv_path_LN
+if test -n "$LN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LN" >&5
+$as_echo "$LN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$LN" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool LN=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool LN=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LN" >&5
+$as_echo_n "checking for LN... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool LN=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$LN" = x; then
+ as_fn_error $? "Could not find required tool for LN" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${LS+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in ls
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_LS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $LS in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_LS="$LS" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_LS="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+LS=$ac_cv_path_LS
+if test -n "$LS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LS" >&5
+$as_echo "$LS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LS" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !LS! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!LS!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xLS" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of LS from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of LS from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in ls
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_LS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $LS in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_LS="$LS" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_LS="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+LS=$ac_cv_path_LS
+if test -n "$LS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LS" >&5
+$as_echo "$LS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LS" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$LS" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool LS= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool LS= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LS" >&5
+$as_echo_n "checking for LS... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$LS"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool LS=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool LS=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_LS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $LS in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_LS="$LS" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_LS="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+LS=$ac_cv_path_LS
+if test -n "$LS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LS" >&5
+$as_echo "$LS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$LS" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool LS=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool LS=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LS" >&5
+$as_echo_n "checking for LS... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool LS=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$LS" = x; then
+ as_fn_error $? "Could not find required tool for LS" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${MKDIR+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in mkdir
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MKDIR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MKDIR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MKDIR="$MKDIR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_MKDIR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MKDIR=$ac_cv_path_MKDIR
+if test -n "$MKDIR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR" >&5
+$as_echo "$MKDIR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$MKDIR" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !MKDIR! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!MKDIR!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xMKDIR" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of MKDIR from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of MKDIR from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in mkdir
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MKDIR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MKDIR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MKDIR="$MKDIR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_MKDIR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MKDIR=$ac_cv_path_MKDIR
+if test -n "$MKDIR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR" >&5
+$as_echo "$MKDIR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$MKDIR" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$MKDIR" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool MKDIR= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool MKDIR= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MKDIR" >&5
+$as_echo_n "checking for MKDIR... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$MKDIR"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool MKDIR=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool MKDIR=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MKDIR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MKDIR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MKDIR="$MKDIR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_MKDIR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MKDIR=$ac_cv_path_MKDIR
+if test -n "$MKDIR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR" >&5
+$as_echo "$MKDIR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$MKDIR" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool MKDIR=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool MKDIR=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MKDIR" >&5
+$as_echo_n "checking for MKDIR... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool MKDIR=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$MKDIR" = x; then
+ as_fn_error $? "Could not find required tool for MKDIR" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${MKTEMP+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in mktemp
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MKTEMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MKTEMP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MKTEMP="$MKTEMP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_MKTEMP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MKTEMP=$ac_cv_path_MKTEMP
+if test -n "$MKTEMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKTEMP" >&5
+$as_echo "$MKTEMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$MKTEMP" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !MKTEMP! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!MKTEMP!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xMKTEMP" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of MKTEMP from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of MKTEMP from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in mktemp
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MKTEMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MKTEMP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MKTEMP="$MKTEMP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_MKTEMP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MKTEMP=$ac_cv_path_MKTEMP
+if test -n "$MKTEMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKTEMP" >&5
+$as_echo "$MKTEMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$MKTEMP" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$MKTEMP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool MKTEMP= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool MKTEMP= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MKTEMP" >&5
+$as_echo_n "checking for MKTEMP... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$MKTEMP"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool MKTEMP=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool MKTEMP=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MKTEMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MKTEMP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MKTEMP="$MKTEMP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_MKTEMP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MKTEMP=$ac_cv_path_MKTEMP
+if test -n "$MKTEMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKTEMP" >&5
+$as_echo "$MKTEMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$MKTEMP" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool MKTEMP=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool MKTEMP=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MKTEMP" >&5
+$as_echo_n "checking for MKTEMP... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool MKTEMP=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$MKTEMP" = x; then
+ as_fn_error $? "Could not find required tool for MKTEMP" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${MV+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in mv
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MV+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MV in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MV="$MV" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_MV="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MV=$ac_cv_path_MV
+if test -n "$MV"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MV" >&5
+$as_echo "$MV" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$MV" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !MV! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!MV!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xMV" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of MV from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of MV from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in mv
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MV+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MV in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MV="$MV" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_MV="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MV=$ac_cv_path_MV
+if test -n "$MV"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MV" >&5
+$as_echo "$MV" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$MV" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$MV" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool MV= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool MV= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MV" >&5
+$as_echo_n "checking for MV... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$MV"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool MV=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool MV=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MV+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MV in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MV="$MV" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_MV="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MV=$ac_cv_path_MV
+if test -n "$MV"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MV" >&5
+$as_echo "$MV" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$MV" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool MV=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool MV=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MV" >&5
+$as_echo_n "checking for MV... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool MV=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$MV" = x; then
+ as_fn_error $? "Could not find required tool for MV" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${NAWK+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in nawk gawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_NAWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $NAWK in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_NAWK="$NAWK" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_NAWK="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+NAWK=$ac_cv_path_NAWK
+if test -n "$NAWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NAWK" >&5
+$as_echo "$NAWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$NAWK" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !NAWK! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!NAWK!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xNAWK" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of NAWK from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of NAWK from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in nawk gawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_NAWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $NAWK in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_NAWK="$NAWK" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_NAWK="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+NAWK=$ac_cv_path_NAWK
+if test -n "$NAWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NAWK" >&5
+$as_echo "$NAWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$NAWK" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$NAWK" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool NAWK= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool NAWK= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NAWK" >&5
+$as_echo_n "checking for NAWK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$NAWK"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool NAWK=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool NAWK=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_NAWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $NAWK in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_NAWK="$NAWK" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_NAWK="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+NAWK=$ac_cv_path_NAWK
+if test -n "$NAWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NAWK" >&5
+$as_echo "$NAWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$NAWK" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool NAWK=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool NAWK=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NAWK" >&5
+$as_echo_n "checking for NAWK... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool NAWK=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$NAWK" = x; then
+ as_fn_error $? "Could not find required tool for NAWK" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${PRINTF+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in printf
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PRINTF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PRINTF in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PRINTF="$PRINTF" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PRINTF="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PRINTF=$ac_cv_path_PRINTF
+if test -n "$PRINTF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRINTF" >&5
+$as_echo "$PRINTF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$PRINTF" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !PRINTF! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!PRINTF!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xPRINTF" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of PRINTF from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of PRINTF from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in printf
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PRINTF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PRINTF in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PRINTF="$PRINTF" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PRINTF="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PRINTF=$ac_cv_path_PRINTF
+if test -n "$PRINTF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRINTF" >&5
+$as_echo "$PRINTF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$PRINTF" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$PRINTF" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool PRINTF= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool PRINTF= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PRINTF" >&5
+$as_echo_n "checking for PRINTF... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$PRINTF"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool PRINTF=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool PRINTF=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PRINTF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PRINTF in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PRINTF="$PRINTF" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PRINTF="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PRINTF=$ac_cv_path_PRINTF
+if test -n "$PRINTF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PRINTF" >&5
+$as_echo "$PRINTF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$PRINTF" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool PRINTF=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool PRINTF=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PRINTF" >&5
+$as_echo_n "checking for PRINTF... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool PRINTF=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$PRINTF" = x; then
+ as_fn_error $? "Could not find required tool for PRINTF" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${RM+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in rm
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_RM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $RM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_RM="$RM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+RM=$ac_cv_path_RM
+if test -n "$RM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5
+$as_echo "$RM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$RM" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !RM! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!RM!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xRM" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of RM from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of RM from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in rm
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_RM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $RM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_RM="$RM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+RM=$ac_cv_path_RM
+if test -n "$RM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5
+$as_echo "$RM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$RM" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$RM" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool RM= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool RM= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RM" >&5
+$as_echo_n "checking for RM... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$RM"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool RM=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool RM=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_RM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $RM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_RM="$RM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_RM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+RM=$ac_cv_path_RM
+if test -n "$RM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5
+$as_echo "$RM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$RM" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool RM=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool RM=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RM" >&5
+$as_echo_n "checking for RM... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool RM=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$RM" = x; then
+ as_fn_error $? "Could not find required tool for RM" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${RMDIR+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in rmdir
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_RMDIR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $RMDIR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_RMDIR="$RMDIR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_RMDIR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+RMDIR=$ac_cv_path_RMDIR
+if test -n "$RMDIR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RMDIR" >&5
+$as_echo "$RMDIR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$RMDIR" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !RMDIR! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!RMDIR!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xRMDIR" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of RMDIR from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of RMDIR from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in rmdir
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_RMDIR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $RMDIR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_RMDIR="$RMDIR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_RMDIR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+RMDIR=$ac_cv_path_RMDIR
+if test -n "$RMDIR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RMDIR" >&5
+$as_echo "$RMDIR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$RMDIR" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$RMDIR" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool RMDIR= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool RMDIR= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RMDIR" >&5
+$as_echo_n "checking for RMDIR... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$RMDIR"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool RMDIR=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool RMDIR=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_RMDIR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $RMDIR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_RMDIR="$RMDIR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_RMDIR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+RMDIR=$ac_cv_path_RMDIR
+if test -n "$RMDIR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RMDIR" >&5
+$as_echo "$RMDIR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$RMDIR" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool RMDIR=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool RMDIR=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RMDIR" >&5
+$as_echo_n "checking for RMDIR... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool RMDIR=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$RMDIR" = x; then
+ as_fn_error $? "Could not find required tool for RMDIR" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${SH+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in sh
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_SH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $SH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_SH="$SH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_SH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+SH=$ac_cv_path_SH
+if test -n "$SH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SH" >&5
+$as_echo "$SH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$SH" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !SH! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!SH!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xSH" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of SH from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of SH from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in sh
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_SH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $SH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_SH="$SH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_SH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+SH=$ac_cv_path_SH
+if test -n "$SH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SH" >&5
+$as_echo "$SH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$SH" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$SH" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool SH= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool SH= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SH" >&5
+$as_echo_n "checking for SH... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$SH"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool SH=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool SH=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_SH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $SH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_SH="$SH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_SH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+SH=$ac_cv_path_SH
+if test -n "$SH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SH" >&5
+$as_echo "$SH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$SH" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool SH=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool SH=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SH" >&5
+$as_echo_n "checking for SH... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool SH=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$SH" = x; then
+ as_fn_error $? "Could not find required tool for SH" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${SORT+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in sort
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_SORT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $SORT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_SORT="$SORT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_SORT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+SORT=$ac_cv_path_SORT
+if test -n "$SORT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SORT" >&5
+$as_echo "$SORT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$SORT" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !SORT! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!SORT!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xSORT" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of SORT from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of SORT from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in sort
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_SORT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $SORT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_SORT="$SORT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_SORT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+SORT=$ac_cv_path_SORT
+if test -n "$SORT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SORT" >&5
+$as_echo "$SORT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$SORT" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$SORT" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool SORT= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool SORT= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SORT" >&5
+$as_echo_n "checking for SORT... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$SORT"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool SORT=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool SORT=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_SORT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $SORT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_SORT="$SORT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_SORT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+SORT=$ac_cv_path_SORT
+if test -n "$SORT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SORT" >&5
+$as_echo "$SORT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$SORT" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool SORT=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool SORT=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SORT" >&5
+$as_echo_n "checking for SORT... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool SORT=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$SORT" = x; then
+ as_fn_error $? "Could not find required tool for SORT" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${TAIL+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in tail
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TAIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TAIL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TAIL="$TAIL" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TAIL="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TAIL=$ac_cv_path_TAIL
+if test -n "$TAIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAIL" >&5
+$as_echo "$TAIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$TAIL" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !TAIL! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!TAIL!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xTAIL" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of TAIL from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of TAIL from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in tail
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TAIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TAIL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TAIL="$TAIL" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TAIL="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TAIL=$ac_cv_path_TAIL
+if test -n "$TAIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAIL" >&5
+$as_echo "$TAIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$TAIL" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$TAIL" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool TAIL= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool TAIL= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TAIL" >&5
+$as_echo_n "checking for TAIL... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$TAIL"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool TAIL=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool TAIL=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TAIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TAIL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TAIL="$TAIL" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TAIL="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TAIL=$ac_cv_path_TAIL
+if test -n "$TAIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAIL" >&5
+$as_echo "$TAIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$TAIL" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool TAIL=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool TAIL=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TAIL" >&5
+$as_echo_n "checking for TAIL... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool TAIL=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$TAIL" = x; then
+ as_fn_error $? "Could not find required tool for TAIL" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${TAR+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in gtar tar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TAR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TAR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TAR="$TAR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TAR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TAR=$ac_cv_path_TAR
+if test -n "$TAR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAR" >&5
+$as_echo "$TAR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$TAR" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !TAR! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!TAR!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xTAR" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of TAR from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of TAR from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in gtar tar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TAR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TAR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TAR="$TAR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TAR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TAR=$ac_cv_path_TAR
+if test -n "$TAR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAR" >&5
+$as_echo "$TAR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$TAR" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$TAR" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool TAR= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool TAR= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TAR" >&5
+$as_echo_n "checking for TAR... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$TAR"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool TAR=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool TAR=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TAR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TAR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TAR="$TAR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TAR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TAR=$ac_cv_path_TAR
+if test -n "$TAR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAR" >&5
+$as_echo "$TAR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$TAR" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool TAR=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool TAR=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TAR" >&5
+$as_echo_n "checking for TAR... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool TAR=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$TAR" = x; then
+ as_fn_error $? "Could not find required tool for TAR" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${TEE+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in tee
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TEE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TEE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TEE="$TEE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TEE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TEE=$ac_cv_path_TEE
+if test -n "$TEE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEE" >&5
+$as_echo "$TEE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$TEE" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !TEE! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!TEE!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xTEE" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of TEE from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of TEE from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in tee
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TEE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TEE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TEE="$TEE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TEE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TEE=$ac_cv_path_TEE
+if test -n "$TEE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEE" >&5
+$as_echo "$TEE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$TEE" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$TEE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool TEE= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool TEE= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TEE" >&5
+$as_echo_n "checking for TEE... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$TEE"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool TEE=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool TEE=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TEE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TEE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TEE="$TEE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TEE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TEE=$ac_cv_path_TEE
+if test -n "$TEE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEE" >&5
+$as_echo "$TEE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$TEE" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool TEE=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool TEE=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TEE" >&5
+$as_echo_n "checking for TEE... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool TEE=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$TEE" = x; then
+ as_fn_error $? "Could not find required tool for TEE" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${TOUCH+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in touch
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TOUCH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TOUCH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TOUCH="$TOUCH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TOUCH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TOUCH=$ac_cv_path_TOUCH
+if test -n "$TOUCH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TOUCH" >&5
+$as_echo "$TOUCH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$TOUCH" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !TOUCH! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!TOUCH!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xTOUCH" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of TOUCH from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of TOUCH from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in touch
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TOUCH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TOUCH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TOUCH="$TOUCH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TOUCH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TOUCH=$ac_cv_path_TOUCH
+if test -n "$TOUCH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TOUCH" >&5
+$as_echo "$TOUCH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$TOUCH" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$TOUCH" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool TOUCH= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool TOUCH= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TOUCH" >&5
+$as_echo_n "checking for TOUCH... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$TOUCH"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool TOUCH=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool TOUCH=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TOUCH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TOUCH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TOUCH="$TOUCH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TOUCH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TOUCH=$ac_cv_path_TOUCH
+if test -n "$TOUCH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TOUCH" >&5
+$as_echo "$TOUCH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$TOUCH" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool TOUCH=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool TOUCH=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TOUCH" >&5
+$as_echo_n "checking for TOUCH... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool TOUCH=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$TOUCH" = x; then
+ as_fn_error $? "Could not find required tool for TOUCH" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${TR+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in tr
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TR="$TR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TR=$ac_cv_path_TR
+if test -n "$TR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TR" >&5
+$as_echo "$TR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$TR" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !TR! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!TR!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xTR" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of TR from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of TR from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in tr
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TR="$TR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TR=$ac_cv_path_TR
+if test -n "$TR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TR" >&5
+$as_echo "$TR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$TR" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$TR" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool TR= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool TR= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TR" >&5
+$as_echo_n "checking for TR... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$TR"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool TR=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool TR=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TR="$TR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TR=$ac_cv_path_TR
+if test -n "$TR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TR" >&5
+$as_echo "$TR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$TR" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool TR=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool TR=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TR" >&5
+$as_echo_n "checking for TR... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool TR=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$TR" = x; then
+ as_fn_error $? "Could not find required tool for TR" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${UNAME+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in uname
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_UNAME+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $UNAME in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_UNAME="$UNAME" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_UNAME="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+UNAME=$ac_cv_path_UNAME
+if test -n "$UNAME"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNAME" >&5
+$as_echo "$UNAME" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$UNAME" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !UNAME! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!UNAME!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xUNAME" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of UNAME from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of UNAME from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in uname
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_UNAME+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $UNAME in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_UNAME="$UNAME" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_UNAME="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+UNAME=$ac_cv_path_UNAME
+if test -n "$UNAME"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNAME" >&5
+$as_echo "$UNAME" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$UNAME" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$UNAME" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool UNAME= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool UNAME= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for UNAME" >&5
+$as_echo_n "checking for UNAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$UNAME"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool UNAME=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool UNAME=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_UNAME+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $UNAME in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_UNAME="$UNAME" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_UNAME="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+UNAME=$ac_cv_path_UNAME
+if test -n "$UNAME"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNAME" >&5
+$as_echo "$UNAME" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$UNAME" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool UNAME=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool UNAME=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for UNAME" >&5
+$as_echo_n "checking for UNAME... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool UNAME=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$UNAME" = x; then
+ as_fn_error $? "Could not find required tool for UNAME" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${UNIQ+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in uniq
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_UNIQ+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $UNIQ in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_UNIQ="$UNIQ" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_UNIQ="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+UNIQ=$ac_cv_path_UNIQ
+if test -n "$UNIQ"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNIQ" >&5
+$as_echo "$UNIQ" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$UNIQ" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !UNIQ! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!UNIQ!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xUNIQ" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of UNIQ from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of UNIQ from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in uniq
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_UNIQ+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $UNIQ in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_UNIQ="$UNIQ" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_UNIQ="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+UNIQ=$ac_cv_path_UNIQ
+if test -n "$UNIQ"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNIQ" >&5
+$as_echo "$UNIQ" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$UNIQ" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$UNIQ" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool UNIQ= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool UNIQ= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for UNIQ" >&5
+$as_echo_n "checking for UNIQ... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$UNIQ"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool UNIQ=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool UNIQ=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_UNIQ+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $UNIQ in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_UNIQ="$UNIQ" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_UNIQ="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+UNIQ=$ac_cv_path_UNIQ
+if test -n "$UNIQ"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNIQ" >&5
+$as_echo "$UNIQ" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$UNIQ" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool UNIQ=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool UNIQ=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for UNIQ" >&5
+$as_echo_n "checking for UNIQ... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool UNIQ=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$UNIQ" = x; then
+ as_fn_error $? "Could not find required tool for UNIQ" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${WC+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in wc
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_WC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $WC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_WC="$WC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_WC="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+WC=$ac_cv_path_WC
+if test -n "$WC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WC" >&5
+$as_echo "$WC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$WC" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !WC! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!WC!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xWC" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of WC from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of WC from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in wc
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_WC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $WC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_WC="$WC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_WC="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+WC=$ac_cv_path_WC
+if test -n "$WC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WC" >&5
+$as_echo "$WC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$WC" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$WC" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool WC= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool WC= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WC" >&5
+$as_echo_n "checking for WC... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$WC"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool WC=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool WC=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_WC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $WC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_WC="$WC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_WC="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+WC=$ac_cv_path_WC
+if test -n "$WC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WC" >&5
+$as_echo "$WC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$WC" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool WC=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool WC=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WC" >&5
+$as_echo_n "checking for WC... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool WC=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$WC" = x; then
+ as_fn_error $? "Could not find required tool for WC" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${WHICH+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in which
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_WHICH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $WHICH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_WHICH="$WHICH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_WHICH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+WHICH=$ac_cv_path_WHICH
+if test -n "$WHICH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WHICH" >&5
+$as_echo "$WHICH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$WHICH" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !WHICH! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!WHICH!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xWHICH" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of WHICH from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of WHICH from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in which
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_WHICH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $WHICH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_WHICH="$WHICH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_WHICH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+WHICH=$ac_cv_path_WHICH
+if test -n "$WHICH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WHICH" >&5
+$as_echo "$WHICH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$WHICH" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$WHICH" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool WHICH= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool WHICH= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WHICH" >&5
+$as_echo_n "checking for WHICH... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$WHICH"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool WHICH=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool WHICH=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_WHICH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $WHICH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_WHICH="$WHICH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_WHICH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+WHICH=$ac_cv_path_WHICH
+if test -n "$WHICH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WHICH" >&5
+$as_echo "$WHICH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$WHICH" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool WHICH=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool WHICH=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WHICH" >&5
+$as_echo_n "checking for WHICH... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool WHICH=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$WHICH" = x; then
+ as_fn_error $? "Could not find required tool for WHICH" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${XARGS+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in xargs
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XARGS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $XARGS in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XARGS="$XARGS" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_XARGS="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+XARGS=$ac_cv_path_XARGS
+if test -n "$XARGS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XARGS" >&5
+$as_echo "$XARGS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$XARGS" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !XARGS! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!XARGS!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xXARGS" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of XARGS from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of XARGS from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in xargs
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XARGS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $XARGS in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XARGS="$XARGS" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_XARGS="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+XARGS=$ac_cv_path_XARGS
+if test -n "$XARGS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XARGS" >&5
+$as_echo "$XARGS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$XARGS" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$XARGS" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool XARGS= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool XARGS= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XARGS" >&5
+$as_echo_n "checking for XARGS... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$XARGS"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool XARGS=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool XARGS=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XARGS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $XARGS in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XARGS="$XARGS" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_XARGS="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+XARGS=$ac_cv_path_XARGS
+if test -n "$XARGS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XARGS" >&5
+$as_echo "$XARGS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$XARGS" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool XARGS=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool XARGS=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XARGS" >&5
+$as_echo_n "checking for XARGS... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool XARGS=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$XARGS" = x; then
+ as_fn_error $? "Could not find required tool for XARGS" "$LINENO" 5
+ fi
+
+
+
+ # Then required tools that require some special treatment.
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${AWK+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !AWK! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!AWK!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xAWK" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of AWK from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of AWK from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$AWK" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool AWK= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool AWK= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AWK" >&5
+$as_echo_n "checking for AWK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$AWK"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool AWK=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool AWK=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $AWK in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_AWK="$AWK" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_AWK="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+AWK=$ac_cv_path_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$AWK" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool AWK=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool AWK=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AWK" >&5
+$as_echo_n "checking for AWK... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool AWK=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ if test "x$AWK" = x; then
+ as_fn_error $? "Could not find required tool for AWK" "$LINENO" 5
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${GREP+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !GREP! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!GREP!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xGREP" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of GREP from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of GREP from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$GREP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool GREP= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool GREP= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GREP" >&5
+$as_echo_n "checking for GREP... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$GREP"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool GREP=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool GREP=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GREP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GREP="$GREP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GREP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GREP=$ac_cv_path_GREP
+if test -n "$GREP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GREP" >&5
+$as_echo "$GREP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$GREP" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool GREP=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool GREP=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GREP" >&5
+$as_echo_n "checking for GREP... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool GREP=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ if test "x$GREP" = x; then
+ as_fn_error $? "Could not find required tool for GREP" "$LINENO" 5
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${EGREP+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !EGREP! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!EGREP!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xEGREP" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of EGREP from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of EGREP from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$EGREP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool EGREP= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool EGREP= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EGREP" >&5
+$as_echo_n "checking for EGREP... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$EGREP"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool EGREP=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool EGREP=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $EGREP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_EGREP="$EGREP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_EGREP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+EGREP=$ac_cv_path_EGREP
+if test -n "$EGREP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EGREP" >&5
+$as_echo "$EGREP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$EGREP" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool EGREP=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool EGREP=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EGREP" >&5
+$as_echo_n "checking for EGREP... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool EGREP=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ if test "x$EGREP" = x; then
+ as_fn_error $? "Could not find required tool for EGREP" "$LINENO" 5
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${FGREP+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+ then ac_cv_path_FGREP="$GREP -F"
+ else
+ if test -z "$FGREP"; then
+ ac_path_FGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in fgrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_FGREP" || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+ # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'FGREP' >> "conftest.nl"
+ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_FGREP="$ac_path_FGREP"
+ ac_path_FGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_FGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_FGREP"; then
+ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_FGREP=$FGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !FGREP! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!FGREP!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xFGREP" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of FGREP from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of FGREP from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+ then ac_cv_path_FGREP="$GREP -F"
+ else
+ if test -z "$FGREP"; then
+ ac_path_FGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in fgrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_FGREP" || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+ # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'FGREP' >> "conftest.nl"
+ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_FGREP="$ac_path_FGREP"
+ ac_path_FGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_FGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_FGREP"; then
+ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_FGREP=$FGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
+
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$FGREP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool FGREP= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool FGREP= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FGREP" >&5
+$as_echo_n "checking for FGREP... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$FGREP"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool FGREP=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool FGREP=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $FGREP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_FGREP="$FGREP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_FGREP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+FGREP=$ac_cv_path_FGREP
+if test -n "$FGREP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FGREP" >&5
+$as_echo "$FGREP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$FGREP" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool FGREP=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool FGREP=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FGREP" >&5
+$as_echo_n "checking for FGREP... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool FGREP=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ if test "x$FGREP" = x; then
+ as_fn_error $? "Could not find required tool for FGREP" "$LINENO" 5
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${SED+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ { ac_script=; unset ac_script;}
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ fi
+else
+ ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !SED! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!SED!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xSED" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of SED from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of SED from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ { ac_script=; unset ac_script;}
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+ fi
+else
+ ac_cv_path_SED=$SED
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$SED" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool SED= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool SED= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SED" >&5
+$as_echo_n "checking for SED... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$SED"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool SED=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool SED=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $SED in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_SED="$SED" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_SED="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+SED=$ac_cv_path_SED
+if test -n "$SED"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SED" >&5
+$as_echo "$SED" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$SED" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool SED=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool SED=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SED" >&5
+$as_echo_n "checking for SED... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool SED=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ if test "x$SED" = x; then
+ as_fn_error $? "Could not find required tool for SED" "$LINENO" 5
+ fi
+
+
+
+ # Always force rm.
+ RM="$RM -f"
+
+ # pwd behaves differently on various platforms and some don't support the -L flag.
+ # Always use the bash builtin pwd to get uniform behavior.
+ THEPWDCMD=pwd
+
+ # These are not required on all platforms
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${CYGPATH+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in cygpath
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CYGPATH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CYGPATH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CYGPATH="$CYGPATH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CYGPATH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CYGPATH=$ac_cv_path_CYGPATH
+if test -n "$CYGPATH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5
+$as_echo "$CYGPATH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CYGPATH" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !CYGPATH! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CYGPATH!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xCYGPATH" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CYGPATH from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of CYGPATH from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in cygpath
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CYGPATH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CYGPATH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CYGPATH="$CYGPATH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CYGPATH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CYGPATH=$ac_cv_path_CYGPATH
+if test -n "$CYGPATH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5
+$as_echo "$CYGPATH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CYGPATH" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$CYGPATH" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool CYGPATH= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool CYGPATH= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CYGPATH" >&5
+$as_echo_n "checking for CYGPATH... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$CYGPATH"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CYGPATH=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool CYGPATH=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CYGPATH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CYGPATH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CYGPATH="$CYGPATH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CYGPATH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CYGPATH=$ac_cv_path_CYGPATH
+if test -n "$CYGPATH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5
+$as_echo "$CYGPATH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$CYGPATH" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CYGPATH=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool CYGPATH=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CYGPATH" >&5
+$as_echo_n "checking for CYGPATH... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool CYGPATH=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${READLINK+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in greadlink readlink
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_READLINK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $READLINK in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_READLINK="$READLINK" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_READLINK="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+READLINK=$ac_cv_path_READLINK
+if test -n "$READLINK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READLINK" >&5
+$as_echo "$READLINK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$READLINK" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !READLINK! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!READLINK!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xREADLINK" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of READLINK from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of READLINK from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in greadlink readlink
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_READLINK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $READLINK in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_READLINK="$READLINK" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_READLINK="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+READLINK=$ac_cv_path_READLINK
+if test -n "$READLINK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READLINK" >&5
+$as_echo "$READLINK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$READLINK" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$READLINK" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool READLINK= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool READLINK= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for READLINK" >&5
+$as_echo_n "checking for READLINK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$READLINK"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool READLINK=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool READLINK=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_READLINK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $READLINK in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_READLINK="$READLINK" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_READLINK="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+READLINK=$ac_cv_path_READLINK
+if test -n "$READLINK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READLINK" >&5
+$as_echo "$READLINK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$READLINK" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool READLINK=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool READLINK=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for READLINK" >&5
+$as_echo_n "checking for READLINK... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool READLINK=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${DF+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in df
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DF in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DF="$DF" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DF="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DF=$ac_cv_path_DF
+if test -n "$DF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DF" >&5
+$as_echo "$DF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DF" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !DF! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!DF!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xDF" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of DF from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of DF from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in df
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DF in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DF="$DF" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DF="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DF=$ac_cv_path_DF
+if test -n "$DF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DF" >&5
+$as_echo "$DF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DF" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$DF" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool DF= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool DF= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DF" >&5
+$as_echo_n "checking for DF... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$DF"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool DF=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool DF=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DF in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DF="$DF" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DF="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DF=$ac_cv_path_DF
+if test -n "$DF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DF" >&5
+$as_echo "$DF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$DF" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool DF=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool DF=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DF" >&5
+$as_echo_n "checking for DF... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool DF=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${CPIO+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in cpio bsdcpio
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CPIO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CPIO in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CPIO="$CPIO" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CPIO="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CPIO=$ac_cv_path_CPIO
+if test -n "$CPIO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPIO" >&5
+$as_echo "$CPIO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CPIO" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !CPIO! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CPIO!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xCPIO" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CPIO from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of CPIO from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in cpio bsdcpio
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CPIO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CPIO in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CPIO="$CPIO" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CPIO="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CPIO=$ac_cv_path_CPIO
+if test -n "$CPIO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPIO" >&5
+$as_echo "$CPIO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CPIO" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$CPIO" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool CPIO= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool CPIO= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CPIO" >&5
+$as_echo_n "checking for CPIO... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$CPIO"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CPIO=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool CPIO=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CPIO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CPIO in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CPIO="$CPIO" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CPIO="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CPIO=$ac_cv_path_CPIO
+if test -n "$CPIO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPIO" >&5
+$as_echo "$CPIO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$CPIO" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CPIO=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool CPIO=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CPIO" >&5
+$as_echo_n "checking for CPIO... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool CPIO=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${NICE+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in nice
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_NICE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $NICE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_NICE="$NICE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_NICE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+NICE=$ac_cv_path_NICE
+if test -n "$NICE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NICE" >&5
+$as_echo "$NICE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$NICE" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !NICE! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!NICE!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xNICE" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of NICE from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of NICE from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in nice
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_NICE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $NICE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_NICE="$NICE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_NICE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+NICE=$ac_cv_path_NICE
+if test -n "$NICE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NICE" >&5
+$as_echo "$NICE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$NICE" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$NICE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool NICE= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool NICE= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NICE" >&5
+$as_echo_n "checking for NICE... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$NICE"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool NICE=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool NICE=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_NICE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $NICE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_NICE="$NICE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_NICE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+NICE=$ac_cv_path_NICE
+if test -n "$NICE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NICE" >&5
+$as_echo "$NICE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$NICE" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool NICE=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool NICE=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NICE" >&5
+$as_echo_n "checking for NICE... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool NICE=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${PANDOC+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in pandoc
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PANDOC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PANDOC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PANDOC="$PANDOC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PANDOC="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PANDOC=$ac_cv_path_PANDOC
+if test -n "$PANDOC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PANDOC" >&5
+$as_echo "$PANDOC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$PANDOC" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !PANDOC! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!PANDOC!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xPANDOC" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of PANDOC from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of PANDOC from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in pandoc
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PANDOC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PANDOC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PANDOC="$PANDOC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PANDOC="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PANDOC=$ac_cv_path_PANDOC
+if test -n "$PANDOC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PANDOC" >&5
+$as_echo "$PANDOC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$PANDOC" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$PANDOC" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool PANDOC= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool PANDOC= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PANDOC" >&5
+$as_echo_n "checking for PANDOC... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$PANDOC"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool PANDOC=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool PANDOC=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PANDOC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PANDOC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PANDOC="$PANDOC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PANDOC="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PANDOC=$ac_cv_path_PANDOC
+if test -n "$PANDOC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PANDOC" >&5
+$as_echo "$PANDOC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$PANDOC" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool PANDOC=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool PANDOC=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PANDOC" >&5
+$as_echo_n "checking for PANDOC... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool PANDOC=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+
+# Now we can determine OpenJDK build and target platforms. This is required to
+# have early on.
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if ${ac_cv_target+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$target_alias" = x; then
+ ac_cv_target=$ac_cv_host
+else
+ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+ test "$program_prefix$program_suffix$program_transform_name" = \
+ NONENONEs,x,x, &&
+ program_prefix=${target_alias}-
+
+ # Figure out the build and target systems. # Note that in autoconf terminology, "build" is obvious, but "target"
+ # is confusing; it assumes you are cross-compiling a cross-compiler (!) and "target" is thus the target of the
+ # product you're building. The target of this build is called "host". Since this is confusing to most people, we
+ # have not adopted that system, but use "target" as the platform we are building for. In some places though we need
+ # to use the configure naming style.
+
+
+
+
+
+ # 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"
+
+
+
+ # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
+
+ case "$build_os" in
+ *linux*)
+ VAR_OS=linux
+ VAR_OS_TYPE=unix
+ ;;
+ *solaris*)
+ VAR_OS=solaris
+ VAR_OS_TYPE=unix
+ ;;
+ *darwin*)
+ VAR_OS=macosx
+ VAR_OS_TYPE=unix
+ ;;
+ *bsd*)
+ VAR_OS=bsd
+ VAR_OS_TYPE=unix
+ ;;
+ *cygwin*)
+ VAR_OS=windows
+ VAR_OS_ENV=windows.cygwin
+ ;;
+ *mingw*)
+ VAR_OS=windows
+ VAR_OS_ENV=windows.msys
+ ;;
+ *aix*)
+ VAR_OS=aix
+ VAR_OS_TYPE=unix
+ ;;
+ *)
+ as_fn_error $? "unsupported operating system $build_os" "$LINENO" 5
+ ;;
+ esac
+
+
+ # First argument is the cpu name from the trip/quad
+ case "$build_cpu" in
+ x86_64)
+ VAR_CPU=x86_64
+ VAR_CPU_ARCH=x86
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=little
+ ;;
+ i?86)
+ VAR_CPU=x86
+ VAR_CPU_ARCH=x86
+ VAR_CPU_BITS=32
+ VAR_CPU_ENDIAN=little
+ ;;
+ arm*)
+ VAR_CPU=arm
+ VAR_CPU_ARCH=arm
+ VAR_CPU_BITS=32
+ VAR_CPU_ENDIAN=little
+ ;;
+ aarch64)
+ VAR_CPU=aarch64
+ VAR_CPU_ARCH=aarch64
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=little
+ ;;
+ powerpc)
+ VAR_CPU=ppc
+ VAR_CPU_ARCH=ppc
+ VAR_CPU_BITS=32
+ VAR_CPU_ENDIAN=big
+ ;;
+ powerpc64)
+ VAR_CPU=ppc64
+ VAR_CPU_ARCH=ppc
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=big
+ ;;
+ powerpc64le)
+ VAR_CPU=ppc64le
+ VAR_CPU_ARCH=ppc
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=little
+ ;;
+ s390)
+ VAR_CPU=s390
+ VAR_CPU_ARCH=s390
+ VAR_CPU_BITS=32
+ VAR_CPU_ENDIAN=big
+ ;;
+ s390x)
+ VAR_CPU=s390x
+ VAR_CPU_ARCH=s390
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=big
+ ;;
+ sparc)
+ VAR_CPU=sparc
+ VAR_CPU_ARCH=sparc
+ VAR_CPU_BITS=32
+ VAR_CPU_ENDIAN=big
+ ;;
+ sparcv9|sparc64)
+ VAR_CPU=sparcv9
+ VAR_CPU_ARCH=sparc
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=big
+ ;;
+ *)
+ as_fn_error $? "unsupported cpu $build_cpu" "$LINENO" 5
+ ;;
+ esac
+
+ # ..and setup our own variables. (Do this explicitly to facilitate searching)
+ OPENJDK_BUILD_OS="$VAR_OS"
+ if test "x$VAR_OS_TYPE" != x; then
+ OPENJDK_BUILD_OS_TYPE="$VAR_OS_TYPE"
+ else
+ OPENJDK_BUILD_OS_TYPE="$VAR_OS"
+ fi
+ if test "x$VAR_OS_ENV" != x; then
+ OPENJDK_BUILD_OS_ENV="$VAR_OS_ENV"
+ else
+ OPENJDK_BUILD_OS_ENV="$VAR_OS"
+ fi
+ 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"
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking openjdk-build os-cpu" >&5
+$as_echo_n "checking openjdk-build os-cpu... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU" >&5
+$as_echo "$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU" >&6; }
+
+ # Convert the autoconf OS/CPU value to our own data, into the VAR_OS/CPU variables.
+
+ case "$host_os" in
+ *linux*)
+ VAR_OS=linux
+ VAR_OS_TYPE=unix
+ ;;
+ *solaris*)
+ VAR_OS=solaris
+ VAR_OS_TYPE=unix
+ ;;
+ *darwin*)
+ VAR_OS=macosx
+ VAR_OS_TYPE=unix
+ ;;
+ *bsd*)
+ VAR_OS=bsd
+ VAR_OS_TYPE=unix
+ ;;
+ *cygwin*)
+ VAR_OS=windows
+ VAR_OS_ENV=windows.cygwin
+ ;;
+ *mingw*)
+ VAR_OS=windows
+ VAR_OS_ENV=windows.msys
+ ;;
+ *aix*)
+ VAR_OS=aix
+ VAR_OS_TYPE=unix
+ ;;
+ *)
+ as_fn_error $? "unsupported operating system $host_os" "$LINENO" 5
+ ;;
+ esac
+
+
+ # First argument is the cpu name from the trip/quad
+ case "$host_cpu" in
+ x86_64)
+ VAR_CPU=x86_64
+ VAR_CPU_ARCH=x86
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=little
+ ;;
+ i?86)
+ VAR_CPU=x86
+ VAR_CPU_ARCH=x86
+ VAR_CPU_BITS=32
+ VAR_CPU_ENDIAN=little
+ ;;
+ arm*)
+ VAR_CPU=arm
+ VAR_CPU_ARCH=arm
+ VAR_CPU_BITS=32
+ VAR_CPU_ENDIAN=little
+ ;;
+ aarch64)
+ VAR_CPU=aarch64
+ VAR_CPU_ARCH=aarch64
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=little
+ ;;
+ powerpc)
+ VAR_CPU=ppc
+ VAR_CPU_ARCH=ppc
+ VAR_CPU_BITS=32
+ VAR_CPU_ENDIAN=big
+ ;;
+ powerpc64)
+ VAR_CPU=ppc64
+ VAR_CPU_ARCH=ppc
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=big
+ ;;
+ powerpc64le)
+ VAR_CPU=ppc64le
+ VAR_CPU_ARCH=ppc
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=little
+ ;;
+ s390)
+ VAR_CPU=s390
+ VAR_CPU_ARCH=s390
+ VAR_CPU_BITS=32
+ VAR_CPU_ENDIAN=big
+ ;;
+ s390x)
+ VAR_CPU=s390x
+ VAR_CPU_ARCH=s390
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=big
+ ;;
+ sparc)
+ VAR_CPU=sparc
+ VAR_CPU_ARCH=sparc
+ VAR_CPU_BITS=32
+ VAR_CPU_ENDIAN=big
+ ;;
+ sparcv9|sparc64)
+ VAR_CPU=sparcv9
+ VAR_CPU_ARCH=sparc
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=big
+ ;;
+ *)
+ as_fn_error $? "unsupported cpu $host_cpu" "$LINENO" 5
+ ;;
+ esac
+
+ # ... and setup our own variables. (Do this explicitly to facilitate searching)
+ OPENJDK_TARGET_OS="$VAR_OS"
+ if test "x$VAR_OS_TYPE" != x; then
+ OPENJDK_TARGET_OS_TYPE="$VAR_OS_TYPE"
+ else
+ OPENJDK_TARGET_OS_TYPE="$VAR_OS"
+ fi
+ if test "x$VAR_OS_ENV" != x; then
+ OPENJDK_TARGET_OS_ENV="$VAR_OS_ENV"
+ else
+ OPENJDK_TARGET_OS_ENV="$VAR_OS"
+ fi
+ 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"
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking openjdk-target os-cpu" >&5
+$as_echo_n "checking openjdk-target os-cpu... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" >&5
+$as_echo "$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" >&6; }
+
+
+
+# Check whether --with-target-bits was given.
+if test "${with_target_bits+set}" = set; then :
+ withval=$with_target_bits;
+fi
+
+
+ # 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
+ as_fn_error $? "It is not possible to combine --with-target-bits=X and proper cross-compilation. Choose either." "$LINENO" 5
+ 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
+ as_fn_error $? "Reduced build (--with-target-bits=32) is only supported on x86_64 and sparcv9" "$LINENO" 5
+ fi
+ elif test "x$with_target_bits" = x64 && test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ as_fn_error $? "It is not possible to use --with-target-bits=64 on a 32 bit system. Use proper cross-compilation instead." "$LINENO" 5
+ elif test "x$with_target_bits" = "x$OPENJDK_TARGET_CPU_BITS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: --with-target-bits are set to build platform address size; argument has no meaning" >&5
+$as_echo "$as_me: --with-target-bits are set to build platform address size; argument has no meaning" >&6;}
+ else
+ as_fn_error $? "--with-target-bits can only be 32 or 64, you specified $with_target_bits!" "$LINENO" 5
+ fi
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking compilation type" >&5
+$as_echo_n "checking compilation type... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $COMPILE_TYPE" >&5
+$as_echo "$COMPILE_TYPE" >&6; }
+
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ OPENJDK_MODULE_TARGET_OS_NAME="macos"
+ else
+ OPENJDK_MODULE_TARGET_OS_NAME="$OPENJDK_TARGET_OS"
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ OPENJDK_MODULE_TARGET_OS_ARCH="amd64"
+ else
+ OPENJDK_MODULE_TARGET_OS_ARCH="$OPENJDK_TARGET_CPU"
+ fi
+
+ OPENJDK_MODULE_TARGET_PLATFORM="${OPENJDK_MODULE_TARGET_OS_NAME}-${OPENJDK_MODULE_TARGET_OS_ARCH}"
+
+
+
+ if test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
+ RELEASE_FILE_OS_NAME=SunOS
+ fi
+ if test "x$OPENJDK_TARGET_OS" = "xlinux"; then
+ RELEASE_FILE_OS_NAME=Linux
+ fi
+ if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
+ RELEASE_FILE_OS_NAME=Windows
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ RELEASE_FILE_OS_NAME="Darwin"
+ fi
+ if test "x$OPENJDK_TARGET_OS" = "xaix"; then
+ RELEASE_FILE_OS_NAME="AIX"
+ fi
+ RELEASE_FILE_OS_ARCH=${OPENJDK_TARGET_CPU}
+
+
+
+
+
+
+ # 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
+
+
+ # 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
+
+
+ # 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
+
+
+ # 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
+
+
+ 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
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ OPENJDK_TARGET_OS_EXPORT_DIR=macosx
+ else
+ OPENJDK_TARGET_OS_EXPORT_DIR=${OPENJDK_TARGET_OS_TYPE}
+ fi
+
+
+ # The new version string in JDK 9 also defined new naming of OS and ARCH for bundles
+ # Macosx is osx and x86_64 is x64
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ OPENJDK_TARGET_OS_BUNDLE="osx"
+ else
+ OPENJDK_TARGET_OS_BUNDLE="$OPENJDK_TARGET_OS"
+ fi
+ if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ OPENJDK_TARGET_CPU_BUNDLE="x64"
+ else
+ OPENJDK_TARGET_CPU_BUNDLE="$OPENJDK_TARGET_CPU"
+ fi
+ OPENJDK_TARGET_BUNDLE_PLATFORM="${OPENJDK_TARGET_OS_BUNDLE}-${OPENJDK_TARGET_CPU_BUNDLE}"
+
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
+ # unpack200.exe. This variable is used in
+ # FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER.
+ if test "x$OPENJDK_TARGET_OS" = xlinux || test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ OPENJDK_TARGET_ADD_LP64="-D_LP64=1"
+ fi
+ fi
+
+ 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
+
+
+ # Convert openjdk platform names to hotspot names
+
+ HOTSPOT_TARGET_OS=${OPENJDK_TARGET_OS}
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ HOTSPOT_TARGET_OS=bsd
+ fi
+
+
+ HOTSPOT_TARGET_OS_TYPE=${OPENJDK_TARGET_OS_TYPE}
+ if test "x$OPENJDK_TARGET_OS_TYPE" = xunix; then
+ HOTSPOT_TARGET_OS_TYPE=posix
+ fi
+
+
+ HOTSPOT_TARGET_CPU=${OPENJDK_TARGET_CPU}
+ if test "x$OPENJDK_TARGET_CPU" = xx86; then
+ HOTSPOT_TARGET_CPU=x86_32
+ elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
+ HOTSPOT_TARGET_CPU=sparc
+ elif test "x$OPENJDK_TARGET_CPU" = xppc64; then
+ HOTSPOT_TARGET_CPU=ppc_64
+ elif test "x$OPENJDK_TARGET_CPU" = xppc64le; then
+ HOTSPOT_TARGET_CPU=ppc_64
+ fi
+
+
+ # This is identical with OPENJDK_*, but define anyway for consistency.
+ HOTSPOT_TARGET_CPU_ARCH=${OPENJDK_TARGET_CPU_ARCH}
+
+
+ # Setup HOTSPOT_TARGET_CPU_DEFINE
+ if test "x$OPENJDK_TARGET_CPU" = xx86; then
+ HOTSPOT_TARGET_CPU_DEFINE=IA32
+ elif test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ HOTSPOT_TARGET_CPU_DEFINE=AMD64
+ elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
+ HOTSPOT_TARGET_CPU_DEFINE=SPARC
+ elif test "x$OPENJDK_TARGET_CPU" = xaarch64; then
+ HOTSPOT_TARGET_CPU_DEFINE=AARCH64
+ elif test "x$OPENJDK_TARGET_CPU" = xppc64; then
+ HOTSPOT_TARGET_CPU_DEFINE=PPC64
+ elif test "x$OPENJDK_TARGET_CPU" = xppc64le; then
+ HOTSPOT_TARGET_CPU_DEFINE=PPC64
+
+ # The cpu defines below are for zero, we don't support them directly.
+ elif test "x$OPENJDK_TARGET_CPU" = xsparc; then
+ HOTSPOT_TARGET_CPU_DEFINE=SPARC
+ elif test "x$OPENJDK_TARGET_CPU" = xppc; then
+ HOTSPOT_TARGET_CPU_DEFINE=PPC32
+ elif test "x$OPENJDK_TARGET_CPU" = xs390; then
+ HOTSPOT_TARGET_CPU_DEFINE=S390
+ elif test "x$OPENJDK_TARGET_CPU" = xs390x; then
+ HOTSPOT_TARGET_CPU_DEFINE=S390
+ elif test "x$OPENJDK_TARGET_CPU" != x; then
+ HOTSPOT_TARGET_CPU_DEFINE=$(echo $OPENJDK_TARGET_CPU | tr a-z A-Z)
+ fi
+
+
+
+
+ # Also store the legacy naming of the cpu.
+ # Ie i586 and amd64 instead of x86 and x86_64
+ OPENJDK_BUILD_CPU_LEGACY="$OPENJDK_BUILD_CPU"
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ OPENJDK_BUILD_CPU_LEGACY="i586"
+ elif test "x$OPENJDK_BUILD_OS" != xmacosx && test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ # On all platforms except MacOSX replace x86_64 with amd64.
+ OPENJDK_BUILD_CPU_LEGACY="amd64"
+ fi
+
+
+ # And the second legacy naming of the cpu.
+ # Ie i386 and amd64 instead of x86 and x86_64.
+ OPENJDK_BUILD_CPU_LEGACY_LIB="$OPENJDK_BUILD_CPU"
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ OPENJDK_BUILD_CPU_LEGACY_LIB="i386"
+ elif test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ OPENJDK_BUILD_CPU_LEGACY_LIB="amd64"
+ fi
+
+
+ # OPENJDK_BUILD_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_BUILD_CPU_ISADIR}/libexample.so
+ OPENJDK_BUILD_CPU_ISADIR=""
+ if test "x$OPENJDK_BUILD_OS" = xsolaris; then
+ if test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ OPENJDK_BUILD_CPU_ISADIR="/amd64"
+ elif test "x$OPENJDK_BUILD_CPU" = xsparcv9; then
+ OPENJDK_BUILD_CPU_ISADIR="/sparcv9"
+ fi
+ fi
+
+
+ # Setup OPENJDK_BUILD_CPU_OSARCH, which is used to set the os.arch Java system property
+ OPENJDK_BUILD_CPU_OSARCH="$OPENJDK_BUILD_CPU"
+ if test "x$OPENJDK_BUILD_OS" = xlinux && test "x$OPENJDK_BUILD_CPU" = xx86; then
+ # On linux only, we replace x86 with i386.
+ OPENJDK_BUILD_CPU_OSARCH="i386"
+ elif test "x$OPENJDK_BUILD_OS" != xmacosx && test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ # On all platforms except macosx, we replace x86_64 with amd64.
+ OPENJDK_BUILD_CPU_OSARCH="amd64"
+ fi
+
+
+ OPENJDK_BUILD_CPU_JLI="$OPENJDK_BUILD_CPU"
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ OPENJDK_BUILD_CPU_JLI="i386"
+ elif test "x$OPENJDK_BUILD_OS" != xmacosx && test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ # On all platforms except macosx, we replace x86_64 with amd64.
+ OPENJDK_BUILD_CPU_JLI="amd64"
+ fi
+
+ if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_OS_EXPORT_DIR=macosx
+ else
+ OPENJDK_BUILD_OS_EXPORT_DIR=${OPENJDK_BUILD_OS_TYPE}
+ fi
+
+
+ # The new version string in JDK 9 also defined new naming of OS and ARCH for bundles
+ # Macosx is osx and x86_64 is x64
+ if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_OS_BUNDLE="osx"
+ else
+ OPENJDK_BUILD_OS_BUNDLE="$OPENJDK_TARGET_OS"
+ fi
+ if test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ OPENJDK_BUILD_CPU_BUNDLE="x64"
+ else
+ OPENJDK_BUILD_CPU_BUNDLE="$OPENJDK_BUILD_CPU"
+ fi
+ OPENJDK_BUILD_BUNDLE_PLATFORM="${OPENJDK_BUILD_OS_BUNDLE}-${OPENJDK_BUILD_CPU_BUNDLE}"
+
+
+ if test "x$OPENJDK_BUILD_CPU_BITS" = x64; then
+ # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
+ # unpack200.exe. This variable is used in
+ # FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER.
+ if test "x$OPENJDK_BUILD_OS" = xlinux || test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_ADD_LP64="-D_LP64=1"
+ fi
+ fi
+
+ if test "x$COMPILE_TYPE" = "xcross"; then
+ # FIXME: ... or should this include reduced builds..?
+ DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$OPENJDK_BUILD_CPU_LEGACY"
+ else
+ DEFINE_CROSS_COMPILE_ARCH=""
+ fi
+
+
+ # Convert openjdk platform names to hotspot names
+
+ HOTSPOT_BUILD_OS=${OPENJDK_BUILD_OS}
+ if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ HOTSPOT_BUILD_OS=bsd
+ fi
+
+
+ HOTSPOT_BUILD_OS_TYPE=${OPENJDK_BUILD_OS_TYPE}
+ if test "x$OPENJDK_BUILD_OS_TYPE" = xunix; then
+ HOTSPOT_BUILD_OS_TYPE=posix
+ fi
+
+
+ HOTSPOT_BUILD_CPU=${OPENJDK_BUILD_CPU}
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ HOTSPOT_BUILD_CPU=x86_32
+ elif test "x$OPENJDK_BUILD_CPU" = xsparcv9; then
+ HOTSPOT_BUILD_CPU=sparc
+ elif test "x$OPENJDK_BUILD_CPU" = xppc64; then
+ HOTSPOT_BUILD_CPU=ppc_64
+ elif test "x$OPENJDK_BUILD_CPU" = xppc64le; then
+ HOTSPOT_BUILD_CPU=ppc_64
+ fi
+
+
+ # This is identical with OPENJDK_*, but define anyway for consistency.
+ HOTSPOT_BUILD_CPU_ARCH=${OPENJDK_BUILD_CPU_ARCH}
+
+
+ # Setup HOTSPOT_BUILD_CPU_DEFINE
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ HOTSPOT_BUILD_CPU_DEFINE=IA32
+ elif test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ HOTSPOT_BUILD_CPU_DEFINE=AMD64
+ elif test "x$OPENJDK_BUILD_CPU" = xsparcv9; then
+ HOTSPOT_BUILD_CPU_DEFINE=SPARC
+ elif test "x$OPENJDK_BUILD_CPU" = xaarch64; then
+ HOTSPOT_BUILD_CPU_DEFINE=AARCH64
+ elif test "x$OPENJDK_BUILD_CPU" = xppc64; then
+ HOTSPOT_BUILD_CPU_DEFINE=PPC64
+ elif test "x$OPENJDK_BUILD_CPU" = xppc64le; then
+ HOTSPOT_BUILD_CPU_DEFINE=PPC64
+
+ # The cpu defines below are for zero, we don't support them directly.
+ elif test "x$OPENJDK_BUILD_CPU" = xsparc; then
+ HOTSPOT_BUILD_CPU_DEFINE=SPARC
+ elif test "x$OPENJDK_BUILD_CPU" = xppc; then
+ HOTSPOT_BUILD_CPU_DEFINE=PPC32
+ elif test "x$OPENJDK_BUILD_CPU" = xs390; then
+ HOTSPOT_BUILD_CPU_DEFINE=S390
+ elif test "x$OPENJDK_BUILD_CPU" = xs390x; then
+ HOTSPOT_BUILD_CPU_DEFINE=S390
+ elif test "x$OPENJDK_BUILD_CPU" != x; then
+ HOTSPOT_BUILD_CPU_DEFINE=$(echo $OPENJDK_BUILD_CPU | tr a-z A-Z)
+ fi
+
+
+
+
+
+
+# Continue setting up basic stuff. Most remaining code require fundamental tools.
+
+ # Save the current directory this script was started from
+ CURDIR="$PWD"
+
+ # We might need to rewrite ORIGINAL_PATH, if it includes "#", to quote them
+ # for make. We couldn't do this when we retrieved ORIGINAL_PATH, since SED
+ # was not available at that time.
+ REWRITTEN_PATH=`$ECHO "$ORIGINAL_PATH" | $SED -e 's/#/\\\\#/g'`
+ if test "x$REWRITTEN_PATH" != "x$ORIGINAL_PATH"; then
+ ORIGINAL_PATH="$REWRITTEN_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting ORIGINAL_PATH to $REWRITTEN_PATH" >&5
+$as_echo "$as_me: Rewriting ORIGINAL_PATH to $REWRITTEN_PATH" >&6;}
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
+ PATH_SEP=";"
+
+ SRC_ROOT_LENGTH=`$THEPWDCMD -L|$WC -m`
+ if test $SRC_ROOT_LENGTH -gt 100; then
+ as_fn_error $? "Your base path is too long. It is $SRC_ROOT_LENGTH characters long, but only 100 is supported" "$LINENO" 5
+ fi
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking cygwin release" >&5
+$as_echo_n "checking cygwin release... " >&6; }
+ CYGWIN_VERSION=`$UNAME -r`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGWIN_VERSION" >&5
+$as_echo "$CYGWIN_VERSION" >&6; }
+ WINDOWS_ENV_VENDOR='cygwin'
+ WINDOWS_ENV_VERSION="$CYGWIN_VERSION"
+
+ CYGWIN_VERSION_OLD=`$ECHO $CYGWIN_VERSION | $GREP -e '^1\.0-6'`
+ if test "x$CYGWIN_VERSION_OLD" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Your cygwin is too old. You are running $CYGWIN_VERSION, but at least cygwin 1.7 is required. Please upgrade." >&5
+$as_echo "$as_me: Your cygwin is too old. You are running $CYGWIN_VERSION, but at least cygwin 1.7 is required. Please upgrade." >&6;}
+ as_fn_error $? "Cannot continue" "$LINENO" 5
+ fi
+ if test "x$CYGPATH" = x; then
+ as_fn_error $? "Something is wrong with your cygwin installation since I cannot find cygpath.exe in your path" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking cygwin root directory as unix-style path" >&5
+$as_echo_n "checking cygwin root directory as unix-style path... " >&6; }
+ # The cmd output ends with Windows line endings (CR/LF)
+ cygwin_winpath_root=`cd / ; cmd /c cd | $TR -d '\r\n'`
+ # Force cygpath to report the proper root by including a trailing space, and then stripping it off again.
+ CYGWIN_ROOT_PATH=`$CYGPATH -u "$cygwin_winpath_root " | $CUT -f 1 -d " "`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGWIN_ROOT_PATH" >&5
+$as_echo "$CYGWIN_ROOT_PATH" >&6; }
+ WINDOWS_ENV_ROOT_PATH="$CYGWIN_ROOT_PATH"
+ test_cygdrive_prefix=`$ECHO $CYGWIN_ROOT_PATH | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ as_fn_error $? "Your cygdrive prefix is not /cygdrive. This is currently not supported. Change with mount -c." "$LINENO" 5
+ fi
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking msys release" >&5
+$as_echo_n "checking msys release... " >&6; }
+ MSYS_VERSION=`$UNAME -r`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSYS_VERSION" >&5
+$as_echo "$MSYS_VERSION" >&6; }
+
+ WINDOWS_ENV_VENDOR='msys'
+ WINDOWS_ENV_VERSION="$MSYS_VERSION"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking msys root directory as unix-style path" >&5
+$as_echo_n "checking msys root directory as unix-style path... " >&6; }
+ # The cmd output ends with Windows line endings (CR/LF), the grep command will strip that away
+ MSYS_ROOT_PATH=`cd / ; cmd /c cd | $GREP ".*"`
+
+ windows_path="$MSYS_ROOT_PATH"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ MSYS_ROOT_PATH="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ MSYS_ROOT_PATH="$unix_path"
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSYS_ROOT_PATH" >&5
+$as_echo "$MSYS_ROOT_PATH" >&6; }
+ WINDOWS_ENV_ROOT_PATH="$MSYS_ROOT_PATH"
+ else
+ as_fn_error $? "Unknown Windows environment. Neither cygwin nor msys was detected." "$LINENO" 5
+ fi
+
+ # Test if windows or unix (cygwin/msys) find is first in path.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking what kind of 'find' is first on the PATH" >&5
+$as_echo_n "checking what kind of 'find' is first on the PATH... " >&6; }
+ FIND_BINARY_OUTPUT=`find --version 2>&1`
+ if test "x`echo $FIND_BINARY_OUTPUT | $GREP GNU`" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unix style" >&5
+$as_echo "unix style" >&6; }
+ elif test "x`echo $FIND_BINARY_OUTPUT | $GREP FIND`" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: Windows" >&5
+$as_echo "Windows" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Your path contains Windows tools (C:\Windows\system32) before your unix (cygwin or msys) tools." >&5
+$as_echo "$as_me: Your path contains Windows tools (C:\Windows\system32) before your unix (cygwin or msys) tools." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This will not work. Please correct and make sure /usr/bin (or similar) is first in path." >&5
+$as_echo "$as_me: This will not work. Please correct and make sure /usr/bin (or similar) is first in path." >&6;}
+ as_fn_error $? "Cannot continue" "$LINENO" 5
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unknown" >&5
+$as_echo "unknown" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: It seems that your find utility is non-standard." >&5
+$as_echo "$as_me: WARNING: It seems that your find utility is non-standard." >&2;}
+ fi
+
+ else
+ PATH_SEP=":"
+ fi
+
+
+ # We get the top-level directory from the supporting wrappers.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for top-level directory" >&5
+$as_echo_n "checking for top-level directory... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TOPDIR" >&5
+$as_echo "$TOPDIR" >&6; }
+
+
+ # Save the original version of TOPDIR for string comparisons
+ ORIGINAL_TOPDIR="$TOPDIR"
+
+
+ # We can only call BASIC_FIXUP_PATH after BASIC_CHECK_PATHS_WINDOWS.
+
+ # Only process if variable expands to non-empty
+
+ if test "x$CURDIR" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$CURDIR"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CURDIR, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of CURDIR, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of CURDIR" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ CURDIR="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting CURDIR to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting CURDIR to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$CURDIR"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ CURDIR="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting CURDIR to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting CURDIR to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$CURDIR"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CURDIR, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of CURDIR, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of CURDIR, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ CURDIR="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ CURDIR="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$TOPDIR" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$TOPDIR"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of TOPDIR, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of TOPDIR, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of TOPDIR" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ TOPDIR="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting TOPDIR to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting TOPDIR to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$TOPDIR"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ TOPDIR="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting TOPDIR to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting TOPDIR to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$TOPDIR"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of TOPDIR, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of TOPDIR, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of TOPDIR, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ TOPDIR="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ TOPDIR="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ # SRC_ROOT is a traditional alias for TOPDIR.
+ SRC_ROOT=$TOPDIR
+
+ # Calculate a canonical version of TOPDIR for string comparisons
+ CANONICAL_TOPDIR=$TOPDIR
+
+ if test "x$OPENJDK_BUILD_OS" != xwindows; then
+ # Follow a chain of symbolic links. Use readlink
+ # where it exists, else fall back to horribly
+ # complicated shell code.
+ if test "x$READLINK_TESTED" != yes; then
+ # On MacOSX there is a readlink tool with a different
+ # purpose than the GNU readlink tool. Check the found readlink.
+ ISGNU=`$READLINK --version 2>&1 | $GREP GNU`
+ if test "x$ISGNU" = x; then
+ # A readlink that we do not know how to use.
+ # Are there other non-GNU readlinks out there?
+ READLINK_TESTED=yes
+ READLINK=
+ fi
+ fi
+
+ if test "x$READLINK" != x; then
+ CANONICAL_TOPDIR=`$READLINK -f $CANONICAL_TOPDIR`
+ else
+ # Save the current directory for restoring afterwards
+ STARTDIR=$PWD
+ COUNTER=0
+ sym_link_dir=`$DIRNAME $CANONICAL_TOPDIR`
+ sym_link_file=`$BASENAME $CANONICAL_TOPDIR`
+ cd $sym_link_dir
+ # Use -P flag to resolve symlinks in directories.
+ cd `$THEPWDCMD -P`
+ sym_link_dir=`$THEPWDCMD -P`
+ # Resolve file symlinks
+ while test $COUNTER -lt 20; do
+ ISLINK=`$LS -l $sym_link_dir/$sym_link_file | $GREP '\->' | $SED -e 's/.*-> \(.*\)/\1/'`
+ if test "x$ISLINK" == x; then
+ # This is not a symbolic link! We are done!
+ break
+ fi
+ # Again resolve directory symlinks since the target of the just found
+ # link could be in a different directory
+ cd `$DIRNAME $ISLINK`
+ sym_link_dir=`$THEPWDCMD -P`
+ sym_link_file=`$BASENAME $ISLINK`
+ let COUNTER=COUNTER+1
+ done
+ cd $STARTDIR
+ CANONICAL_TOPDIR=$sym_link_dir/$sym_link_file
+ fi
+ fi
+
+
+
+ # Locate the directory of this script.
+ AUTOCONF_DIR=$TOPDIR/common/autoconf
+
+ # Setup username (for use in adhoc version strings etc)
+ # Outer [ ] to quote m4.
+ USERNAME=`$ECHO "$USER" | $TR -d -c '[a-z][A-Z][0-9]'`
+
+
+
+# Check if it's a pure open build or if custom sources are to be used.
+
+ # Check whether --enable-openjdk-only was given.
+if test "${enable_openjdk_only+set}" = set; then :
+ enableval=$enable_openjdk_only;
+else
+ enable_openjdk_only="no"
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if custom source is suppressed (openjdk-only)" >&5
+$as_echo_n "checking if custom source is suppressed (openjdk-only)... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_openjdk_only" >&5
+$as_echo "$enable_openjdk_only" >&6; }
+ if test "x$enable_openjdk_only" = "xyes"; then
+ SUPPRESS_CUSTOM_EXTENSIONS="true"
+ elif test "x$enable_openjdk_only" = "xno"; then
+ SUPPRESS_CUSTOM_EXTENSIONS="false"
+ else
+ as_fn_error $? "Invalid value for --enable-openjdk-only: $enable_openjdk_only" "$LINENO" 5
+ fi
+
+ # custom-make-dir is deprecated. Please use your custom-hook.m4 to override
+ # the IncludeCustomExtension macro.
+
+
+# Check whether --with-custom-make-dir was given.
+if test "${with_custom_make_dir+set}" = set; then :
+ withval=$with_custom_make_dir; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-custom-make-dir is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-custom-make-dir is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# These are needed to be able to create a configuration name (and thus the output directory)
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of the JDK to build" >&5
+$as_echo_n "checking which variant of the JDK to build... " >&6; }
+
+# Check whether --with-jdk-variant was given.
+if test "${with_jdk_variant+set}" = set; then :
+ withval=$with_jdk_variant;
+fi
+
+
+ if test "x$with_jdk_variant" = xnormal || test "x$with_jdk_variant" = x; then
+ JDK_VARIANT="normal"
+ else
+ as_fn_error $? "The available JDK variants are: normal" "$LINENO" 5
+ fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JDK_VARIANT" >&5
+$as_echo "$JDK_VARIANT" >&6; }
+
+
+ DEBUG_LEVEL="release"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking which debug level to use" >&5
+$as_echo_n "checking which debug level to use... " >&6; }
+ # Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then :
+ enableval=$enable_debug;
+ ENABLE_DEBUG="${enableval}"
+ DEBUG_LEVEL="fastdebug"
+
+else
+ ENABLE_DEBUG="no"
+fi
+
+
+
+# Check whether --with-debug-level was given.
+if test "${with_debug_level+set}" = set; then :
+ withval=$with_debug_level;
+ DEBUG_LEVEL="${withval}"
+ if test "x$ENABLE_DEBUG" = xyes; then
+ as_fn_error $? "You cannot use both --enable-debug and --with-debug-level at the same time." "$LINENO" 5
+ fi
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DEBUG_LEVEL" >&5
+$as_echo "$DEBUG_LEVEL" >&6; }
+
+ if test "x$DEBUG_LEVEL" != xrelease && \
+ test "x$DEBUG_LEVEL" != xoptimized && \
+ test "x$DEBUG_LEVEL" != xfastdebug && \
+ test "x$DEBUG_LEVEL" != xslowdebug; then
+ as_fn_error $? "Allowed debug levels are: release, fastdebug, slowdebug and optimized" "$LINENO" 5
+ fi
+
+ # Translate DEBUG_LEVEL to debug level used by Hotspot
+ HOTSPOT_DEBUG_LEVEL="$DEBUG_LEVEL"
+ if test "x$DEBUG_LEVEL" = xrelease; then
+ HOTSPOT_DEBUG_LEVEL="product"
+ elif test "x$DEBUG_LEVEL" = xslowdebug; then
+ HOTSPOT_DEBUG_LEVEL="debug"
+ fi
+
+ if test "x$DEBUG_LEVEL" = xoptimized; then
+ # The debug level 'optimized' is a little special because it is currently only
+ # applicable to the HotSpot build where it means to build a completely
+ # optimized version of the VM without any debugging code (like for the
+ # 'release' debug level which is called 'product' in the HotSpot build) but
+ # with the exception that it can contain additional code which is otherwise
+ # protected by '#ifndef PRODUCT' macros. These 'optimized' builds are used to
+ # test new and/or experimental features which are not intended for customer
+ # shipment. Because these new features need to be tested and benchmarked in
+ # real world scenarios, we want to build the containing JDK at the 'release'
+ # debug level.
+ DEBUG_LEVEL="release"
+ fi
+
+
+
+
+
+
+# Check whether --with-jvm-variants was given.
+if test "${with_jvm_variants+set}" = set; then :
+ withval=$with_jvm_variants;
+fi
+
+
+
+
+# Check whether --with-cpu-port was given.
+if test "${with_cpu_port+set}" = set; then :
+ withval=$with_cpu_port;
+fi
+
+
+ if test "x$with_cpu_port" != x; then
+ if test "x$OPENJDK_TARGET_CPU" != xaarch64; then
+ as_fn_error $? "--with-cpu-port only available on aarch64" "$LINENO" 5
+ fi
+ if test "x$with_cpu_port" != xarm64 && \
+ test "x$with_cpu_port" != xaarch64; then
+ as_fn_error $? "--with-cpu-port must specify arm64 or aarch64" "$LINENO" 5
+ fi
+ HOTSPOT_TARGET_CPU_PORT="$with_cpu_port"
+ fi
+
+
+ if test "x$with_jvm_variants" = x; then
+ with_jvm_variants="server"
+ fi
+ JVM_VARIANTS_OPT="$with_jvm_variants"
+
+ # Has the user listed more than one variant?
+ # Additional [] needed to keep m4 from mangling shell constructs.
+ if [[ "$JVM_VARIANTS_OPT" =~ "," ]] ; then
+ BUILDING_MULTIPLE_JVM_VARIANTS=true
+ else
+ BUILDING_MULTIPLE_JVM_VARIANTS=false
+ fi
+ # Replace the commas with AND for use in the build directory name.
+ JVM_VARIANTS_WITH_AND=`$ECHO "$JVM_VARIANTS_OPT" | $SED -e 's/,/AND/g'`
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variants of the JVM to build" >&5
+$as_echo_n "checking which variants of the JVM to build... " >&6; }
+ # JVM_VARIANTS is a space-separated list.
+ # Also use minimal, not minimal1 (which is kept for backwards compatibility).
+ JVM_VARIANTS=`$ECHO $JVM_VARIANTS_OPT | $SED -e 's/,/ /g' -e 's/minimal1/minimal/'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JVM_VARIANTS" >&5
+$as_echo "$JVM_VARIANTS" >&6; }
+
+ # Check that the selected variants are valid
+
+ # grep filter function inspired by a comment to http://stackoverflow.com/a/1617326
+ # Notice that the original variant failes on SLES 10 and 11
+ NEEDLE=${VALID_JVM_VARIANTS// /$'\n'}
+ STACK=${JVM_VARIANTS// /$'\n'}
+ INVALID_VARIANTS=`$GREP -Fvx "${NEEDLE}" <<< "${STACK}"`
+ if test "x$INVALID_VARIANTS" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Unknown variant(s) specified: $INVALID_VARIANTS" >&5
+$as_echo "$as_me: Unknown variant(s) specified: $INVALID_VARIANTS" >&6;}
+ as_fn_error $? "The available JVM variants are: $VALID_JVM_VARIANTS" "$LINENO" 5
+ fi
+
+ # All "special" variants share the same output directory ("server")
+ VALID_MULTIPLE_JVM_VARIANTS="server client minimal"
+ NEEDLE=${VALID_MULTIPLE_JVM_VARIANTS// /$'\n'}
+ STACK=${JVM_VARIANTS// /$'\n'}
+ INVALID_MULTIPLE_VARIANTS=`$GREP -Fvx "${NEEDLE}" <<< "${STACK}"`
+ if test "x$INVALID_MULTIPLE_VARIANTS" != x && test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = xtrue; then
+ as_fn_error $? "You cannot build multiple variants with anything else than $VALID_MULTIPLE_JVM_VARIANTS." "$LINENO" 5
+ fi
+
+ # The "main" variant is the one used by other libs to link against during the
+ # build.
+ if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xtrue"; then
+ MAIN_VARIANT_PRIO_ORDER="server client minimal"
+ for variant in $MAIN_VARIANT_PRIO_ORDER; do
+ if [[ " $JVM_VARIANTS " =~ " $variant " ]] ; then
+ JVM_VARIANT_MAIN="$variant"
+ break
+ fi
+ done
+ else
+ JVM_VARIANT_MAIN="$JVM_VARIANTS"
+ fi
+
+
+
+
+
+ if [[ " $JVM_VARIANTS " =~ " zero " ]] || [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
+ # zero behaves as a platform and rewrites these values. This is really weird. :(
+ # We are guaranteed that we do not build any other variants when building zero.
+ HOTSPOT_TARGET_CPU=zero
+ HOTSPOT_TARGET_CPU_ARCH=zero
+ fi
+
+
+# With basic setup done, call the custom early hook.
+
+
+# Check if we have devkits, extra paths or sysroot set.
+
+
+# Check whether --with-devkit was given.
+if test "${with_devkit+set}" = set; then :
+ withval=$with_devkit;
+
+ # Only process if variable expands to non-empty
+
+ if test "x$with_devkit" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$with_devkit"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of with_devkit, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of with_devkit, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of with_devkit" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ with_devkit="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting with_devkit to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting with_devkit to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$with_devkit"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ with_devkit="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting with_devkit to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting with_devkit to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$with_devkit"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of with_devkit, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of with_devkit, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of with_devkit, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ with_devkit="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ with_devkit="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ DEVKIT_ROOT="$with_devkit"
+ # Check for a meta data info file in the root of the devkit
+ if test -f "$DEVKIT_ROOT/devkit.info"; then
+ . $DEVKIT_ROOT/devkit.info
+ # This potentially sets the following:
+ # A descriptive name of the devkit
+
+ if test "x$DEVKIT_NAME" = x; then
+ eval DEVKIT_NAME="\${DEVKIT_NAME_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-extra-path
+
+ if test "x$DEVKIT_EXTRA_PATH" = x; then
+ eval DEVKIT_EXTRA_PATH="\${DEVKIT_EXTRA_PATH_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-toolchain-path
+
+ if test "x$DEVKIT_TOOLCHAIN_PATH" = x; then
+ eval DEVKIT_TOOLCHAIN_PATH="\${DEVKIT_TOOLCHAIN_PATH_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-sysroot
+
+ if test "x$DEVKIT_SYSROOT" = x; then
+ eval DEVKIT_SYSROOT="\${DEVKIT_SYSROOT_${OPENJDK_TARGET_CPU}}"
+ fi
+
+
+ # Identifies the Visual Studio version in the devkit
+
+ if test "x$DEVKIT_VS_VERSION" = x; then
+ eval DEVKIT_VS_VERSION="\${DEVKIT_VS_VERSION_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # The Visual Studio include environment variable
+
+ if test "x$DEVKIT_VS_INCLUDE" = x; then
+ eval DEVKIT_VS_INCLUDE="\${DEVKIT_VS_INCLUDE_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # The Visual Studio lib environment variable
+
+ if test "x$DEVKIT_VS_LIB" = x; then
+ eval DEVKIT_VS_LIB="\${DEVKIT_VS_LIB_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-msvcr-dll
+
+ if test "x$DEVKIT_MSVCR_DLL" = x; then
+ eval DEVKIT_MSVCR_DLL="\${DEVKIT_MSVCR_DLL_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-msvcp-dll
+
+ if test "x$DEVKIT_MSVCP_DLL" = x; then
+ eval DEVKIT_MSVCP_DLL="\${DEVKIT_MSVCP_DLL_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for devkit" >&5
+$as_echo_n "checking for devkit... " >&6; }
+ if test "x$DEVKIT_NAME" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DEVKIT_NAME in $DEVKIT_ROOT" >&5
+$as_echo "$DEVKIT_NAME in $DEVKIT_ROOT" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DEVKIT_ROOT" >&5
+$as_echo "$DEVKIT_ROOT" >&6; }
+ fi
+
+
+ if test "x$DEVKIT_EXTRA_PATH" != x; then
+ if test "x$EXTRA_PATH" = x; then
+ EXTRA_PATH="$DEVKIT_EXTRA_PATH"
+ else
+ EXTRA_PATH="$DEVKIT_EXTRA_PATH:$EXTRA_PATH"
+ fi
+ fi
+
+
+ # Fallback default of just /bin if DEVKIT_PATH is not defined
+ if test "x$DEVKIT_TOOLCHAIN_PATH" = x; then
+ DEVKIT_TOOLCHAIN_PATH="$DEVKIT_ROOT/bin"
+ fi
+
+ if test "x$DEVKIT_TOOLCHAIN_PATH" != x; then
+ if test "x$TOOLCHAIN_PATH" = x; then
+ TOOLCHAIN_PATH="$DEVKIT_TOOLCHAIN_PATH"
+ else
+ TOOLCHAIN_PATH="$DEVKIT_TOOLCHAIN_PATH:$TOOLCHAIN_PATH"
+ fi
+ fi
+
+
+ # If DEVKIT_SYSROOT is set, use that, otherwise try a couple of known
+ # places for backwards compatiblity.
+ if test "x$DEVKIT_SYSROOT" != x; then
+ SYSROOT="$DEVKIT_SYSROOT"
+ elif test -d "$DEVKIT_ROOT/$host_alias/libc"; then
+ SYSROOT="$DEVKIT_ROOT/$host_alias/libc"
+ elif test -d "$DEVKIT_ROOT/$host/sys-root"; then
+ SYSROOT="$DEVKIT_ROOT/$host/sys-root"
+ fi
+
+
+fi
+
+
+ # You can force the sysroot if the sysroot encoded into the compiler tools
+ # is not correct.
+
+# Check whether --with-sys-root was given.
+if test "${with_sys_root+set}" = set; then :
+ withval=$with_sys_root; SYSROOT=$with_sys_root
+
+fi
+
+
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+ withval=$with_sysroot; SYSROOT=$with_sysroot
+
+fi
+
+
+
+# Check whether --with-tools-dir was given.
+if test "${with_tools_dir+set}" = set; then :
+ withval=$with_tools_dir;
+ if test "x$with_tools_dir" != x; then
+ if test "x$TOOLCHAIN_PATH" = x; then
+ TOOLCHAIN_PATH="$with_tools_dir"
+ else
+ TOOLCHAIN_PATH="$with_tools_dir:$TOOLCHAIN_PATH"
+ fi
+ fi
+
+
+fi
+
+
+
+# Check whether --with-toolchain-path was given.
+if test "${with_toolchain_path+set}" = set; then :
+ withval=$with_toolchain_path;
+ if test "x$with_toolchain_path" != x; then
+ if test "x$TOOLCHAIN_PATH" = x; then
+ TOOLCHAIN_PATH="$with_toolchain_path"
+ else
+ TOOLCHAIN_PATH="$with_toolchain_path:$TOOLCHAIN_PATH"
+ fi
+ fi
+
+
+fi
+
+
+
+# Check whether --with-extra-path was given.
+if test "${with_extra_path+set}" = set; then :
+ withval=$with_extra_path;
+ if test "x$with_extra_path" != x; then
+ if test "x$EXTRA_PATH" = x; then
+ EXTRA_PATH="$with_extra_path"
+ else
+ EXTRA_PATH="$with_extra_path:$EXTRA_PATH"
+ fi
+ fi
+
+
+fi
+
+
+ if test "x$OPENJDK_BUILD_OS" = "xmacosx"; then
+ # If a devkit has been supplied, find xcodebuild in the toolchain_path.
+ # If not, detect if Xcode is installed by running xcodebuild -version
+ # if no Xcode installed, xcodebuild exits with 1
+ # if Xcode is installed, even if xcode-select is misconfigured, then it exits with 0
+ if test "x$DEVKIT_ROOT" != x || /usr/bin/xcodebuild -version >/dev/null 2>&1; then
+ # We need to use xcodebuild in the toolchain dir provided by the user, this will
+ # fall back on the stub binary in /usr/bin/xcodebuild
+ # Extract the first word of "xcodebuild", so it can be a program name with args.
+set dummy xcodebuild; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XCODEBUILD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $XCODEBUILD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XCODEBUILD="$XCODEBUILD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $TOOLCHAIN_PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_XCODEBUILD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ test -z "$ac_cv_path_XCODEBUILD" && ac_cv_path_XCODEBUILD="/usr/bin/xcodebuild"
+ ;;
+esac
+fi
+XCODEBUILD=$ac_cv_path_XCODEBUILD
+if test -n "$XCODEBUILD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XCODEBUILD" >&5
+$as_echo "$XCODEBUILD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ else
+ # this should result in SYSROOT being empty, unless --with-sysroot is provided
+ # when only the command line tools are installed there are no SDKs, so headers
+ # are copied into the system frameworks
+ XCODEBUILD=
+
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sdk name" >&5
+$as_echo_n "checking for sdk name... " >&6; }
+
+# Check whether --with-sdk-name was given.
+if test "${with_sdk_name+set}" = set; then :
+ withval=$with_sdk_name; SDKNAME=$with_sdk_name
+
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SDKNAME" >&5
+$as_echo "$SDKNAME" >&6; }
+
+ # if toolchain path is specified then don't rely on system headers, they may not compile
+ HAVE_SYSTEM_FRAMEWORK_HEADERS=0
+ test -z "$TOOLCHAIN_PATH" && \
+ HAVE_SYSTEM_FRAMEWORK_HEADERS=`test ! -f /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h; echo $?`
+
+ if test -z "$SYSROOT"; then
+ if test -n "$XCODEBUILD"; then
+ # if we don't have system headers, use default SDK name (last resort)
+ if test -z "$SDKNAME" -a $HAVE_SYSTEM_FRAMEWORK_HEADERS -eq 0; then
+ SDKNAME=${SDKNAME:-macosx}
+ fi
+
+ if test -n "$SDKNAME"; then
+ # Call xcodebuild to determine SYSROOT
+ SYSROOT=`"$XCODEBUILD" -sdk $SDKNAME -version | $GREP '^Path: ' | $SED 's/Path: //'`
+ fi
+ else
+ if test $HAVE_SYSTEM_FRAMEWORK_HEADERS -eq 0; then
+ as_fn_error $? "No xcodebuild tool and no system framework headers found, use --with-sysroot or --with-sdk-name to provide a path to a valid SDK" "$LINENO" 5
+ fi
+ fi
+ else
+ # warn user if --with-sdk-name was also set
+ if test -n "$with_sdk_name"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Both SYSROOT and --with-sdk-name are set, only SYSROOT will be used" >&5
+$as_echo "$as_me: WARNING: Both SYSROOT and --with-sdk-name are set, only SYSROOT will be used" >&2;}
+ fi
+ fi
+
+ if test $HAVE_SYSTEM_FRAMEWORK_HEADERS -eq 0 -a -z "$SYSROOT"; then
+ # If no system framework headers, then SYSROOT must be set, or we won't build
+ as_fn_error $? "Unable to determine SYSROOT and no headers found in /System/Library/Frameworks. Check Xcode configuration, --with-sysroot or --with-sdk-name arguments." "$LINENO" 5
+ fi
+
+ # Perform a basic sanity test
+ if test ! -f "$SYSROOT/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h"; then
+ if test -z "$SYSROOT"; then
+ as_fn_error $? "Unable to find required framework headers, provide a path to an SDK via --with-sysroot or --with-sdk-name and be sure Xcode is installed properly" "$LINENO" 5
+ else
+ as_fn_error $? "Invalid SDK or SYSROOT path, dependent framework headers not found" "$LINENO" 5
+ fi
+ fi
+
+ # set SDKROOT too, Xcode tools will pick it up
+ SDKROOT="$SYSROOT"
+
+ fi
+
+ # Prepend the extra path to the global path
+
+ if test "x$EXTRA_PATH" != x; then
+ if test "x$PATH" = x; then
+ PATH="$EXTRA_PATH"
+ else
+ PATH="$EXTRA_PATH:$PATH"
+ fi
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SYSROOT" >&5
+$as_echo "$SYSROOT" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for toolchain path" >&5
+$as_echo_n "checking for toolchain path... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TOOLCHAIN_PATH" >&5
+$as_echo "$TOOLCHAIN_PATH" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for extra path" >&5
+$as_echo_n "checking for extra path... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXTRA_PATH" >&5
+$as_echo "$EXTRA_PATH" >&6; }
+
+
+# To properly create a configuration name, we need to have the OpenJDK target
+# and options (variants and debug level) parsed.
+
+
+
+# Check whether --with-conf-name was given.
+if test "${with_conf_name+set}" = set; then :
+ withval=$with_conf_name; CONF_NAME=${with_conf_name}
+fi
+
+
+ # Test from where we are running configure, in or outside of src root.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to store configuration" >&5
+$as_echo_n "checking where to store configuration... " >&6; }
+ if test "x$CURDIR" = "x$SRC_ROOT" || test "x$CURDIR" = "x$SRC_ROOT/common" \
+ || test "x$CURDIR" = "x$SRC_ROOT/common/autoconf" \
+ || test "x$CURDIR" = "x$SRC_ROOT/make" ; then
+ # We are running configure from the src root.
+ # Create a default ./build/target-variant-debuglevel output root.
+ if test "x${CONF_NAME}" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: in default location" >&5
+$as_echo "in default location" >&6; }
+ CONF_NAME="${OPENJDK_TARGET_OS}-${OPENJDK_TARGET_CPU}-${JDK_VARIANT}-${JVM_VARIANTS_WITH_AND}-${DEBUG_LEVEL}"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: in build directory with custom name" >&5
+$as_echo "in build directory with custom name" >&6; }
+ fi
+ OUTPUT_ROOT="$SRC_ROOT/build/${CONF_NAME}"
+ $MKDIR -p "$OUTPUT_ROOT"
+ if test ! -d "$OUTPUT_ROOT"; then
+ as_fn_error $? "Could not create build directory $OUTPUT_ROOT" "$LINENO" 5
+ fi
+ else
+ # We are running configure from outside of the src dir.
+ # Then use the current directory as output dir!
+ # If configuration is situated in normal build directory, just use the build
+ # directory name as configuration name, otherwise use the complete path.
+ if test "x${CONF_NAME}" = x; then
+ CONF_NAME=`$ECHO $CURDIR | $SED -e "s!^${SRC_ROOT}/build/!!"`
+ fi
+ OUTPUT_ROOT="$CURDIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: in current directory" >&5
+$as_echo "in current directory" >&6; }
+
+ # WARNING: This might be a bad thing to do. You need to be sure you want to
+ # have a configuration in this directory. Do some sanity checks!
+
+ if test ! -e "$OUTPUT_ROOT/spec.gmk"; then
+ # If we have a spec.gmk, we have run here before and we are OK. Otherwise, check for
+ # other files
+ files_present=`$LS $OUTPUT_ROOT`
+ # Configure has already touched config.log and confdefs.h in the current dir when this check
+ # is performed.
+ filtered_files=`$ECHO "$files_present" \
+ | $SED -e 's/config.log//g' \
+ -e 's/configure.log//g' \
+ -e 's/confdefs.h//g' \
+ -e 's/ //g' \
+ | $TR -d '\n'`
+ if test "x$filtered_files" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Current directory is $CURDIR." >&5
+$as_echo "$as_me: Current directory is $CURDIR." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Since this is not the source root, configure will output the configuration here" >&5
+$as_echo "$as_me: Since this is not the source root, configure will output the configuration here" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (as opposed to creating a configuration in <src_root>/build/<conf-name>)." >&5
+$as_echo "$as_me: (as opposed to creating a configuration in <src_root>/build/<conf-name>)." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: However, this directory is not empty. This is not allowed, since it could" >&5
+$as_echo "$as_me: However, this directory is not empty. This is not allowed, since it could" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: seriously mess up just about everything." >&5
+$as_echo "$as_me: seriously mess up just about everything." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Try 'cd $SRC_ROOT' and restart configure" >&5
+$as_echo "$as_me: Try 'cd $SRC_ROOT' and restart configure" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (or create a new empty directory and cd to it)." >&5
+$as_echo "$as_me: (or create a new empty directory and cd to it)." >&6;}
+ as_fn_error $? "Will not continue creating configuration in $CURDIR" "$LINENO" 5
+ fi
+ fi
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking what configuration name to use" >&5
+$as_echo_n "checking what configuration name to use... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CONF_NAME" >&5
+$as_echo "$CONF_NAME" >&6; }
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$OUTPUT_ROOT" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$OUTPUT_ROOT"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OUTPUT_ROOT, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of OUTPUT_ROOT, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of OUTPUT_ROOT" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ OUTPUT_ROOT="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting OUTPUT_ROOT to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting OUTPUT_ROOT to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$OUTPUT_ROOT"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ OUTPUT_ROOT="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting OUTPUT_ROOT to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting OUTPUT_ROOT to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$OUTPUT_ROOT"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OUTPUT_ROOT, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of OUTPUT_ROOT, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of OUTPUT_ROOT, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ OUTPUT_ROOT="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ OUTPUT_ROOT="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ CONFIGURESUPPORT_OUTPUTDIR="$OUTPUT_ROOT/configure-support"
+ $MKDIR -p "$CONFIGURESUPPORT_OUTPUTDIR"
+
+ SPEC="$OUTPUT_ROOT/spec.gmk"
+
+
+
+
+
+ # The spec.gmk file contains all variables for the make system.
+ ac_config_files="$ac_config_files $OUTPUT_ROOT/spec.gmk:$AUTOCONF_DIR/spec.gmk.in"
+
+ # The bootcycle-spec.gmk file contains support for boot cycle builds.
+ ac_config_files="$ac_config_files $OUTPUT_ROOT/bootcycle-spec.gmk:$AUTOCONF_DIR/bootcycle-spec.gmk.in"
+
+ # The buildjdk-spec.gmk file contains support for building a buildjdk when cross compiling.
+ ac_config_files="$ac_config_files $OUTPUT_ROOT/buildjdk-spec.gmk:$AUTOCONF_DIR/buildjdk-spec.gmk.in"
+
+ # The compare.sh is used to compare the build output to other builds.
+ ac_config_files="$ac_config_files $OUTPUT_ROOT/compare.sh:$AUTOCONF_DIR/compare.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
+ # which will look for generated configurations
+ ac_config_files="$ac_config_files $OUTPUT_ROOT/Makefile:$AUTOCONF_DIR/Makefile.in"
+
+
+
+# Must be done before we can call HELP_MSG_MISSING_DEPENDENCY.
+
+ for ac_prog in apt-get yum brew port pkgutil pkgadd
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PKGHANDLER+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$PKGHANDLER"; then
+ ac_cv_prog_PKGHANDLER="$PKGHANDLER" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_PKGHANDLER="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+PKGHANDLER=$ac_cv_prog_PKGHANDLER
+if test -n "$PKGHANDLER"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGHANDLER" >&5
+$as_echo "$PKGHANDLER" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$PKGHANDLER" && break
+done
+
+
+
+# Setup tools that requires more complex handling, or that is not needed by the configure script.
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${MAKE+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+
+ # Try our hardest to locate a correct version of GNU make
+ for ac_prog in gmake
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CHECK_GMAKE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CHECK_GMAKE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CHECK_GMAKE="$CHECK_GMAKE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CHECK_GMAKE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CHECK_GMAKE=$ac_cv_path_CHECK_GMAKE
+if test -n "$CHECK_GMAKE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_GMAKE" >&5
+$as_echo "$CHECK_GMAKE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CHECK_GMAKE" && break
+done
+
+
+ MAKE_CANDIDATE=""$CHECK_GMAKE""
+ DESCRIPTION="gmake in PATH"
+
+ # On Cygwin, we require a newer version of make than on other platforms
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_VERSION_EXPR="-e 4\."
+ MAKE_REQUIRED_VERSION="4.0"
+ else
+ MAKE_VERSION_EXPR="-e 3\.8[12] -e 4\."
+ MAKE_REQUIRED_VERSION="3.81"
+ fi
+
+ if test "x$MAKE_CANDIDATE" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+ 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+ else
+ IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP $MAKE_VERSION_EXPR`
+ if test "x$IS_MODERN_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+ else
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_EXPECTED_ENV='cygwin'
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ MAKE_EXPECTED_ENV='msys'
+ else
+ as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+ fi
+ MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+ IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+ else
+ # Not relevant for non-Windows
+ IS_MAKE_CORRECT_ENV=true
+ fi
+ if test "x$IS_MAKE_CORRECT_ENV" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+ else
+ FOUND_MAKE=$MAKE_CANDIDATE
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FOUND_MAKE" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ FOUND_MAKE="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+ fi
+ fi
+
+
+ if test "x$FOUND_MAKE" = x; then
+ for ac_prog in make
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CHECK_MAKE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CHECK_MAKE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CHECK_MAKE="$CHECK_MAKE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CHECK_MAKE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CHECK_MAKE=$ac_cv_path_CHECK_MAKE
+if test -n "$CHECK_MAKE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_MAKE" >&5
+$as_echo "$CHECK_MAKE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CHECK_MAKE" && break
+done
+
+
+ MAKE_CANDIDATE=""$CHECK_MAKE""
+ DESCRIPTION="make in PATH"
+
+ # On Cygwin, we require a newer version of make than on other platforms
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_VERSION_EXPR="-e 4\."
+ MAKE_REQUIRED_VERSION="4.0"
+ else
+ MAKE_VERSION_EXPR="-e 3\.8[12] -e 4\."
+ MAKE_REQUIRED_VERSION="3.81"
+ fi
+
+ if test "x$MAKE_CANDIDATE" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+ 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+ else
+ IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP $MAKE_VERSION_EXPR`
+ if test "x$IS_MODERN_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+ else
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_EXPECTED_ENV='cygwin'
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ MAKE_EXPECTED_ENV='msys'
+ else
+ as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+ fi
+ MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+ IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+ else
+ # Not relevant for non-Windows
+ IS_MAKE_CORRECT_ENV=true
+ fi
+ if test "x$IS_MAKE_CORRECT_ENV" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+ else
+ FOUND_MAKE=$MAKE_CANDIDATE
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FOUND_MAKE" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ FOUND_MAKE="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+ fi
+ fi
+
+ fi
+
+ if test "x$FOUND_MAKE" = x; then
+ if test "x$TOOLCHAIN_PATH" != x; then
+ # We have a toolchain path, check that as well before giving up.
+ OLD_PATH=$PATH
+ PATH=$TOOLCHAIN_PATH:$PATH
+ for ac_prog in gmake
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CHECK_TOOLSDIR_GMAKE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CHECK_TOOLSDIR_GMAKE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CHECK_TOOLSDIR_GMAKE="$CHECK_TOOLSDIR_GMAKE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CHECK_TOOLSDIR_GMAKE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CHECK_TOOLSDIR_GMAKE=$ac_cv_path_CHECK_TOOLSDIR_GMAKE
+if test -n "$CHECK_TOOLSDIR_GMAKE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_TOOLSDIR_GMAKE" >&5
+$as_echo "$CHECK_TOOLSDIR_GMAKE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CHECK_TOOLSDIR_GMAKE" && break
+done
+
+
+ MAKE_CANDIDATE=""$CHECK_TOOLSDIR_GMAKE""
+ DESCRIPTION="gmake in tools-dir"
+
+ # On Cygwin, we require a newer version of make than on other platforms
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_VERSION_EXPR="-e 4\."
+ MAKE_REQUIRED_VERSION="4.0"
+ else
+ MAKE_VERSION_EXPR="-e 3\.8[12] -e 4\."
+ MAKE_REQUIRED_VERSION="3.81"
+ fi
+
+ if test "x$MAKE_CANDIDATE" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+ 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+ else
+ IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP $MAKE_VERSION_EXPR`
+ if test "x$IS_MODERN_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+ else
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_EXPECTED_ENV='cygwin'
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ MAKE_EXPECTED_ENV='msys'
+ else
+ as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+ fi
+ MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+ IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+ else
+ # Not relevant for non-Windows
+ IS_MAKE_CORRECT_ENV=true
+ fi
+ if test "x$IS_MAKE_CORRECT_ENV" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+ else
+ FOUND_MAKE=$MAKE_CANDIDATE
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FOUND_MAKE" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ FOUND_MAKE="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_MAKE" = x; then
+ for ac_prog in make
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CHECK_TOOLSDIR_MAKE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CHECK_TOOLSDIR_MAKE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CHECK_TOOLSDIR_MAKE="$CHECK_TOOLSDIR_MAKE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CHECK_TOOLSDIR_MAKE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CHECK_TOOLSDIR_MAKE=$ac_cv_path_CHECK_TOOLSDIR_MAKE
+if test -n "$CHECK_TOOLSDIR_MAKE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_TOOLSDIR_MAKE" >&5
+$as_echo "$CHECK_TOOLSDIR_MAKE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CHECK_TOOLSDIR_MAKE" && break
+done
+
+
+ MAKE_CANDIDATE=""$CHECK_TOOLSDIR_MAKE""
+ DESCRIPTION="make in tools-dir"
+
+ # On Cygwin, we require a newer version of make than on other platforms
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_VERSION_EXPR="-e 4\."
+ MAKE_REQUIRED_VERSION="4.0"
+ else
+ MAKE_VERSION_EXPR="-e 3\.8[12] -e 4\."
+ MAKE_REQUIRED_VERSION="3.81"
+ fi
+
+ if test "x$MAKE_CANDIDATE" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+ 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+ else
+ IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP $MAKE_VERSION_EXPR`
+ if test "x$IS_MODERN_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+ else
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_EXPECTED_ENV='cygwin'
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ MAKE_EXPECTED_ENV='msys'
+ else
+ as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+ fi
+ MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+ IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+ else
+ # Not relevant for non-Windows
+ IS_MAKE_CORRECT_ENV=true
+ fi
+ if test "x$IS_MAKE_CORRECT_ENV" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+ else
+ FOUND_MAKE=$MAKE_CANDIDATE
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FOUND_MAKE" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ FOUND_MAKE="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+ fi
+ fi
+
+ fi
+ PATH=$OLD_PATH
+ fi
+ fi
+
+ if test "x$FOUND_MAKE" = x; then
+ as_fn_error $? "Cannot find GNU make $MAKE_REQUIRED_VERSION or newer! Please put it in the path, or add e.g. MAKE=/opt/gmake3.81/make as argument to configure." "$LINENO" 5
+ fi
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !MAKE! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!MAKE!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xMAKE" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of MAKE from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of MAKE from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+
+ # Try our hardest to locate a correct version of GNU make
+ for ac_prog in gmake
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CHECK_GMAKE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CHECK_GMAKE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CHECK_GMAKE="$CHECK_GMAKE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CHECK_GMAKE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CHECK_GMAKE=$ac_cv_path_CHECK_GMAKE
+if test -n "$CHECK_GMAKE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_GMAKE" >&5
+$as_echo "$CHECK_GMAKE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CHECK_GMAKE" && break
+done
+
+
+ MAKE_CANDIDATE=""$CHECK_GMAKE""
+ DESCRIPTION="gmake in PATH"
+
+ # On Cygwin, we require a newer version of make than on other platforms
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_VERSION_EXPR="-e 4\."
+ MAKE_REQUIRED_VERSION="4.0"
+ else
+ MAKE_VERSION_EXPR="-e 3\.8[12] -e 4\."
+ MAKE_REQUIRED_VERSION="3.81"
+ fi
+
+ if test "x$MAKE_CANDIDATE" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+ 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+ else
+ IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP $MAKE_VERSION_EXPR`
+ if test "x$IS_MODERN_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+ else
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_EXPECTED_ENV='cygwin'
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ MAKE_EXPECTED_ENV='msys'
+ else
+ as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+ fi
+ MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+ IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+ else
+ # Not relevant for non-Windows
+ IS_MAKE_CORRECT_ENV=true
+ fi
+ if test "x$IS_MAKE_CORRECT_ENV" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+ else
+ FOUND_MAKE=$MAKE_CANDIDATE
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FOUND_MAKE" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ FOUND_MAKE="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+ fi
+ fi
+
+
+ if test "x$FOUND_MAKE" = x; then
+ for ac_prog in make
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CHECK_MAKE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CHECK_MAKE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CHECK_MAKE="$CHECK_MAKE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CHECK_MAKE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CHECK_MAKE=$ac_cv_path_CHECK_MAKE
+if test -n "$CHECK_MAKE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_MAKE" >&5
+$as_echo "$CHECK_MAKE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CHECK_MAKE" && break
+done
+
+
+ MAKE_CANDIDATE=""$CHECK_MAKE""
+ DESCRIPTION="make in PATH"
+
+ # On Cygwin, we require a newer version of make than on other platforms
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_VERSION_EXPR="-e 4\."
+ MAKE_REQUIRED_VERSION="4.0"
+ else
+ MAKE_VERSION_EXPR="-e 3\.8[12] -e 4\."
+ MAKE_REQUIRED_VERSION="3.81"
+ fi
+
+ if test "x$MAKE_CANDIDATE" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+ 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+ else
+ IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP $MAKE_VERSION_EXPR`
+ if test "x$IS_MODERN_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+ else
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_EXPECTED_ENV='cygwin'
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ MAKE_EXPECTED_ENV='msys'
+ else
+ as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+ fi
+ MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+ IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+ else
+ # Not relevant for non-Windows
+ IS_MAKE_CORRECT_ENV=true
+ fi
+ if test "x$IS_MAKE_CORRECT_ENV" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+ else
+ FOUND_MAKE=$MAKE_CANDIDATE
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FOUND_MAKE" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ FOUND_MAKE="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+ fi
+ fi
+
+ fi
+
+ if test "x$FOUND_MAKE" = x; then
+ if test "x$TOOLCHAIN_PATH" != x; then
+ # We have a toolchain path, check that as well before giving up.
+ OLD_PATH=$PATH
+ PATH=$TOOLCHAIN_PATH:$PATH
+ for ac_prog in gmake
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CHECK_TOOLSDIR_GMAKE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CHECK_TOOLSDIR_GMAKE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CHECK_TOOLSDIR_GMAKE="$CHECK_TOOLSDIR_GMAKE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CHECK_TOOLSDIR_GMAKE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CHECK_TOOLSDIR_GMAKE=$ac_cv_path_CHECK_TOOLSDIR_GMAKE
+if test -n "$CHECK_TOOLSDIR_GMAKE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_TOOLSDIR_GMAKE" >&5
+$as_echo "$CHECK_TOOLSDIR_GMAKE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CHECK_TOOLSDIR_GMAKE" && break
+done
+
+
+ MAKE_CANDIDATE=""$CHECK_TOOLSDIR_GMAKE""
+ DESCRIPTION="gmake in tools-dir"
+
+ # On Cygwin, we require a newer version of make than on other platforms
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_VERSION_EXPR="-e 4\."
+ MAKE_REQUIRED_VERSION="4.0"
+ else
+ MAKE_VERSION_EXPR="-e 3\.8[12] -e 4\."
+ MAKE_REQUIRED_VERSION="3.81"
+ fi
+
+ if test "x$MAKE_CANDIDATE" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+ 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+ else
+ IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP $MAKE_VERSION_EXPR`
+ if test "x$IS_MODERN_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+ else
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_EXPECTED_ENV='cygwin'
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ MAKE_EXPECTED_ENV='msys'
+ else
+ as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+ fi
+ MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+ IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+ else
+ # Not relevant for non-Windows
+ IS_MAKE_CORRECT_ENV=true
+ fi
+ if test "x$IS_MAKE_CORRECT_ENV" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+ else
+ FOUND_MAKE=$MAKE_CANDIDATE
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FOUND_MAKE" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ FOUND_MAKE="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_MAKE" = x; then
+ for ac_prog in make
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CHECK_TOOLSDIR_MAKE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CHECK_TOOLSDIR_MAKE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CHECK_TOOLSDIR_MAKE="$CHECK_TOOLSDIR_MAKE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CHECK_TOOLSDIR_MAKE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CHECK_TOOLSDIR_MAKE=$ac_cv_path_CHECK_TOOLSDIR_MAKE
+if test -n "$CHECK_TOOLSDIR_MAKE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_TOOLSDIR_MAKE" >&5
+$as_echo "$CHECK_TOOLSDIR_MAKE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CHECK_TOOLSDIR_MAKE" && break
+done
+
+
+ MAKE_CANDIDATE=""$CHECK_TOOLSDIR_MAKE""
+ DESCRIPTION="make in tools-dir"
+
+ # On Cygwin, we require a newer version of make than on other platforms
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_VERSION_EXPR="-e 4\."
+ MAKE_REQUIRED_VERSION="4.0"
+ else
+ MAKE_VERSION_EXPR="-e 3\.8[12] -e 4\."
+ MAKE_REQUIRED_VERSION="3.81"
+ fi
+
+ if test "x$MAKE_CANDIDATE" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+ 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+ else
+ IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP $MAKE_VERSION_EXPR`
+ if test "x$IS_MODERN_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+ else
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_EXPECTED_ENV='cygwin'
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ MAKE_EXPECTED_ENV='msys'
+ else
+ as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+ fi
+ MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+ IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+ else
+ # Not relevant for non-Windows
+ IS_MAKE_CORRECT_ENV=true
+ fi
+ if test "x$IS_MAKE_CORRECT_ENV" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+ else
+ FOUND_MAKE=$MAKE_CANDIDATE
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FOUND_MAKE" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ FOUND_MAKE="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+ fi
+ fi
+
+ fi
+ PATH=$OLD_PATH
+ fi
+ fi
+
+ if test "x$FOUND_MAKE" = x; then
+ as_fn_error $? "Cannot find GNU make $MAKE_REQUIRED_VERSION or newer! Please put it in the path, or add e.g. MAKE=/opt/gmake3.81/make as argument to configure." "$LINENO" 5
+ fi
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool MAKE= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool MAKE= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAKE" >&5
+$as_echo_n "checking for MAKE... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$MAKE"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool MAKE=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool MAKE=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_MAKE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $MAKE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_MAKE="$MAKE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_MAKE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+MAKE=$ac_cv_path_MAKE
+if test -n "$MAKE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKE" >&5
+$as_echo "$MAKE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$MAKE" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool MAKE=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool MAKE=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MAKE" >&5
+$as_echo_n "checking for MAKE... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool MAKE=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ # If MAKE was set by user, verify the version
+
+ MAKE_CANDIDATE=""$MAKE""
+ DESCRIPTION="user supplied MAKE=$MAKE"
+
+ # On Cygwin, we require a newer version of make than on other platforms
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_VERSION_EXPR="-e 4\."
+ MAKE_REQUIRED_VERSION="4.0"
+ else
+ MAKE_VERSION_EXPR="-e 3\.8[12] -e 4\."
+ MAKE_REQUIRED_VERSION="3.81"
+ fi
+
+ if test "x$MAKE_CANDIDATE" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&5
+$as_echo "$as_me: Testing potential make at $MAKE_CANDIDATE, found using $DESCRIPTION" >&6;}
+ 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&5
+$as_echo "$as_me: Found potential make at $MAKE_CANDIDATE, however, this is not GNU Make. Ignoring." >&6;}
+ else
+ IS_MODERN_MAKE=`$ECHO $MAKE_VERSION_STRING | $GREP $MAKE_VERSION_EXPR`
+ if test "x$IS_MODERN_MAKE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&5
+$as_echo "$as_me: Found GNU make at $MAKE_CANDIDATE, however this is not version $MAKE_REQUIRED_VERSION or later. (it is: $MAKE_VERSION_STRING). Ignoring." >&6;}
+ else
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ MAKE_EXPECTED_ENV='cygwin'
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ MAKE_EXPECTED_ENV='msys'
+ else
+ as_fn_error $? "Unknown Windows environment" "$LINENO" 5
+ fi
+ MAKE_BUILT_FOR=`$MAKE_CANDIDATE --version | $GREP -i 'built for'`
+ IS_MAKE_CORRECT_ENV=`$ECHO $MAKE_BUILT_FOR | $GREP $MAKE_EXPECTED_ENV`
+ else
+ # Not relevant for non-Windows
+ IS_MAKE_CORRECT_ENV=true
+ fi
+ if test "x$IS_MAKE_CORRECT_ENV" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&5
+$as_echo "$as_me: Found GNU make version $MAKE_VERSION_STRING at $MAKE_CANDIDATE, but it is not for $MAKE_EXPECTED_ENV (it says: $MAKE_BUILT_FOR). Ignoring." >&6;}
+ else
+ FOUND_MAKE=$MAKE_CANDIDATE
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FOUND_MAKE" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$FOUND_MAKE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of FOUND_MAKE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of FOUND_MAKE" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ FOUND_MAKE="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FOUND_MAKE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting FOUND_MAKE to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_MAKE" = x; then
+ as_fn_error $? "The specified make (by MAKE=$MAKE) is not GNU make $MAKE_REQUIRED_VERSION or newer." "$LINENO" 5
+ fi
+
+ fi
+
+
+ MAKE=$FOUND_MAKE
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Using GNU make at $FOUND_MAKE (version: $MAKE_VERSION_STRING)" >&5
+$as_echo "$as_me: Using GNU make at $FOUND_MAKE (version: $MAKE_VERSION_STRING)" >&6;}
+
+
+ # Check if make supports the output sync option and if so, setup using it.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if make --output-sync is supported" >&5
+$as_echo_n "checking if make --output-sync is supported... " >&6; }
+ if $MAKE --version -O > /dev/null 2>&1; then
+ OUTPUT_SYNC_SUPPORTED=true
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for output-sync value" >&5
+$as_echo_n "checking for output-sync value... " >&6; }
+
+# Check whether --with-output-sync was given.
+if test "${with_output_sync+set}" = set; then :
+ withval=$with_output_sync; OUTPUT_SYNC=$with_output_sync
+fi
+
+ if test "x$OUTPUT_SYNC" = "x"; then
+ OUTPUT_SYNC=none
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OUTPUT_SYNC" >&5
+$as_echo "$OUTPUT_SYNC" >&6; }
+ if ! $MAKE --version -O$OUTPUT_SYNC > /dev/null 2>&1; then
+ as_fn_error $? "Make did not the support the value $OUTPUT_SYNC as output sync type." "$LINENO" 5
+ fi
+ else
+ OUTPUT_SYNC_SUPPORTED=false
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+
+
+
+
+
+
+ # Test if find supports -delete
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if find supports -delete" >&5
+$as_echo_n "checking if find supports -delete... " >&6; }
+ FIND_DELETE="-delete"
+
+ DELETEDIR=`$MKTEMP -d tmp.XXXXXXXXXX` || (echo Could not create temporary directory!; exit $?)
+
+ echo Hejsan > $DELETEDIR/TestIfFindSupportsDelete
+
+ TEST_DELETE=`$FIND "$DELETEDIR" -name TestIfFindSupportsDelete $FIND_DELETE 2>&1`
+ if test -f $DELETEDIR/TestIfFindSupportsDelete; then
+ # No, it does not.
+ $RM $DELETEDIR/TestIfFindSupportsDelete
+ if test "x$OPENJDK_TARGET_OS" = "xaix"; then
+ # AIX 'find' is buggy if called with '-exec {} \+' and an empty file list
+ FIND_DELETE="-print | $XARGS $RM"
+ else
+ FIND_DELETE="-exec $RM \{\} \+"
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ fi
+ $RMDIR $DELETEDIR
+
+
+
+ # Test which kind of tar was found
+ if test "x$($TAR --version | $GREP "GNU tar")" != "x"; then
+ TAR_TYPE="gnu"
+ elif test "x$($TAR --version | $GREP "bsdtar")" != "x"; then
+ TAR_TYPE="bsd"
+ elif test "x$($TAR -v | $GREP "bsdtar")" != "x"; then
+ TAR_TYPE="bsd"
+ elif test "x$OPENJDK_BUILD_OS" = "xsolaris"; then
+ TAR_TYPE="solaris"
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking what type of tar was found" >&5
+$as_echo_n "checking what type of tar was found... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAR_TYPE" >&5
+$as_echo "$TAR_TYPE" >&6; }
+
+ TAR_CREATE_FILE_PARAM=""
+
+ if test "x$TAR_TYPE" = "xgnu"; then
+ TAR_INCLUDE_PARAM="T"
+ TAR_SUPPORTS_TRANSFORM="true"
+ if test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
+ # When using gnu tar for Solaris targets, need to use compatibility mode
+ TAR_CREATE_EXTRA_PARAM="--format=ustar"
+ fi
+ else
+ TAR_INCLUDE_PARAM="I"
+ TAR_SUPPORTS_TRANSFORM="false"
+ fi
+
+
+
+
+
+
+ # Test that grep supports -Fx with a list of pattern which includes null pattern.
+ # This is a problem for the grep resident on AIX.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking that grep ($GREP) -Fx handles empty lines in the pattern list correctly" >&5
+$as_echo_n "checking that grep ($GREP) -Fx handles empty lines in the pattern list correctly... " >&6; }
+ # Multiple subsequent spaces..
+ STACK_SPACES='aaa bbb ccc'
+ # ..converted to subsequent newlines, causes STACK_LIST to be a list with some empty
+ # patterns in it.
+ STACK_LIST=${STACK_SPACES// /$'\n'}
+ NEEDLE_SPACES='ccc bbb aaa'
+ NEEDLE_LIST=${NEEDLE_SPACES// /$'\n'}
+ RESULT="$($GREP -Fvx "$STACK_LIST" <<< "$NEEDLE_LIST")"
+ if test "x$RESULT" == "x"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ if test "x$OPENJDK_TARGET_OS" = "xaix"; then
+ ADDINFO="Please make sure you use GNU grep, usually found at /opt/freeware/bin."
+ fi
+ as_fn_error $? "grep does not handle -Fx correctly. ${ADDINFO}" "$LINENO" 5
+ fi
+
+
+ # These tools might not be installed by default,
+ # need hint on how to install them.
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${UNZIP+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in unzip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_UNZIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $UNZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_UNZIP="$UNZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_UNZIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+UNZIP=$ac_cv_path_UNZIP
+if test -n "$UNZIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNZIP" >&5
+$as_echo "$UNZIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$UNZIP" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !UNZIP! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!UNZIP!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xUNZIP" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of UNZIP from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of UNZIP from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in unzip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_UNZIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $UNZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_UNZIP="$UNZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_UNZIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+UNZIP=$ac_cv_path_UNZIP
+if test -n "$UNZIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNZIP" >&5
+$as_echo "$UNZIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$UNZIP" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$UNZIP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool UNZIP= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool UNZIP= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for UNZIP" >&5
+$as_echo_n "checking for UNZIP... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$UNZIP"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool UNZIP=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool UNZIP=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_UNZIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $UNZIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_UNZIP="$UNZIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_UNZIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+UNZIP=$ac_cv_path_UNZIP
+if test -n "$UNZIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNZIP" >&5
+$as_echo "$UNZIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$UNZIP" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool UNZIP=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool UNZIP=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for UNZIP" >&5
+$as_echo_n "checking for UNZIP... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool UNZIP=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$UNZIP" = x; then
+ as_fn_error $? "Could not find required tool for UNZIP" "$LINENO" 5
+ fi
+
+
+ # Since zip uses "ZIP" as a environment variable for passing options, we need
+ # to name our variable differently, hence ZIPEXE.
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${ZIPEXE+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in zip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ZIPEXE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ZIPEXE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ZIPEXE="$ZIPEXE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ZIPEXE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ZIPEXE=$ac_cv_path_ZIPEXE
+if test -n "$ZIPEXE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ZIPEXE" >&5
+$as_echo "$ZIPEXE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ZIPEXE" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !ZIPEXE! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!ZIPEXE!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xZIPEXE" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of ZIPEXE from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of ZIPEXE from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in zip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ZIPEXE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ZIPEXE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ZIPEXE="$ZIPEXE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ZIPEXE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ZIPEXE=$ac_cv_path_ZIPEXE
+if test -n "$ZIPEXE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ZIPEXE" >&5
+$as_echo "$ZIPEXE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ZIPEXE" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$ZIPEXE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool ZIPEXE= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool ZIPEXE= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZIPEXE" >&5
+$as_echo_n "checking for ZIPEXE... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$ZIPEXE"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool ZIPEXE=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool ZIPEXE=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ZIPEXE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ZIPEXE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ZIPEXE="$ZIPEXE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ZIPEXE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ZIPEXE=$ac_cv_path_ZIPEXE
+if test -n "$ZIPEXE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ZIPEXE" >&5
+$as_echo "$ZIPEXE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$ZIPEXE" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool ZIPEXE=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool ZIPEXE=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZIPEXE" >&5
+$as_echo_n "checking for ZIPEXE... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool ZIPEXE=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$ZIPEXE" = x; then
+ as_fn_error $? "Could not find required tool for ZIPEXE" "$LINENO" 5
+ fi
+
+
+
+ # Non-required basic tools
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${LDD+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in ldd
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_LDD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $LDD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_LDD="$LDD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_LDD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+LDD=$ac_cv_path_LDD
+if test -n "$LDD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LDD" >&5
+$as_echo "$LDD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LDD" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !LDD! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!LDD!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xLDD" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of LDD from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of LDD from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in ldd
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_LDD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $LDD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_LDD="$LDD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_LDD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+LDD=$ac_cv_path_LDD
+if test -n "$LDD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LDD" >&5
+$as_echo "$LDD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LDD" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$LDD" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool LDD= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool LDD= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LDD" >&5
+$as_echo_n "checking for LDD... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$LDD"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool LDD=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool LDD=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_LDD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $LDD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_LDD="$LDD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_LDD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+LDD=$ac_cv_path_LDD
+if test -n "$LDD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LDD" >&5
+$as_echo "$LDD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$LDD" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool LDD=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool LDD=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LDD" >&5
+$as_echo_n "checking for LDD... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool LDD=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ if test "x$LDD" = "x"; then
+ # List shared lib dependencies is used for
+ # debug output and checking for forbidden dependencies.
+ # We can build without it.
+ LDD="true"
+ fi
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${OTOOL+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in otool
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_OTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $OTOOL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_OTOOL="$OTOOL" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_OTOOL="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+OTOOL=$ac_cv_path_OTOOL
+if test -n "$OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$OTOOL" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !OTOOL! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!OTOOL!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xOTOOL" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of OTOOL from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of OTOOL from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in otool
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_OTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $OTOOL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_OTOOL="$OTOOL" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_OTOOL="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+OTOOL=$ac_cv_path_OTOOL
+if test -n "$OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$OTOOL" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$OTOOL" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool OTOOL= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool OTOOL= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OTOOL" >&5
+$as_echo_n "checking for OTOOL... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$OTOOL"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool OTOOL=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool OTOOL=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_OTOOL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $OTOOL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_OTOOL="$OTOOL" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_OTOOL="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+OTOOL=$ac_cv_path_OTOOL
+if test -n "$OTOOL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$OTOOL" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool OTOOL=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool OTOOL=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OTOOL" >&5
+$as_echo_n "checking for OTOOL... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool OTOOL=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ if test "x$OTOOL" = "x"; then
+ OTOOL="true"
+ fi
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${READELF+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in greadelf readelf
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_READELF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $READELF in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_READELF="$READELF" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_READELF="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+READELF=$ac_cv_path_READELF
+if test -n "$READELF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5
+$as_echo "$READELF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$READELF" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !READELF! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!READELF!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xREADELF" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of READELF from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of READELF from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in greadelf readelf
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_READELF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $READELF in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_READELF="$READELF" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_READELF="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+READELF=$ac_cv_path_READELF
+if test -n "$READELF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5
+$as_echo "$READELF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$READELF" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$READELF" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool READELF= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool READELF= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for READELF" >&5
+$as_echo_n "checking for READELF... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$READELF"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool READELF=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool READELF=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_READELF+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $READELF in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_READELF="$READELF" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_READELF="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+READELF=$ac_cv_path_READELF
+if test -n "$READELF"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5
+$as_echo "$READELF" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$READELF" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool READELF=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool READELF=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for READELF" >&5
+$as_echo_n "checking for READELF... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool READELF=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${DOT+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in dot
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DOT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DOT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DOT="$DOT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DOT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DOT=$ac_cv_path_DOT
+if test -n "$DOT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOT" >&5
+$as_echo "$DOT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DOT" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !DOT! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!DOT!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xDOT" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of DOT from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of DOT from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in dot
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DOT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DOT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DOT="$DOT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DOT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DOT=$ac_cv_path_DOT
+if test -n "$DOT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOT" >&5
+$as_echo "$DOT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DOT" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$DOT" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool DOT= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool DOT= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DOT" >&5
+$as_echo_n "checking for DOT... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$DOT"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool DOT=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool DOT=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DOT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DOT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DOT="$DOT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DOT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DOT=$ac_cv_path_DOT
+if test -n "$DOT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DOT" >&5
+$as_echo "$DOT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$DOT" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool DOT=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool DOT=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DOT" >&5
+$as_echo_n "checking for DOT... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool DOT=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${HG+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in hg
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_HG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $HG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_HG="$HG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_HG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+HG=$ac_cv_path_HG
+if test -n "$HG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HG" >&5
+$as_echo "$HG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$HG" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !HG! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!HG!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xHG" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of HG from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of HG from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in hg
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_HG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $HG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_HG="$HG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_HG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+HG=$ac_cv_path_HG
+if test -n "$HG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HG" >&5
+$as_echo "$HG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$HG" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$HG" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool HG= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool HG= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HG" >&5
+$as_echo_n "checking for HG... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$HG"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool HG=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool HG=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_HG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $HG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_HG="$HG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_HG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+HG=$ac_cv_path_HG
+if test -n "$HG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HG" >&5
+$as_echo "$HG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$HG" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool HG=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool HG=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HG" >&5
+$as_echo_n "checking for HG... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool HG=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${STAT+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in stat
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_STAT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $STAT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_STAT="$STAT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_STAT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+STAT=$ac_cv_path_STAT
+if test -n "$STAT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STAT" >&5
+$as_echo "$STAT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$STAT" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !STAT! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!STAT!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xSTAT" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of STAT from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of STAT from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in stat
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_STAT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $STAT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_STAT="$STAT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_STAT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+STAT=$ac_cv_path_STAT
+if test -n "$STAT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STAT" >&5
+$as_echo "$STAT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$STAT" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$STAT" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool STAT= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool STAT= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for STAT" >&5
+$as_echo_n "checking for STAT... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$STAT"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool STAT=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool STAT=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_STAT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $STAT in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_STAT="$STAT" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_STAT="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+STAT=$ac_cv_path_STAT
+if test -n "$STAT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STAT" >&5
+$as_echo "$STAT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$STAT" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool STAT=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool STAT=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for STAT" >&5
+$as_echo_n "checking for STAT... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool STAT=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${TIME+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in time
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TIME+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TIME in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TIME="$TIME" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TIME="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TIME=$ac_cv_path_TIME
+if test -n "$TIME"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TIME" >&5
+$as_echo "$TIME" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$TIME" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !TIME! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!TIME!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xTIME" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of TIME from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of TIME from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in time
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TIME+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TIME in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TIME="$TIME" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TIME="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TIME=$ac_cv_path_TIME
+if test -n "$TIME"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TIME" >&5
+$as_echo "$TIME" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$TIME" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$TIME" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool TIME= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool TIME= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIME" >&5
+$as_echo_n "checking for TIME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$TIME"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool TIME=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool TIME=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TIME+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TIME in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TIME="$TIME" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TIME="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TIME=$ac_cv_path_TIME
+if test -n "$TIME"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TIME" >&5
+$as_echo "$TIME" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$TIME" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool TIME=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool TIME=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TIME" >&5
+$as_echo_n "checking for TIME... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool TIME=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ # Dtrace is usually found in /usr/sbin on Solaris, but that directory may not
+ # be in the user path.
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${DTRACE+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in dtrace
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DTRACE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DTRACE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DTRACE="$DTRACE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/sbin"
+for as_dir in $as_dummy
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DTRACE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DTRACE=$ac_cv_path_DTRACE
+if test -n "$DTRACE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DTRACE" >&5
+$as_echo "$DTRACE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DTRACE" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !DTRACE! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!DTRACE!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xDTRACE" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of DTRACE from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of DTRACE from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in dtrace
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DTRACE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DTRACE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DTRACE="$DTRACE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$PATH:/usr/sbin"
+for as_dir in $as_dummy
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DTRACE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DTRACE=$ac_cv_path_DTRACE
+if test -n "$DTRACE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DTRACE" >&5
+$as_echo "$DTRACE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DTRACE" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$DTRACE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool DTRACE= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool DTRACE= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DTRACE" >&5
+$as_echo_n "checking for DTRACE... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$DTRACE"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool DTRACE=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool DTRACE=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DTRACE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DTRACE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DTRACE="$DTRACE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DTRACE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DTRACE=$ac_cv_path_DTRACE
+if test -n "$DTRACE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DTRACE" >&5
+$as_echo "$DTRACE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$DTRACE" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool DTRACE=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool DTRACE=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DTRACE" >&5
+$as_echo_n "checking for DTRACE... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool DTRACE=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${PATCH+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in gpatch patch
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PATCH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PATCH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PATCH="$PATCH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PATCH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PATCH=$ac_cv_path_PATCH
+if test -n "$PATCH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATCH" >&5
+$as_echo "$PATCH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$PATCH" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !PATCH! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!PATCH!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xPATCH" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of PATCH from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of PATCH from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in gpatch patch
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PATCH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PATCH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PATCH="$PATCH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PATCH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PATCH=$ac_cv_path_PATCH
+if test -n "$PATCH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATCH" >&5
+$as_echo "$PATCH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$PATCH" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$PATCH" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool PATCH= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool PATCH= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PATCH" >&5
+$as_echo_n "checking for PATCH... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$PATCH"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool PATCH=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool PATCH=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PATCH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PATCH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PATCH="$PATCH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PATCH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PATCH=$ac_cv_path_PATCH
+if test -n "$PATCH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PATCH" >&5
+$as_echo "$PATCH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$PATCH" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool PATCH=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool PATCH=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PATCH" >&5
+$as_echo_n "checking for PATCH... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool PATCH=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ # Check if it's GNU time
+ IS_GNU_TIME=`$TIME --version 2>&1 | $GREP 'GNU time'`
+ if test "x$IS_GNU_TIME" != x; then
+ IS_GNU_TIME=yes
+ else
+ IS_GNU_TIME=no
+ fi
+
+
+ if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${DSYMUTIL+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in dsymutil
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DSYMUTIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DSYMUTIL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DSYMUTIL="$DSYMUTIL" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DSYMUTIL="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DSYMUTIL=$ac_cv_path_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DSYMUTIL" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !DSYMUTIL! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!DSYMUTIL!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xDSYMUTIL" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of DSYMUTIL from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of DSYMUTIL from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in dsymutil
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DSYMUTIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DSYMUTIL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DSYMUTIL="$DSYMUTIL" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DSYMUTIL="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DSYMUTIL=$ac_cv_path_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$DSYMUTIL" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$DSYMUTIL" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool DSYMUTIL= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool DSYMUTIL= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DSYMUTIL" >&5
+$as_echo_n "checking for DSYMUTIL... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$DSYMUTIL"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool DSYMUTIL=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool DSYMUTIL=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_DSYMUTIL+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $DSYMUTIL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_DSYMUTIL="$DSYMUTIL" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_DSYMUTIL="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+DSYMUTIL=$ac_cv_path_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$DSYMUTIL" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool DSYMUTIL=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool DSYMUTIL=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DSYMUTIL" >&5
+$as_echo_n "checking for DSYMUTIL... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool DSYMUTIL=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$DSYMUTIL" = x; then
+ as_fn_error $? "Could not find required tool for DSYMUTIL" "$LINENO" 5
+ fi
+
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${XATTR+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in xattr
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XATTR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $XATTR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XATTR="$XATTR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_XATTR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+XATTR=$ac_cv_path_XATTR
+if test -n "$XATTR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XATTR" >&5
+$as_echo "$XATTR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$XATTR" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !XATTR! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!XATTR!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xXATTR" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of XATTR from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of XATTR from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in xattr
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XATTR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $XATTR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XATTR="$XATTR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_XATTR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+XATTR=$ac_cv_path_XATTR
+if test -n "$XATTR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XATTR" >&5
+$as_echo "$XATTR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$XATTR" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$XATTR" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool XATTR= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool XATTR= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XATTR" >&5
+$as_echo_n "checking for XATTR... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$XATTR"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool XATTR=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool XATTR=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_XATTR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $XATTR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_XATTR="$XATTR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_XATTR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+XATTR=$ac_cv_path_XATTR
+if test -n "$XATTR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XATTR" >&5
+$as_echo "$XATTR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$XATTR" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool XATTR=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool XATTR=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XATTR" >&5
+$as_echo_n "checking for XATTR... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool XATTR=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$XATTR" = x; then
+ as_fn_error $? "Could not find required tool for XATTR" "$LINENO" 5
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${CODESIGN+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in codesign
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CODESIGN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CODESIGN in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CODESIGN="$CODESIGN" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CODESIGN="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CODESIGN=$ac_cv_path_CODESIGN
+if test -n "$CODESIGN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CODESIGN" >&5
+$as_echo "$CODESIGN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CODESIGN" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !CODESIGN! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CODESIGN!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xCODESIGN" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CODESIGN from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of CODESIGN from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in codesign
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CODESIGN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CODESIGN in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CODESIGN="$CODESIGN" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CODESIGN="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CODESIGN=$ac_cv_path_CODESIGN
+if test -n "$CODESIGN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CODESIGN" >&5
+$as_echo "$CODESIGN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CODESIGN" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$CODESIGN" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool CODESIGN= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool CODESIGN= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CODESIGN" >&5
+$as_echo_n "checking for CODESIGN... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$CODESIGN"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CODESIGN=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool CODESIGN=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CODESIGN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CODESIGN in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CODESIGN="$CODESIGN" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CODESIGN="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CODESIGN=$ac_cv_path_CODESIGN
+if test -n "$CODESIGN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CODESIGN" >&5
+$as_echo "$CODESIGN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$CODESIGN" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CODESIGN=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool CODESIGN=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CODESIGN" >&5
+$as_echo_n "checking for CODESIGN... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool CODESIGN=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ if test "x$CODESIGN" != "x"; then
+ # Verify that the openjdk_codesign certificate is present
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if openjdk_codesign certificate is present" >&5
+$as_echo_n "checking if openjdk_codesign certificate is present... " >&6; }
+ $RM codesign-testfile
+ $TOUCH codesign-testfile
+ $CODESIGN -s openjdk_codesign codesign-testfile 2>&5 >&5 || CODESIGN=
+ $RM codesign-testfile
+ if test "x$CODESIGN" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ fi
+ fi
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${SETFILE+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in SetFile
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_SETFILE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $SETFILE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_SETFILE="$SETFILE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_SETFILE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+SETFILE=$ac_cv_path_SETFILE
+if test -n "$SETFILE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SETFILE" >&5
+$as_echo "$SETFILE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$SETFILE" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !SETFILE! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!SETFILE!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xSETFILE" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of SETFILE from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of SETFILE from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in SetFile
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_SETFILE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $SETFILE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_SETFILE="$SETFILE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_SETFILE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+SETFILE=$ac_cv_path_SETFILE
+if test -n "$SETFILE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SETFILE" >&5
+$as_echo "$SETFILE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$SETFILE" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$SETFILE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool SETFILE= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool SETFILE= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SETFILE" >&5
+$as_echo_n "checking for SETFILE... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$SETFILE"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool SETFILE=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool SETFILE=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_SETFILE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $SETFILE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_SETFILE="$SETFILE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_SETFILE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+SETFILE=$ac_cv_path_SETFILE
+if test -n "$SETFILE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SETFILE" >&5
+$as_echo "$SETFILE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$SETFILE" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool SETFILE=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool SETFILE=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SETFILE" >&5
+$as_echo_n "checking for SETFILE... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool SETFILE=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$SETFILE" = x; then
+ as_fn_error $? "Could not find required tool for SETFILE" "$LINENO" 5
+ fi
+
+
+ fi
+
+
+ # Check bash version
+ # Extra [ ] to stop m4 mangling
+ BASH_VER=`$BASH --version | $SED -n -e 's/^.*bash.*ersion *\([0-9.]*\).*$/\1/ p'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking bash version" >&5
+$as_echo_n "checking bash version... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASH_VER" >&5
+$as_echo "$BASH_VER" >&6; }
+
+ BASH_MAJOR=`$ECHO $BASH_VER | $CUT -d . -f 1`
+ BASH_MINOR=`$ECHO $BASH_VER | $CUT -d . -f 2`
+ if test $BASH_MAJOR -lt 3 || (test $BASH_MAJOR -eq 3 && test $BASH_MINOR -lt 2); then
+ as_fn_error $? "bash version 3.2 or better is required" "$LINENO" 5
+ fi
+
+ # Test if bash supports pipefail.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if bash supports pipefail" >&5
+$as_echo_n "checking if bash supports pipefail... " >&6; }
+ if ${BASH} -c 'set -o pipefail'; then
+ BASH_ARGS="$BASH_ARGS -o pipefail"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if bash supports errexit (-e)" >&5
+$as_echo_n "checking if bash supports errexit (-e)... " >&6; }
+ if ${BASH} -e -c 'true'; then
+ BASH_ARGS="$BASH_ARGS -e"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+
+
+
+
+# Check if pkg-config is available.
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+ ac_pt_PKG_CONFIG=$PKG_CONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_PKG_CONFIG" = x; then
+ PKG_CONFIG=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKG_CONFIG=$ac_pt_PKG_CONFIG
+ fi
+else
+ PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=0.9.0
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ PKG_CONFIG=""
+ fi
+
+fi
+
+# After basic tools have been setup, we can check build os specific details.
+
+ ###############################################################################
+
+ # Note that this is the build platform OS version!
+
+ OS_VERSION="`uname -r | ${SED} 's!\.! !g' | ${SED} 's!-! !g'`"
+ OS_VERSION_MAJOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 1 -d ' '`"
+ OS_VERSION_MINOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 2 -d ' '`"
+ OS_VERSION_MICRO="`${ECHO} ${OS_VERSION} | ${CUT} -f 3 -d ' '`"
+
+
+
+
+
+# Misc basic settings
+
+
+# Check whether --with-default-make-target was given.
+if test "${with_default_make_target+set}" = set; then :
+ withval=$with_default_make_target;
+fi
+
+ if test "x$with_default_make_target" = "x" \
+ || test "x$with_default_make_target" = "xyes"; then
+ DEFAULT_MAKE_TARGET="exploded-image"
+ elif test "x$with_default_make_target" = "xno"; then
+ as_fn_error $? "--without-default-make-target is not a valid option" "$LINENO" 5
+ else
+ DEFAULT_MAKE_TARGET="$with_default_make_target"
+ fi
+
+
+
+
+###############################################################################
+#
+# Determine OpenJDK variants, options and version numbers.
+#
+###############################################################################
+
+# We need build & target for this.
+
+ # Should we build a JDK without a graphical UI?
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking headless only" >&5
+$as_echo_n "checking headless only... " >&6; }
+ # Check whether --enable-headless-only was given.
+if test "${enable_headless_only+set}" = set; then :
+ enableval=$enable_headless_only;
+fi
+
+
+ if test "x$enable_headless_only" = "xyes"; then
+ ENABLE_HEADLESS_ONLY="true"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ elif test "x$enable_headless_only" = "xno"; then
+ ENABLE_HEADLESS_ONLY="false"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ elif test "x$enable_headless_only" = "x"; then
+ ENABLE_HEADLESS_ONLY="false"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ else
+ as_fn_error $? "--enable-headless-only can only take yes or no" "$LINENO" 5
+ fi
+
+
+
+ # Should we build the complete docs, or just a lightweight version?
+ # Check whether --enable-full-docs was given.
+if test "${enable_full_docs+set}" = set; then :
+ enableval=$enable_full_docs;
+fi
+
+
+ # Verify dependencies
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for graphviz dot" >&5
+$as_echo_n "checking for graphviz dot... " >&6; }
+ if test "x$DOT" != "x"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, cannot generate full docs" >&5
+$as_echo "no, cannot generate full docs" >&6; }
+ FULL_DOCS_DEP_MISSING=true
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pandoc" >&5
+$as_echo_n "checking for pandoc... " >&6; }
+ if test "x$PANDOC" != "x"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, cannot generate full docs" >&5
+$as_echo "no, cannot generate full docs" >&6; }
+ FULL_DOCS_DEP_MISSING=true
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking full docs" >&5
+$as_echo_n "checking full docs... " >&6; }
+ if test "x$enable_full_docs" = xyes; then
+ if test "x$FULL_DOCS_DEP_MISSING" = "xtrue"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, missing dependencies" >&5
+$as_echo "no, missing dependencies" >&6; }
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # dot is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=dot
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ as_fn_error $? "Cannot enable full docs with missing dependencies. See above. $HELP_MSG" "$LINENO" 5
+ else
+ ENABLE_FULL_DOCS=true
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, forced" >&5
+$as_echo "yes, forced" >&6; }
+ fi
+ elif test "x$enable_full_docs" = xno; then
+ ENABLE_FULL_DOCS=false
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, forced" >&5
+$as_echo "no, forced" >&6; }
+ elif test "x$enable_full_docs" = x; then
+ # Check for prerequisites
+ if test "x$FULL_DOCS_DEP_MISSING" = xtrue; then
+ ENABLE_FULL_DOCS=false
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, missing dependencies" >&5
+$as_echo "no, missing dependencies" >&6; }
+ else
+ ENABLE_FULL_DOCS=true
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, dependencies present" >&5
+$as_echo "yes, dependencies present" >&6; }
+ fi
+ else
+ as_fn_error $? "--enable-full-docs can only take yes or no" "$LINENO" 5
+ fi
+
+
+
+ # Choose cacerts source file
+
+# Check whether --with-cacerts-file was given.
+if test "${with_cacerts_file+set}" = set; then :
+ withval=$with_cacerts_file;
+fi
+
+ if test "x$with_cacerts_file" != x; then
+ CACERTS_FILE=$with_cacerts_file
+ fi
+
+
+ # Enable or disable unlimited crypto
+ # Check whether --enable-unlimited-crypto was given.
+if test "${enable_unlimited_crypto+set}" = set; then :
+ enableval=$enable_unlimited_crypto;
+else
+ enable_unlimited_crypto=yes
+fi
+
+ if test "x$enable_unlimited_crypto" = "xyes"; then
+ UNLIMITED_CRYPTO=true
+ else
+ UNLIMITED_CRYPTO=false
+ fi
+
+
+ # Should we build the serviceability agent (SA)?
+ INCLUDE_SA=true
+ if [[ " $JVM_VARIANTS " =~ " zero " ]] || [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
+ INCLUDE_SA=false
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xaix ; then
+ INCLUDE_SA=false
+ fi
+
+
+ # Compress jars
+ COMPRESS_JARS=false
+
+
+
+ # Setup default copyright year. Mostly overridden when building close to a new year.
+
+# Check whether --with-copyright-year was given.
+if test "${with_copyright_year+set}" = set; then :
+ withval=$with_copyright_year;
+fi
+
+ if test "x$with_copyright_year" = xyes; then
+ as_fn_error $? "Copyright year must have a value" "$LINENO" 5
+ elif test "x$with_copyright_year" != x; then
+ COPYRIGHT_YEAR="$with_copyright_year"
+ else
+ COPYRIGHT_YEAR=`$DATE +'%Y'`
+ fi
+
+
+
+ # Check whether --enable-keep-packaged-modules was given.
+if test "${enable_keep_packaged_modules+set}" = set; then :
+ enableval=$enable_keep_packaged_modules;
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if packaged modules are kept" >&5
+$as_echo_n "checking if packaged modules are kept... " >&6; }
+ if test "x$enable_keep_packaged_modules" = "xyes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ JLINK_KEEP_PACKAGED_MODULES=true
+ elif test "x$enable_keep_packaged_modules" = "xno"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ JLINK_KEEP_PACKAGED_MODULES=false
+ elif test "x$enable_keep_packaged_modules" = "x"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (default)" >&5
+$as_echo "yes (default)" >&6; }
+ JLINK_KEEP_PACKAGED_MODULES=true
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: error" >&5
+$as_echo "error" >&6; }
+ as_fn_error $? "--enable-keep-packaged-modules accepts no argument" "$LINENO" 5
+ fi
+
+
+
+
+ # Warn user that old version arguments are deprecated.
+
+
+# Check whether --with-milestone was given.
+if test "${with_milestone+set}" = set; then :
+ withval=$with_milestone; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-milestone is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-milestone is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-update-version was given.
+if test "${with_update_version+set}" = set; then :
+ withval=$with_update_version; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-update-version is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-update-version is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-user-release-suffix was given.
+if test "${with_user_release_suffix+set}" = set; then :
+ withval=$with_user_release_suffix; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-user-release-suffix is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-user-release-suffix is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-build-number was given.
+if test "${with_build_number+set}" = set; then :
+ withval=$with_build_number; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-build-number is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-build-number is deprecated and will be ignored." >&2;}
+fi
+
+
+
+ # Source the version numbers file
+ . $AUTOCONF_DIR/version-numbers
+
+ # Some non-version number information is set in that file
+
+
+
+
+
+
+
+
+
+ # Override version from arguments
+
+ # If --with-version-string is set, process it first. It is possible to
+ # override parts with more specific flags, since these are processed later.
+
+# Check whether --with-version-string was given.
+if test "${with_version_string+set}" = set; then :
+ withval=$with_version_string;
+fi
+
+ if test "x$with_version_string" = xyes; then
+ as_fn_error $? "--with-version-string must have a value" "$LINENO" 5
+ elif test "x$with_version_string" != x; then
+ # Additional [] needed to keep m4 from mangling shell constructs.
+ if [[ $with_version_string =~ ^([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?(-([a-zA-Z]+))?((\+)([0-9]+)?(-([-a-zA-Z0-9.]+))?)?$ ]] ; then
+ VERSION_MAJOR=${BASH_REMATCH[1]}
+ VERSION_MINOR=${BASH_REMATCH[3]}
+ VERSION_SECURITY=${BASH_REMATCH[5]}
+ VERSION_PATCH=${BASH_REMATCH[7]}
+ VERSION_PRE=${BASH_REMATCH[9]}
+ version_plus_separator=${BASH_REMATCH[11]}
+ VERSION_BUILD=${BASH_REMATCH[12]}
+ VERSION_OPT=${BASH_REMATCH[14]}
+ # Unspecified numerical fields are interpreted as 0.
+ if test "x$VERSION_MINOR" = x; then
+ VERSION_MINOR=0
+ fi
+ if test "x$VERSION_SECURITY" = x; then
+ VERSION_SECURITY=0
+ fi
+ if test "x$VERSION_PATCH" = x; then
+ VERSION_PATCH=0
+ fi
+ if test "x$version_plus_separator" != x \
+ && test "x$VERSION_BUILD$VERSION_OPT" = x; then
+ as_fn_error $? "Version string contains + but both 'BUILD' and 'OPT' are missing" "$LINENO" 5
+ fi
+ # Stop the version part process from setting default values.
+ # We still allow them to explicitly override though.
+ NO_DEFAULT_VERSION_PARTS=true
+ else
+ as_fn_error $? "--with-version-string fails to parse as a valid version string: $with_version_string" "$LINENO" 5
+ fi
+ fi
+
+
+# Check whether --with-version-pre was given.
+if test "${with_version_pre+set}" = set; then :
+ withval=$with_version_pre; with_version_pre_present=true
+else
+ with_version_pre_present=false
+fi
+
+
+ if test "x$with_version_pre_present" = xtrue; then
+ if test "x$with_version_pre" = xyes; then
+ as_fn_error $? "--with-version-pre must have a value" "$LINENO" 5
+ elif test "x$with_version_pre" = xno; then
+ # Interpret --without-* as empty string instead of the literal "no"
+ VERSION_PRE=
+ else
+ # Only [a-zA-Z] is allowed in the VERSION_PRE. Outer [ ] to quote m4.
+ VERSION_PRE=`$ECHO "$with_version_pre" | $TR -c -d '[a-z][A-Z]'`
+ if test "x$VERSION_PRE" != "x$with_version_pre"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-version-pre value has been sanitized from '$with_version_pre' to '$VERSION_PRE'" >&5
+$as_echo "$as_me: WARNING: --with-version-pre value has been sanitized from '$with_version_pre' to '$VERSION_PRE'" >&2;}
+ fi
+ fi
+ else
+ if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+ # Default is to use "internal" as pre
+ VERSION_PRE="internal"
+ fi
+ fi
+
+
+# Check whether --with-version-opt was given.
+if test "${with_version_opt+set}" = set; then :
+ withval=$with_version_opt; with_version_opt_present=true
+else
+ with_version_opt_present=false
+fi
+
+
+ if test "x$with_version_opt_present" = xtrue; then
+ if test "x$with_version_opt" = xyes; then
+ as_fn_error $? "--with-version-opt must have a value" "$LINENO" 5
+ elif test "x$with_version_opt" = xno; then
+ # Interpret --without-* as empty string instead of the literal "no"
+ VERSION_OPT=
+ else
+ # Only [-.a-zA-Z0-9] is allowed in the VERSION_OPT. Outer [ ] to quote m4.
+ VERSION_OPT=`$ECHO "$with_version_opt" | $TR -c -d '[a-z][A-Z][0-9].-'`
+ if test "x$VERSION_OPT" != "x$with_version_opt"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-version-opt value has been sanitized from '$with_version_opt' to '$VERSION_OPT'" >&5
+$as_echo "$as_me: WARNING: --with-version-opt value has been sanitized from '$with_version_opt' to '$VERSION_OPT'" >&2;}
+ fi
+ fi
+ else
+ if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+ # Default is to calculate a string like this 'adhoc.<username>.<base dir name>'
+ # Outer [ ] to quote m4.
+ basedirname=`$BASENAME "$TOPDIR" | $TR -d -c '[a-z][A-Z][0-9].-'`
+ VERSION_OPT="adhoc.$USERNAME.$basedirname"
+ fi
+ fi
+
+
+# Check whether --with-version-build was given.
+if test "${with_version_build+set}" = set; then :
+ withval=$with_version_build; with_version_build_present=true
+else
+ with_version_build_present=false
+fi
+
+
+ if test "x$with_version_build_present" = xtrue; then
+ if test "x$with_version_build" = xyes; then
+ as_fn_error $? "--with-version-build must have a value" "$LINENO" 5
+ elif test "x$with_version_build" = xno; then
+ # Interpret --without-* as empty string instead of the literal "no"
+ VERSION_BUILD=
+ elif test "x$with_version_build" = x; then
+ VERSION_BUILD=
+ else
+
+ # Additional [] needed to keep m4 from mangling shell constructs.
+ if ! [[ "$with_version_build" =~ ^0*([1-9][0-9]*)|(0)$ ]] ; then
+ as_fn_error $? "\"$with_version_build\" is not a valid numerical value for VERSION_BUILD" "$LINENO" 5
+ fi
+ # Extract the version number without leading zeros.
+ cleaned_value=${BASH_REMATCH[1]}
+ if test "x$cleaned_value" = x; then
+ # Special case for zero
+ cleaned_value=${BASH_REMATCH[2]}
+ fi
+
+ if test $cleaned_value -gt 255; then
+ as_fn_error $? "VERSION_BUILD is given as $with_version_build. This is greater than 255 which is not allowed." "$LINENO" 5
+ fi
+ if test "x$cleaned_value" != "x$with_version_build"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Value for VERSION_BUILD has been sanitized from '$with_version_build' to '$cleaned_value'" >&5
+$as_echo "$as_me: WARNING: Value for VERSION_BUILD has been sanitized from '$with_version_build' to '$cleaned_value'" >&2;}
+ fi
+ VERSION_BUILD=$cleaned_value
+
+ fi
+ else
+ if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+ # Default is to not have a build number.
+ VERSION_BUILD=""
+ # FIXME: Until all code can cope with an empty VERSION_BUILD, set it to 0.
+ VERSION_BUILD=0
+ fi
+ fi
+
+
+# Check whether --with-version-major was given.
+if test "${with_version_major+set}" = set; then :
+ withval=$with_version_major; with_version_major_present=true
+else
+ with_version_major_present=false
+fi
+
+
+ if test "x$with_version_major_present" = xtrue; then
+ if test "x$with_version_major" = xyes; then
+ as_fn_error $? "--with-version-major must have a value" "$LINENO" 5
+ else
+
+ # Additional [] needed to keep m4 from mangling shell constructs.
+ if ! [[ "$with_version_major" =~ ^0*([1-9][0-9]*)|(0)$ ]] ; then
+ as_fn_error $? "\"$with_version_major\" is not a valid numerical value for VERSION_MAJOR" "$LINENO" 5
+ fi
+ # Extract the version number without leading zeros.
+ cleaned_value=${BASH_REMATCH[1]}
+ if test "x$cleaned_value" = x; then
+ # Special case for zero
+ cleaned_value=${BASH_REMATCH[2]}
+ fi
+
+ if test $cleaned_value -gt 255; then
+ as_fn_error $? "VERSION_MAJOR is given as $with_version_major. This is greater than 255 which is not allowed." "$LINENO" 5
+ fi
+ if test "x$cleaned_value" != "x$with_version_major"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Value for VERSION_MAJOR has been sanitized from '$with_version_major' to '$cleaned_value'" >&5
+$as_echo "$as_me: WARNING: Value for VERSION_MAJOR has been sanitized from '$with_version_major' to '$cleaned_value'" >&2;}
+ fi
+ VERSION_MAJOR=$cleaned_value
+
+ fi
+ else
+ if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+ # Default is to get value from version-numbers
+ VERSION_MAJOR="$DEFAULT_VERSION_MAJOR"
+ fi
+ fi
+
+
+# Check whether --with-version-minor was given.
+if test "${with_version_minor+set}" = set; then :
+ withval=$with_version_minor; with_version_minor_present=true
+else
+ with_version_minor_present=false
+fi
+
+
+ if test "x$with_version_minor_present" = xtrue; then
+ if test "x$with_version_minor" = xyes; then
+ as_fn_error $? "--with-version-minor must have a value" "$LINENO" 5
+ elif test "x$with_version_minor" = xno; then
+ # Interpret --without-* as empty string (i.e. 0) instead of the literal "no"
+ VERSION_MINOR=0
+ elif test "x$with_version_minor" = x; then
+ VERSION_MINOR=0
+ else
+
+ # Additional [] needed to keep m4 from mangling shell constructs.
+ if ! [[ "$with_version_minor" =~ ^0*([1-9][0-9]*)|(0)$ ]] ; then
+ as_fn_error $? "\"$with_version_minor\" is not a valid numerical value for VERSION_MINOR" "$LINENO" 5
+ fi
+ # Extract the version number without leading zeros.
+ cleaned_value=${BASH_REMATCH[1]}
+ if test "x$cleaned_value" = x; then
+ # Special case for zero
+ cleaned_value=${BASH_REMATCH[2]}
+ fi
+
+ if test $cleaned_value -gt 255; then
+ as_fn_error $? "VERSION_MINOR is given as $with_version_minor. This is greater than 255 which is not allowed." "$LINENO" 5
+ fi
+ if test "x$cleaned_value" != "x$with_version_minor"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Value for VERSION_MINOR has been sanitized from '$with_version_minor' to '$cleaned_value'" >&5
+$as_echo "$as_me: WARNING: Value for VERSION_MINOR has been sanitized from '$with_version_minor' to '$cleaned_value'" >&2;}
+ fi
+ VERSION_MINOR=$cleaned_value
+
+ fi
+ else
+ if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+ # Default is 0, if unspecified
+ VERSION_MINOR=$DEFAULT_VERSION_MINOR
+ fi
+ fi
+
+
+# Check whether --with-version-security was given.
+if test "${with_version_security+set}" = set; then :
+ withval=$with_version_security; with_version_security_present=true
+else
+ with_version_security_present=false
+fi
+
+
+ if test "x$with_version_security_present" = xtrue; then
+ if test "x$with_version_security" = xyes; then
+ as_fn_error $? "--with-version-security must have a value" "$LINENO" 5
+ elif test "x$with_version_security" = xno; then
+ # Interpret --without-* as empty string (i.e. 0) instead of the literal "no"
+ VERSION_SECURITY=0
+ elif test "x$with_version_security" = x; then
+ VERSION_SECURITY=0
+ else
+
+ # Additional [] needed to keep m4 from mangling shell constructs.
+ if ! [[ "$with_version_security" =~ ^0*([1-9][0-9]*)|(0)$ ]] ; then
+ as_fn_error $? "\"$with_version_security\" is not a valid numerical value for VERSION_SECURITY" "$LINENO" 5
+ fi
+ # Extract the version number without leading zeros.
+ cleaned_value=${BASH_REMATCH[1]}
+ if test "x$cleaned_value" = x; then
+ # Special case for zero
+ cleaned_value=${BASH_REMATCH[2]}
+ fi
+
+ if test $cleaned_value -gt 255; then
+ as_fn_error $? "VERSION_SECURITY is given as $with_version_security. This is greater than 255 which is not allowed." "$LINENO" 5
+ fi
+ if test "x$cleaned_value" != "x$with_version_security"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Value for VERSION_SECURITY has been sanitized from '$with_version_security' to '$cleaned_value'" >&5
+$as_echo "$as_me: WARNING: Value for VERSION_SECURITY has been sanitized from '$with_version_security' to '$cleaned_value'" >&2;}
+ fi
+ VERSION_SECURITY=$cleaned_value
+
+ fi
+ else
+ if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+ # Default is 0, if unspecified
+ VERSION_SECURITY=$DEFAULT_VERSION_SECURITY
+ fi
+ fi
+
+
+# Check whether --with-version-patch was given.
+if test "${with_version_patch+set}" = set; then :
+ withval=$with_version_patch; with_version_patch_present=true
+else
+ with_version_patch_present=false
+fi
+
+
+ if test "x$with_version_patch_present" = xtrue; then
+ if test "x$with_version_patch" = xyes; then
+ as_fn_error $? "--with-version-patch must have a value" "$LINENO" 5
+ elif test "x$with_version_patch" = xno; then
+ # Interpret --without-* as empty string (i.e. 0) instead of the literal "no"
+ VERSION_PATCH=0
+ elif test "x$with_version_patch" = x; then
+ VERSION_PATCH=0
+ else
+
+ # Additional [] needed to keep m4 from mangling shell constructs.
+ if ! [[ "$with_version_patch" =~ ^0*([1-9][0-9]*)|(0)$ ]] ; then
+ as_fn_error $? "\"$with_version_patch\" is not a valid numerical value for VERSION_PATCH" "$LINENO" 5
+ fi
+ # Extract the version number without leading zeros.
+ cleaned_value=${BASH_REMATCH[1]}
+ if test "x$cleaned_value" = x; then
+ # Special case for zero
+ cleaned_value=${BASH_REMATCH[2]}
+ fi
+
+ if test $cleaned_value -gt 255; then
+ as_fn_error $? "VERSION_PATCH is given as $with_version_patch. This is greater than 255 which is not allowed." "$LINENO" 5
+ fi
+ if test "x$cleaned_value" != "x$with_version_patch"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Value for VERSION_PATCH has been sanitized from '$with_version_patch' to '$cleaned_value'" >&5
+$as_echo "$as_me: WARNING: Value for VERSION_PATCH has been sanitized from '$with_version_patch' to '$cleaned_value'" >&2;}
+ fi
+ VERSION_PATCH=$cleaned_value
+
+ fi
+ else
+ if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+ # Default is 0, if unspecified
+ VERSION_PATCH=$DEFAULT_VERSION_PATCH
+ fi
+ fi
+
+ # Calculate derived version properties
+
+ # Set VERSION_IS_GA based on if VERSION_PRE has a value
+ if test "x$VERSION_PRE" = x; then
+ VERSION_IS_GA=true
+ else
+ VERSION_IS_GA=false
+ fi
+
+ # VERSION_NUMBER but always with exactly 4 positions, with 0 for empty positions.
+ VERSION_NUMBER_FOUR_POSITIONS=$VERSION_MAJOR.$VERSION_MINOR.$VERSION_SECURITY.$VERSION_PATCH
+
+ stripped_version_number=$VERSION_NUMBER_FOUR_POSITIONS
+ # Strip trailing zeroes from stripped_version_number
+ for i in 1 2 3 ; do stripped_version_number=${stripped_version_number%.0} ; done
+ VERSION_NUMBER=$stripped_version_number
+
+ # The complete version string, with additional build information
+ if test "x$VERSION_BUILD$VERSION_OPT" = x; then
+ VERSION_STRING=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}
+ else
+ # If either build or opt is set, we need a + separator
+ VERSION_STRING=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}+$VERSION_BUILD${VERSION_OPT:+-$VERSION_OPT}
+ fi
+
+ # The short version string, just VERSION_NUMBER and PRE, if present.
+ VERSION_SHORT=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version string" >&5
+$as_echo_n "checking for version string... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VERSION_STRING" >&5
+$as_echo "$VERSION_STRING" >&6; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+###############################################################################
+#
+# Setup BootJDK, used to bootstrap the build.
+#
+###############################################################################
+
+
+ BOOT_JDK_FOUND=no
+
+# Check whether --with-boot-jdk was given.
+if test "${with_boot_jdk+set}" = set; then :
+ withval=$with_boot_jdk;
+fi
+
+
+ # 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 explicitly set by command line arguments?
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ if test "x$with_boot_jdk" != x; then
+ BOOT_JDK=$with_boot_jdk
+ BOOT_JDK_FOUND=maybe
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using configure arguments" >&5
+$as_echo "$as_me: Found potential Boot JDK using configure arguments" >&6;}
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+ 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
+ as_fn_error $? "The path given by --with-boot-jdk does not contain a valid Boot JDK" "$LINENO" 5
+ fi
+
+ # Test: On MacOS X, can we find a boot jdk using /usr/libexec/java_home?
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # First check at user selected default
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ if test -x /usr/libexec/java_home; then
+ BOOT_JDK=`/usr/libexec/java_home `
+ BOOT_JDK_FOUND=maybe
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using /usr/libexec/java_home " >&5
+$as_echo "$as_me: Found potential Boot JDK using /usr/libexec/java_home " >&6;}
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+ # If that did not work out (e.g. too old), try explicit versions instead
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ if test -x /usr/libexec/java_home; then
+ BOOT_JDK=`/usr/libexec/java_home -v 1.9`
+ BOOT_JDK_FOUND=maybe
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using /usr/libexec/java_home -v 1.9" >&5
+$as_echo "$as_me: Found potential Boot JDK using /usr/libexec/java_home -v 1.9" >&6;}
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ if test -x /usr/libexec/java_home; then
+ BOOT_JDK=`/usr/libexec/java_home -v 1.8`
+ BOOT_JDK_FOUND=maybe
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using /usr/libexec/java_home -v 1.8" >&5
+$as_echo "$as_me: Found potential Boot JDK using /usr/libexec/java_home -v 1.8" >&6;}
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ if test -x /usr/libexec/java_home; then
+ BOOT_JDK=`/usr/libexec/java_home -v 1.7`
+ BOOT_JDK_FOUND=maybe
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using /usr/libexec/java_home -v 1.7" >&5
+$as_echo "$as_me: Found potential Boot JDK using /usr/libexec/java_home -v 1.7" >&6;}
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+
+ # Test: Is $JAVA_HOME set?
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ if test "x$JAVA_HOME" != x; then
+ JAVA_HOME_PROCESSED="$JAVA_HOME"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$JAVA_HOME_PROCESSED" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$JAVA_HOME_PROCESSED"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JAVA_HOME_PROCESSED, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of JAVA_HOME_PROCESSED, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of JAVA_HOME_PROCESSED" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ JAVA_HOME_PROCESSED="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JAVA_HOME_PROCESSED to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting JAVA_HOME_PROCESSED to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$JAVA_HOME_PROCESSED"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ JAVA_HOME_PROCESSED="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JAVA_HOME_PROCESSED to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting JAVA_HOME_PROCESSED to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$JAVA_HOME_PROCESSED"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JAVA_HOME_PROCESSED, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of JAVA_HOME_PROCESSED, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of JAVA_HOME_PROCESSED, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ JAVA_HOME_PROCESSED="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ JAVA_HOME_PROCESSED="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ if test ! -d "$JAVA_HOME_PROCESSED"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Your JAVA_HOME points to a non-existing directory!" >&5
+$as_echo "$as_me: Your JAVA_HOME points to a non-existing directory!" >&6;}
+ 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using JAVA_HOME" >&5
+$as_echo "$as_me: Found potential Boot JDK using JAVA_HOME" >&6;}
+ fi
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+
+ # Test: Is there a java or javac in the PATH, which is a symlink to the JDK?
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ # Extract the first word of "javac", so it can be a program name with args.
+set dummy javac; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JAVAC_CHECK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $JAVAC_CHECK in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_JAVAC_CHECK="$JAVAC_CHECK" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_JAVAC_CHECK="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+JAVAC_CHECK=$ac_cv_path_JAVAC_CHECK
+if test -n "$JAVAC_CHECK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAC_CHECK" >&5
+$as_echo "$JAVAC_CHECK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ # Extract the first word of "java", so it can be a program name with args.
+set dummy java; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JAVA_CHECK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $JAVA_CHECK in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_JAVA_CHECK="$JAVA_CHECK" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_JAVA_CHECK="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+JAVA_CHECK=$ac_cv_path_JAVA_CHECK
+if test -n "$JAVA_CHECK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVA_CHECK" >&5
+$as_echo "$JAVA_CHECK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ 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.
+
+ if test "x$OPENJDK_BUILD_OS" != xwindows; then
+ # Follow a chain of symbolic links. Use readlink
+ # where it exists, else fall back to horribly
+ # complicated shell code.
+ if test "x$READLINK_TESTED" != yes; then
+ # On MacOSX there is a readlink tool with a different
+ # purpose than the GNU readlink tool. Check the found readlink.
+ ISGNU=`$READLINK --version 2>&1 | $GREP GNU`
+ if test "x$ISGNU" = x; then
+ # A readlink that we do not know how to use.
+ # Are there other non-GNU readlinks out there?
+ READLINK_TESTED=yes
+ READLINK=
+ fi
+ fi
+
+ if test "x$READLINK" != x; then
+ BINARY=`$READLINK -f $BINARY`
+ else
+ # Save the current directory for restoring afterwards
+ STARTDIR=$PWD
+ COUNTER=0
+ sym_link_dir=`$DIRNAME $BINARY`
+ sym_link_file=`$BASENAME $BINARY`
+ cd $sym_link_dir
+ # Use -P flag to resolve symlinks in directories.
+ cd `$THEPWDCMD -P`
+ sym_link_dir=`$THEPWDCMD -P`
+ # Resolve file symlinks
+ while test $COUNTER -lt 20; do
+ ISLINK=`$LS -l $sym_link_dir/$sym_link_file | $GREP '\->' | $SED -e 's/.*-> \(.*\)/\1/'`
+ if test "x$ISLINK" == x; then
+ # This is not a symbolic link! We are done!
+ break
+ fi
+ # Again resolve directory symlinks since the target of the just found
+ # link could be in a different directory
+ cd `$DIRNAME $ISLINK`
+ sym_link_dir=`$THEPWDCMD -P`
+ sym_link_file=`$BASENAME $ISLINK`
+ let COUNTER=COUNTER+1
+ done
+ cd $STARTDIR
+ BINARY=$sym_link_dir/$sym_link_file
+ fi
+ fi
+
+ 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using java(c) in PATH" >&5
+$as_echo "$as_me: Found potential Boot JDK using java(c) in PATH" >&6;}
+ fi
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+
+ # Test: Is there a JDK installed in default, well-known locations?
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ if test "x$ProgramW6432" != x; then
+ VIRTUAL_DIR="$ProgramW6432/Java"
+
+ windows_path="$VIRTUAL_DIR"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ VIRTUAL_DIR="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ VIRTUAL_DIR="$unix_path"
+ fi
+
+
+ BOOT_JDK_PREFIX="$VIRTUAL_DIR"
+ BOOT_JDK_SUFFIX=""
+ ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+ if test "x$ALL_JDKS_FOUND" != x; then
+ for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+ if test -d "$BOOT_JDK"; then
+ BOOT_JDK_FOUND=maybe
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+ done
+ fi
+
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ if test "x$PROGRAMW6432" != x; then
+ VIRTUAL_DIR="$PROGRAMW6432/Java"
+
+ windows_path="$VIRTUAL_DIR"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ VIRTUAL_DIR="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ VIRTUAL_DIR="$unix_path"
+ fi
+
+
+ BOOT_JDK_PREFIX="$VIRTUAL_DIR"
+ BOOT_JDK_SUFFIX=""
+ ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+ if test "x$ALL_JDKS_FOUND" != x; then
+ for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+ if test -d "$BOOT_JDK"; then
+ BOOT_JDK_FOUND=maybe
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+ done
+ fi
+
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ if test "x$PROGRAMFILES" != x; then
+ VIRTUAL_DIR="$PROGRAMFILES/Java"
+
+ windows_path="$VIRTUAL_DIR"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ VIRTUAL_DIR="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ VIRTUAL_DIR="$unix_path"
+ fi
+
+
+ BOOT_JDK_PREFIX="$VIRTUAL_DIR"
+ BOOT_JDK_SUFFIX=""
+ ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+ if test "x$ALL_JDKS_FOUND" != x; then
+ for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+ if test -d "$BOOT_JDK"; then
+ BOOT_JDK_FOUND=maybe
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+ done
+ fi
+
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ if test "x$ProgramFiles" != x; then
+ VIRTUAL_DIR="$ProgramFiles/Java"
+
+ windows_path="$VIRTUAL_DIR"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ VIRTUAL_DIR="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ VIRTUAL_DIR="$unix_path"
+ fi
+
+
+ BOOT_JDK_PREFIX="$VIRTUAL_DIR"
+ BOOT_JDK_SUFFIX=""
+ ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+ if test "x$ALL_JDKS_FOUND" != x; then
+ for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+ if test -d "$BOOT_JDK"; then
+ BOOT_JDK_FOUND=maybe
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+ done
+ fi
+
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ BOOT_JDK_PREFIX="/cygdrive/c/Program Files/Java"
+ BOOT_JDK_SUFFIX=""
+ ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+ if test "x$ALL_JDKS_FOUND" != x; then
+ for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+ if test -d "$BOOT_JDK"; then
+ BOOT_JDK_FOUND=maybe
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+ done
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+ elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ BOOT_JDK_PREFIX="/Library/Java/JavaVirtualMachines"
+ BOOT_JDK_SUFFIX="/Contents/Home"
+ ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+ if test "x$ALL_JDKS_FOUND" != x; then
+ for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+ if test -d "$BOOT_JDK"; then
+ BOOT_JDK_FOUND=maybe
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+ done
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ BOOT_JDK_PREFIX="/System/Library/Java/JavaVirtualMachines"
+ BOOT_JDK_SUFFIX="/Contents/Home"
+ ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+ if test "x$ALL_JDKS_FOUND" != x; then
+ for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+ if test -d "$BOOT_JDK"; then
+ BOOT_JDK_FOUND=maybe
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+ done
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+ elif test "x$OPENJDK_TARGET_OS" = xlinux; then
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ BOOT_JDK_PREFIX="/usr/lib/jvm"
+ BOOT_JDK_SUFFIX=""
+ ALL_JDKS_FOUND=`$LS "$BOOT_JDK_PREFIX" 2> /dev/null | $SORT -r`
+ if test "x$ALL_JDKS_FOUND" != x; then
+ for JDK_TO_TRY in $ALL_JDKS_FOUND ; do
+
+ if test "x$BOOT_JDK_FOUND" = xno; then
+ # Now execute the test
+
+ BOOT_JDK="${BOOT_JDK_PREFIX}/${JDK_TO_TRY}${BOOT_JDK_SUFFIX}"
+ if test -d "$BOOT_JDK"; then
+ BOOT_JDK_FOUND=maybe
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&5
+$as_echo "$as_me: Found potential Boot JDK using well-known locations (in $BOOT_JDK_PREFIX/$JDK_TO_TRY)" >&6;}
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+ done
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+ fi
+
+
+ # 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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/java; ignoring" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # Do we have a bin/javac?
+ if test ! -x "$BOOT_JDK/bin/javac"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be an JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be an JRE instead of an JDK)" >&6;}
+ 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_CORRECT_VERSION=`$ECHO $BOOT_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"|(1\.[89]\.)'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Boot JDK found at $BOOT_JDK is incorrect JDK version ($BOOT_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Boot JDK must be version 8 or 9)" >&5
+$as_echo "$as_me: (Your Boot JDK must be version 8 or 9)" >&6;}
+ BOOT_JDK_FOUND=no
+ else
+ # We're done! :-)
+ BOOT_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BOOT_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BOOT_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BOOT_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BOOT_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BOOT_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BOOT_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BOOT_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BOOT_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BOOT_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BOOT_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BOOT_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BOOT_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Boot JDK" >&5
+$as_echo_n "checking for Boot JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK" >&5
+$as_echo "$BOOT_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Boot JDK version" >&5
+$as_echo_n "checking Boot JDK version... " >&6; }
+ BOOT_JDK_VERSION=`"$BOOT_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_VERSION" >&5
+$as_echo "$BOOT_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check javac
+ fi # end check java
+ fi # end check boot jdk found
+ fi
+
+
+ # If we haven't found anything yet, we've truly lost. Give up.
+ if test "x$BOOT_JDK_FOUND" = xno; then
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # openjdk is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=openjdk
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find a valid Boot JDK. $HELP_MSG" >&5
+$as_echo "$as_me: Could not find a valid Boot JDK. $HELP_MSG" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be fixed by explicitly setting --with-boot-jdk" >&5
+$as_echo "$as_me: This might be fixed by explicitly setting --with-boot-jdk" >&6;}
+ as_fn_error $? "Cannot continue" "$LINENO" 5
+ fi
+
+
+
+ # Setup tools from the Boot JDK.
+
+ # Use user overridden value if available, otherwise locate tool in the Boot JDK.
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${JAVA+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for java in Boot JDK" >&5
+$as_echo_n "checking for java in Boot JDK... " >&6; }
+ JAVA=$BOOT_JDK/bin/java
+ if test ! -x $JAVA; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5
+$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;}
+ as_fn_error $? "Could not find java in the Boot JDK" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !JAVA! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!JAVA!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xJAVA" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of JAVA from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of JAVA from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for java in Boot JDK" >&5
+$as_echo_n "checking for java in Boot JDK... " >&6; }
+ JAVA=$BOOT_JDK/bin/java
+ if test ! -x $JAVA; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5
+$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;}
+ as_fn_error $? "Could not find java in the Boot JDK" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$JAVA" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool JAVA= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool JAVA= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JAVA" >&5
+$as_echo_n "checking for JAVA... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$JAVA"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool JAVA=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool JAVA=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JAVA+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $JAVA in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_JAVA="$JAVA" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_JAVA="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+JAVA=$ac_cv_path_JAVA
+if test -n "$JAVA"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVA" >&5
+$as_echo "$JAVA" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$JAVA" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool JAVA=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool JAVA=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JAVA" >&5
+$as_echo_n "checking for JAVA... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool JAVA=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ # Use user overridden value if available, otherwise locate tool in the Boot JDK.
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${JAVAC+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for javac in Boot JDK" >&5
+$as_echo_n "checking for javac in Boot JDK... " >&6; }
+ JAVAC=$BOOT_JDK/bin/javac
+ if test ! -x $JAVAC; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5
+$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;}
+ as_fn_error $? "Could not find javac in the Boot JDK" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !JAVAC! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!JAVAC!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xJAVAC" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of JAVAC from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of JAVAC from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for javac in Boot JDK" >&5
+$as_echo_n "checking for javac in Boot JDK... " >&6; }
+ JAVAC=$BOOT_JDK/bin/javac
+ if test ! -x $JAVAC; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5
+$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;}
+ as_fn_error $? "Could not find javac in the Boot JDK" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$JAVAC" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool JAVAC= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool JAVAC= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JAVAC" >&5
+$as_echo_n "checking for JAVAC... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$JAVAC"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool JAVAC=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool JAVAC=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JAVAC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $JAVAC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_JAVAC="$JAVAC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_JAVAC="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+JAVAC=$ac_cv_path_JAVAC
+if test -n "$JAVAC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAC" >&5
+$as_echo "$JAVAC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$JAVAC" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool JAVAC=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool JAVAC=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JAVAC" >&5
+$as_echo_n "checking for JAVAC... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool JAVAC=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ # Use user overridden value if available, otherwise locate tool in the Boot JDK.
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${JAVAH+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for javah in Boot JDK" >&5
+$as_echo_n "checking for javah in Boot JDK... " >&6; }
+ JAVAH=$BOOT_JDK/bin/javah
+ if test ! -x $JAVAH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5
+$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;}
+ as_fn_error $? "Could not find javah in the Boot JDK" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !JAVAH! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!JAVAH!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xJAVAH" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of JAVAH from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of JAVAH from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for javah in Boot JDK" >&5
+$as_echo_n "checking for javah in Boot JDK... " >&6; }
+ JAVAH=$BOOT_JDK/bin/javah
+ if test ! -x $JAVAH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5
+$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;}
+ as_fn_error $? "Could not find javah in the Boot JDK" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$JAVAH" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool JAVAH= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool JAVAH= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JAVAH" >&5
+$as_echo_n "checking for JAVAH... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$JAVAH"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool JAVAH=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool JAVAH=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JAVAH+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $JAVAH in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_JAVAH="$JAVAH" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_JAVAH="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+JAVAH=$ac_cv_path_JAVAH
+if test -n "$JAVAH"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVAH" >&5
+$as_echo "$JAVAH" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$JAVAH" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool JAVAH=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool JAVAH=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JAVAH" >&5
+$as_echo_n "checking for JAVAH... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool JAVAH=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ # Use user overridden value if available, otherwise locate tool in the Boot JDK.
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${JAR+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jar in Boot JDK" >&5
+$as_echo_n "checking for jar in Boot JDK... " >&6; }
+ JAR=$BOOT_JDK/bin/jar
+ if test ! -x $JAR; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5
+$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;}
+ as_fn_error $? "Could not find jar in the Boot JDK" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !JAR! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!JAR!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xJAR" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of JAR from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of JAR from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jar in Boot JDK" >&5
+$as_echo_n "checking for jar in Boot JDK... " >&6; }
+ JAR=$BOOT_JDK/bin/jar
+ if test ! -x $JAR; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5
+$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;}
+ as_fn_error $? "Could not find jar in the Boot JDK" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$JAR" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool JAR= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool JAR= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JAR" >&5
+$as_echo_n "checking for JAR... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$JAR"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool JAR=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool JAR=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JAR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $JAR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_JAR="$JAR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_JAR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+JAR=$ac_cv_path_JAR
+if test -n "$JAR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAR" >&5
+$as_echo "$JAR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$JAR" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool JAR=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool JAR=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JAR" >&5
+$as_echo_n "checking for JAR... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool JAR=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ # Use user overridden value if available, otherwise locate tool in the Boot JDK.
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${JARSIGNER+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jarsigner in Boot JDK" >&5
+$as_echo_n "checking for jarsigner in Boot JDK... " >&6; }
+ JARSIGNER=$BOOT_JDK/bin/jarsigner
+ if test ! -x $JARSIGNER; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5
+$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;}
+ as_fn_error $? "Could not find jarsigner in the Boot JDK" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !JARSIGNER! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!JARSIGNER!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xJARSIGNER" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of JARSIGNER from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of JARSIGNER from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jarsigner in Boot JDK" >&5
+$as_echo_n "checking for jarsigner in Boot JDK... " >&6; }
+ JARSIGNER=$BOOT_JDK/bin/jarsigner
+ if test ! -x $JARSIGNER; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&5
+$as_echo "$as_me: Your Boot JDK seems broken. This might be fixed by explicitly setting --with-boot-jdk" >&6;}
+ as_fn_error $? "Could not find jarsigner in the Boot JDK" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$JARSIGNER" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool JARSIGNER= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool JARSIGNER= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JARSIGNER" >&5
+$as_echo_n "checking for JARSIGNER... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$JARSIGNER"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool JARSIGNER=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool JARSIGNER=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JARSIGNER+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $JARSIGNER in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_JARSIGNER="$JARSIGNER" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_JARSIGNER="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+JARSIGNER=$ac_cv_path_JARSIGNER
+if test -n "$JARSIGNER"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JARSIGNER" >&5
+$as_echo "$JARSIGNER" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$JARSIGNER" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool JARSIGNER=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool JARSIGNER=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JARSIGNER" >&5
+$as_echo_n "checking for JARSIGNER... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool JARSIGNER=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ # Finally, set some other options...
+
+ # When compiling code to be executed by the Boot JDK, force jdk8 compatibility.
+ BOOT_JDK_SOURCETARGET="-source 8 -target 8"
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Boot JDK supports modules" >&5
+$as_echo_n "checking if Boot JDK supports modules... " >&6; }
+ if "$JAVA" --list-modules > /dev/null 2>&1; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ BOOT_JDK_MODULAR="true"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ BOOT_JDK_MODULAR="false"
+ fi
+
+
+
+
+ # Check if the boot jdk is 32 or 64 bit
+ if "$JAVA" -d64 -version > /dev/null 2>&1; then
+ BOOT_JDK_BITS="64"
+ else
+ BOOT_JDK_BITS="32"
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Boot JDK is 32 or 64 bits" >&5
+$as_echo_n "checking if Boot JDK is 32 or 64 bits... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOT_JDK_BITS" >&5
+$as_echo "$BOOT_JDK_BITS" >&6; }
+
+
+
+# Check whether --with-build-jdk was given.
+if test "${with_build_jdk+set}" = set; then :
+ withval=$with_build_jdk;
+fi
+
+
+ CREATE_BUILDJDK=false
+ EXTERNAL_BUILDJDK=false
+ BUILD_JDK_FOUND="no"
+ if test "x$with_build_jdk" != "x"; then
+
+ if test "x$BUILD_JDK_FOUND" = xno; then
+ # Execute the test
+
+ if test "x$with_build_jdk" != x; then
+ BUILD_JDK=$with_build_jdk
+ BUILD_JDK_FOUND=maybe
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found potential Build JDK using configure arguments" >&5
+$as_echo "$as_me: Found potential Build JDK using configure arguments" >&6;}
+ fi
+
+ # If previous step claimed to have found a JDK, check it to see if it seems to be valid.
+ if test "x$BUILD_JDK_FOUND" = xmaybe; then
+ # Do we have a bin/java?
+ if test ! -x "$BUILD_JDK/bin/java"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Build JDK found at $BUILD_JDK did not contain bin/java; ignoring" >&5
+$as_echo "$as_me: Potential Build JDK found at $BUILD_JDK did not contain bin/java; ignoring" >&6;}
+ BUILD_JDK_FOUND=no
+ elif test ! -x "$BUILD_JDK/bin/jlink"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Build JDK found at $BUILD_JDK did not contain bin/jlink; ignoring" >&5
+$as_echo "$as_me: Potential Build JDK found at $BUILD_JDK did not contain bin/jlink; ignoring" >&6;}
+ BUILD_JDK_FOUND=no
+ elif test ! -x "$BUILD_JDK/bin/jmod"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Build JDK found at $BUILD_JDK did not contain bin/jmod; ignoring" >&5
+$as_echo "$as_me: Potential Build JDK found at $BUILD_JDK did not contain bin/jmod; ignoring" >&6;}
+ BUILD_JDK_FOUND=no
+ elif test ! -x "$BUILD_JDK/bin/javac"; then
+ # Do we have a bin/javac?
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Build JDK found at $BUILD_JDK did not contain bin/javac; ignoring" >&5
+$as_echo "$as_me: Potential Build JDK found at $BUILD_JDK did not contain bin/javac; ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (This might be a JRE instead of an JDK)" >&5
+$as_echo "$as_me: (This might be a JRE instead of an JDK)" >&6;}
+ BUILD_JDK_FOUND=no
+ else
+ # Oh, this is looking good! We probably have found a proper JDK. Is it the correct version?
+ BUILD_JDK_VERSION=`"$BUILD_JDK/bin/java" -version 2>&1 | $HEAD -n 1`
+
+ # Extra M4 quote needed to protect [] in grep expression.
+ FOUND_CORRECT_VERSION=`echo $BUILD_JDK_VERSION | $EGREP '\"9([\.+-].*)?\"'`
+ if test "x$FOUND_CORRECT_VERSION" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Potential Build JDK found at $BUILD_JDK is incorrect JDK version ($BUILD_JDK_VERSION); ignoring" >&5
+$as_echo "$as_me: Potential Build JDK found at $BUILD_JDK is incorrect JDK version ($BUILD_JDK_VERSION); ignoring" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: (Your Build JDK must be version 9)" >&5
+$as_echo "$as_me: (Your Build JDK must be version 9)" >&6;}
+ BUILD_JDK_FOUND=no
+ else
+ # We're done!
+ BUILD_JDK_FOUND=yes
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BUILD_JDK" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$BUILD_JDK"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BUILD_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of BUILD_JDK" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ BUILD_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BUILD_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BUILD_JDK to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$BUILD_JDK"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ BUILD_JDK="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BUILD_JDK to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting BUILD_JDK to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$BUILD_JDK"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_JDK, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of BUILD_JDK, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of BUILD_JDK, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ BUILD_JDK="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ BUILD_JDK="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Build JDK" >&5
+$as_echo_n "checking for Build JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_JDK" >&5
+$as_echo "$BUILD_JDK" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking Build JDK version" >&5
+$as_echo_n "checking Build JDK version... " >&6; }
+ BUILD_JDK_VERSION=`"$BUILD_JDK/bin/java" -version 2>&1 | $TR '\n\r' ' '`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_JDK_VERSION" >&5
+$as_echo "$BUILD_JDK_VERSION" >&6; }
+ fi # end check jdk version
+ fi # end check java
+ fi # end check build jdk found
+ fi
+
+ EXTERNAL_BUILDJDK=true
+ else
+ if test "x$COMPILE_TYPE" = "xcross"; then
+ BUILD_JDK="\$(BUILDJDK_OUTPUTDIR)/jdk"
+ BUILD_JDK_FOUND=yes
+ CREATE_BUILDJDK=true
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Build JDK" >&5
+$as_echo_n "checking for Build JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, will build it for the host platform" >&5
+$as_echo "yes, will build it for the host platform" >&6; }
+ else
+ BUILD_JDK="\$(JDK_OUTPUTDIR)"
+ BUILD_JDK_FOUND=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Build JDK" >&5
+$as_echo_n "checking for Build JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, will use output dir" >&5
+$as_echo "yes, will use output dir" >&6; }
+ fi
+ fi
+
+ JMOD="$BUILD_JDK/bin/jmod"
+ JLINK="$BUILD_JDK/bin/jlink"
+
+
+
+ if test "x$BUILD_JDK_FOUND" != "xyes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Build JDK" >&5
+$as_echo_n "checking for Build JDK... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ as_fn_error $? "Could not find a suitable Build JDK" "$LINENO" 5
+ fi
+
+
+
+
+
+
+###############################################################################
+#
+# Configure the sources to use. We can add or override individual directories.
+#
+###############################################################################
+
+
+ # Where are the sources.
+ LANGTOOLS_TOPDIR="$SRC_ROOT/langtools"
+ CORBA_TOPDIR="$SRC_ROOT/corba"
+ JAXP_TOPDIR="$SRC_ROOT/jaxp"
+ JAXWS_TOPDIR="$SRC_ROOT/jaxws"
+ HOTSPOT_TOPDIR="$SRC_ROOT/hotspot"
+ NASHORN_TOPDIR="$SRC_ROOT/nashorn"
+ JDK_TOPDIR="$SRC_ROOT/jdk"
+
+
+
+
+
+
+
+
+
+ # This feature is no longer supported.
+
+
+
+# Check whether --with-add-source-root was given.
+if test "${with_add_source_root+set}" = set; then :
+ withval=$with_add_source_root; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-add-source-root is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-add-source-root is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-override-source-root was given.
+if test "${with_override_source_root+set}" = set; then :
+ withval=$with_override_source_root; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-override-source-root is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-override-source-root is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-adds-and-overrides was given.
+if test "${with_adds_and_overrides+set}" = set; then :
+ withval=$with_adds_and_overrides; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-adds-and-overrides is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-adds-and-overrides is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-override-langtools was given.
+if test "${with_override_langtools+set}" = set; then :
+ withval=$with_override_langtools; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-override-langtools is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-override-langtools is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-override-corba was given.
+if test "${with_override_corba+set}" = set; then :
+ withval=$with_override_corba; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-override-corba is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-override-corba is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-override-jaxp was given.
+if test "${with_override_jaxp+set}" = set; then :
+ withval=$with_override_jaxp; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-override-jaxp is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-override-jaxp is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-override-jaxws was given.
+if test "${with_override_jaxws+set}" = set; then :
+ withval=$with_override_jaxws; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-override-jaxws is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-override-jaxws is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-override-hotspot was given.
+if test "${with_override_hotspot+set}" = set; then :
+ withval=$with_override_hotspot; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-override-hotspot is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-override-hotspot is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-override-nashorn was given.
+if test "${with_override_nashorn+set}" = set; then :
+ withval=$with_override_nashorn; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-override-nashorn is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-override-nashorn is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-override-jdk was given.
+if test "${with_override_jdk+set}" = set; then :
+ withval=$with_override_jdk; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-override-jdk is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-override-jdk is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+ BUILD_OUTPUT="$OUTPUT_ROOT"
+
+ JDK_OUTPUTDIR="$OUTPUT_ROOT/jdk"
+
+
+
+# Check whether --with-import_hotspot was given.
+if test "${with_import_hotspot+set}" = set; then :
+ withval=$with_import_hotspot; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-import_hotspot is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-import_hotspot is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+
+
+# Check whether --with-import-modules was given.
+if test "${with_import_modules+set}" = set; then :
+ withval=$with_import_modules;
+fi
+
+
+ if test "x$with_import_modules" != x \
+ && test "x$with_import_modules" != "xno"; then
+ if test -d "$with_import_modules"; then
+ IMPORT_MODULES_TOPDIR="$with_import_modules"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$IMPORT_MODULES_TOPDIR" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$IMPORT_MODULES_TOPDIR"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of IMPORT_MODULES_TOPDIR, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of IMPORT_MODULES_TOPDIR, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of IMPORT_MODULES_TOPDIR" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ IMPORT_MODULES_TOPDIR="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting IMPORT_MODULES_TOPDIR to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting IMPORT_MODULES_TOPDIR to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$IMPORT_MODULES_TOPDIR"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ IMPORT_MODULES_TOPDIR="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting IMPORT_MODULES_TOPDIR to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting IMPORT_MODULES_TOPDIR to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$IMPORT_MODULES_TOPDIR"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of IMPORT_MODULES_TOPDIR, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of IMPORT_MODULES_TOPDIR, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of IMPORT_MODULES_TOPDIR, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ IMPORT_MODULES_TOPDIR="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ IMPORT_MODULES_TOPDIR="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ elif test -e "$with_import_modules"; then
+ IMPORT_MODULES_TOPDIR="$CONFIGURESUPPORT_OUTPUTDIR/import-modules"
+ $RM -rf "$IMPORT_MODULES_TOPDIR"
+ $MKDIR -p "$IMPORT_MODULES_TOPDIR"
+ if ! $UNZIP -q "$with_import_modules" -d "$IMPORT_MODULES_TOPDIR"; then
+ as_fn_error $? "--with-import-modules=\"$with_import_modules\" must point to a dir or a zip file" "$LINENO" 5
+ fi
+ else
+ as_fn_error $? "--with-import-modules=\"$with_import_modules\" must point to a dir or a zip file" "$LINENO" 5
+ fi
+ fi
+
+ if test -d "$IMPORT_MODULES_TOPDIR/modules"; then
+ IMPORT_MODULES_CLASSES="$IMPORT_MODULES_TOPDIR/modules"
+ fi
+ if test -d "$IMPORT_MODULES_TOPDIR/modules_cmds"; then
+ IMPORT_MODULES_CMDS="$IMPORT_MODULES_TOPDIR/modules_cmds"
+ fi
+ if test -d "$IMPORT_MODULES_TOPDIR/modules_libs"; then
+ IMPORT_MODULES_LIBS="$IMPORT_MODULES_TOPDIR/modules_libs"
+ fi
+ if test -d "$IMPORT_MODULES_TOPDIR/modules_conf"; then
+ IMPORT_MODULES_CONF="$IMPORT_MODULES_TOPDIR/modules_conf"
+ fi
+ if test -d "$IMPORT_MODULES_TOPDIR/modules_legal"; then
+ IMPORT_MODULES_LEGAL="$IMPORT_MODULES_TOPDIR/modules_legal"
+ fi
+ if test -d "$IMPORT_MODULES_TOPDIR/modules_man"; then
+ IMPORT_MODULES_MAN="$IMPORT_MODULES_TOPDIR/modules_man"
+ fi
+ if test -d "$IMPORT_MODULES_TOPDIR/modules_src"; then
+ IMPORT_MODULES_SRC="$IMPORT_MODULES_TOPDIR/modules_src"
+ fi
+ if test -d "$IMPORT_MODULES_TOPDIR/make"; then
+ IMPORT_MODULES_MAKE="$IMPORT_MODULES_TOPDIR/make"
+ fi
+
+
+
+
+
+
+
+
+
+
+
+###############################################################################
+#
+# Setup the toolchain (compilers etc), i.e. tools used to compile and process
+# native code.
+#
+###############################################################################
+
+# See if we are doing a complete static build or not
+
+ # Check whether --enable-static-build was given.
+if test "${enable_static_build+set}" = set; then :
+ enableval=$enable_static_build;
+fi
+
+ STATIC_BUILD=false
+ if test "x$enable_static_build" = "xyes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if static build is enabled" >&5
+$as_echo_n "checking if static build is enabled... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ if test "x$OPENJDK_TARGET_OS" != "xmacosx"; then
+ as_fn_error $? "--enable-static-build is only supported for macosx builds" "$LINENO" 5
+ fi
+ STATIC_BUILD_CFLAGS="-DSTATIC_BUILD=1"
+ CFLAGS_JDKLIB_EXTRA="$CFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS"
+ CXXFLAGS_JDKLIB_EXTRA="$CXXFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS"
+ STATIC_BUILD=true
+ elif test "x$enable_static_build" = "xno"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if static build is enabled" >&5
+$as_echo_n "checking if static build is enabled... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ elif test "x$enable_static_build" != "x"; then
+ as_fn_error $? "--enable-static-build can only be assigned \"yes\" or \"no\"" "$LINENO" 5
+ fi
+
+
+
+
+# First determine the toolchain type (compiler family)
+
+
+# Check whether --with-toolchain-type was given.
+if test "${with_toolchain_type+set}" = set; then :
+ withval=$with_toolchain_type;
+fi
+
+
+ # Use indirect variable referencing
+ toolchain_var_name=VALID_TOOLCHAINS_$OPENJDK_BUILD_OS
+ VALID_TOOLCHAINS=${!toolchain_var_name}
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ if test -n "$XCODEBUILD"; then
+ # On Mac OS X, default toolchain to clang after Xcode 5
+ XCODE_VERSION_OUTPUT=`"$XCODEBUILD" -version 2>&1 | $HEAD -n 1`
+ $ECHO "$XCODE_VERSION_OUTPUT" | $GREP "Xcode " > /dev/null
+ if test $? -ne 0; then
+ as_fn_error $? "Failed to determine Xcode version." "$LINENO" 5
+ fi
+ XCODE_MAJOR_VERSION=`$ECHO $XCODE_VERSION_OUTPUT | \
+ $SED -e 's/^Xcode \([1-9][0-9.]*\)/\1/' | \
+ $CUT -f 1 -d .`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Xcode major version: $XCODE_MAJOR_VERSION" >&5
+$as_echo "$as_me: Xcode major version: $XCODE_MAJOR_VERSION" >&6;}
+ if test $XCODE_MAJOR_VERSION -ge 5; then
+ DEFAULT_TOOLCHAIN="clang"
+ else
+ DEFAULT_TOOLCHAIN="gcc"
+ fi
+ else
+ # If Xcode is not installed, but the command line tools are
+ # then we can't run xcodebuild. On these systems we should
+ # default to clang
+ DEFAULT_TOOLCHAIN="clang"
+ fi
+ else
+ # First toolchain type in the list is the default
+ DEFAULT_TOOLCHAIN=${VALID_TOOLCHAINS%% *}
+ fi
+
+ if test "x$with_toolchain_type" = xlist; then
+ # List all toolchains
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The following toolchains are valid on this platform:" >&5
+$as_echo "$as_me: The following toolchains are valid on this platform:" >&6;}
+ for toolchain in $VALID_TOOLCHAINS; do
+ toolchain_var_name=TOOLCHAIN_DESCRIPTION_$toolchain
+ TOOLCHAIN_DESCRIPTION=${!toolchain_var_name}
+ $PRINTF " %-10s %s\n" $toolchain "$TOOLCHAIN_DESCRIPTION"
+ done
+
+ exit 0
+ elif test "x$with_toolchain_type" != x; then
+ # User override; check that it is valid
+ if test "x${VALID_TOOLCHAINS/$with_toolchain_type/}" = "x${VALID_TOOLCHAINS}"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Toolchain type $with_toolchain_type is not valid on this platform." >&5
+$as_echo "$as_me: Toolchain type $with_toolchain_type is not valid on this platform." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Valid toolchains: $VALID_TOOLCHAINS." >&5
+$as_echo "$as_me: Valid toolchains: $VALID_TOOLCHAINS." >&6;}
+ as_fn_error $? "Cannot continue." "$LINENO" 5
+ fi
+ TOOLCHAIN_TYPE=$with_toolchain_type
+ else
+ # No flag given, use default
+ TOOLCHAIN_TYPE=$DEFAULT_TOOLCHAIN
+ fi
+
+
+ TOOLCHAIN_CC_BINARY_clang="clang"
+ TOOLCHAIN_CC_BINARY_gcc="gcc"
+ TOOLCHAIN_CC_BINARY_microsoft="cl"
+ TOOLCHAIN_CC_BINARY_solstudio="cc"
+ TOOLCHAIN_CC_BINARY_xlc="xlc_r"
+
+ TOOLCHAIN_CXX_BINARY_clang="clang++"
+ TOOLCHAIN_CXX_BINARY_gcc="g++"
+ TOOLCHAIN_CXX_BINARY_microsoft="cl"
+ TOOLCHAIN_CXX_BINARY_solstudio="CC"
+ TOOLCHAIN_CXX_BINARY_xlc="xlC_r"
+
+ # Use indirect variable referencing
+ toolchain_var_name=TOOLCHAIN_DESCRIPTION_$TOOLCHAIN_TYPE
+ TOOLCHAIN_DESCRIPTION=${!toolchain_var_name}
+ toolchain_var_name=TOOLCHAIN_MINIMUM_VERSION_$TOOLCHAIN_TYPE
+ TOOLCHAIN_MINIMUM_VERSION=${!toolchain_var_name}
+ toolchain_var_name=TOOLCHAIN_CC_BINARY_$TOOLCHAIN_TYPE
+ TOOLCHAIN_CC_BINARY=${!toolchain_var_name}
+ toolchain_var_name=TOOLCHAIN_CXX_BINARY_$TOOLCHAIN_TYPE
+ TOOLCHAIN_CXX_BINARY=${!toolchain_var_name}
+
+
+ # Define filename patterns
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ LIBRARY_PREFIX=
+ SHARED_LIBRARY_SUFFIX='.dll'
+ STATIC_LIBRARY_SUFFIX='.lib'
+ SHARED_LIBRARY='$1.dll'
+ STATIC_LIBRARY='$1.lib'
+ OBJ_SUFFIX='.obj'
+ EXE_SUFFIX='.exe'
+ else
+ LIBRARY_PREFIX=lib
+ SHARED_LIBRARY_SUFFIX='.so'
+ STATIC_LIBRARY_SUFFIX='.a'
+ SHARED_LIBRARY='lib$1.so'
+ STATIC_LIBRARY='lib$1.a'
+ OBJ_SUFFIX='.o'
+ EXE_SUFFIX=''
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # For full static builds, we're overloading the SHARED_LIBRARY
+ # variables in order to limit the amount of changes required.
+ # It would be better to remove SHARED and just use LIBRARY and
+ # LIBRARY_SUFFIX for libraries that can be built either
+ # shared or static and use STATIC_* for libraries that are
+ # always built statically.
+ if test "x$STATIC_BUILD" = xtrue; then
+ SHARED_LIBRARY='lib$1.a'
+ SHARED_LIBRARY_SUFFIX='.a'
+ else
+ SHARED_LIBRARY='lib$1.dylib'
+ SHARED_LIBRARY_SUFFIX='.dylib'
+ fi
+ fi
+ fi
+
+
+
+
+
+
+
+
+
+
+ if test "x$TOOLCHAIN_TYPE" = "x$DEFAULT_TOOLCHAIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Using default toolchain $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION)" >&5
+$as_echo "$as_me: Using default toolchain $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION)" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Using user selected toolchain $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION). Default toolchain is $DEFAULT_TOOLCHAIN." >&5
+$as_echo "$as_me: Using user selected toolchain $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION). Default toolchain is $DEFAULT_TOOLCHAIN." >&6;}
+ fi
+
+
+# User supplied flags should be used when configure detects compilers
+
+ if test "x$CFLAGS" != "x${ADDED_CFLAGS}"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring CFLAGS($CFLAGS) found in environment. Use --with-extra-cflags" >&5
+$as_echo "$as_me: WARNING: Ignoring CFLAGS($CFLAGS) found in environment. Use --with-extra-cflags" >&2;}
+ fi
+
+ if test "x$CXXFLAGS" != "x${ADDED_CXXFLAGS}"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring CXXFLAGS($CXXFLAGS) found in environment. Use --with-extra-cxxflags" >&5
+$as_echo "$as_me: WARNING: Ignoring CXXFLAGS($CXXFLAGS) found in environment. Use --with-extra-cxxflags" >&2;}
+ fi
+
+ if test "x$LDFLAGS" != "x${ADDED_LDFLAGS}"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring LDFLAGS($LDFLAGS) found in environment. Use --with-extra-ldflags" >&5
+$as_echo "$as_me: WARNING: Ignoring LDFLAGS($LDFLAGS) found in environment. Use --with-extra-ldflags" >&2;}
+ fi
+
+
+# Check whether --with-extra-cflags was given.
+if test "${with_extra_cflags+set}" = set; then :
+ withval=$with_extra_cflags;
+fi
+
+
+
+# Check whether --with-extra-cxxflags was given.
+if test "${with_extra_cxxflags+set}" = set; then :
+ withval=$with_extra_cxxflags;
+fi
+
+
+
+# Check whether --with-extra-ldflags was given.
+if test "${with_extra_ldflags+set}" = set; then :
+ withval=$with_extra_ldflags;
+fi
+
+
+ EXTRA_CFLAGS="$with_extra_cflags"
+ EXTRA_CXXFLAGS="$with_extra_cxxflags"
+ EXTRA_LDFLAGS="$with_extra_ldflags"
+
+
+
+
+
+ # The global CFLAGS and LDLAGS variables are used by configure tests and
+ # should include the extra parameters
+ CFLAGS="$EXTRA_CFLAGS"
+ CXXFLAGS="$EXTRA_CXXFLAGS"
+ LDFLAGS="$EXTRA_LDFLAGS"
+ CPPFLAGS=""
+
+# The sysroot cflags are needed for configure to be able to run the compilers
+
+ if test "x$SYSROOT" != "x"; then
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ # Solaris Studio does not have a concept of sysroot. Instead we must
+ # make sure the default include and lib dirs are appended to each
+ # compile and link command line. Must also add -I-xbuiltin to enable
+ # inlining of system functions and intrinsics.
+ SYSROOT_CFLAGS="-I-xbuiltin -I$SYSROOT/usr/include"
+ SYSROOT_LDFLAGS="-L$SYSROOT/usr/lib$OPENJDK_TARGET_CPU_ISADIR \
+ -L$SYSROOT/lib$OPENJDK_TARGET_CPU_ISADIR"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ SYSROOT_CFLAGS="--sysroot=$SYSROOT"
+ SYSROOT_LDFLAGS="--sysroot=$SYSROOT"
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ SYSROOT_CFLAGS="-isysroot $SYSROOT"
+ SYSROOT_LDFLAGS="-isysroot $SYSROOT"
+ fi
+ # The global CFLAGS and LDFLAGS variables need these for configure to function
+ CFLAGS="$CFLAGS $SYSROOT_CFLAGS"
+ CPPFLAGS="$CPPFLAGS $SYSROOT_CFLAGS"
+ CXXFLAGS="$CXXFLAGS $SYSROOT_CFLAGS"
+ LDFLAGS="$LDFLAGS $SYSROOT_LDFLAGS"
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # We also need -iframework<path>/System/Library/Frameworks
+ SYSROOT_CFLAGS="$SYSROOT_CFLAGS -iframework $SYSROOT/System/Library/Frameworks"
+ SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS -iframework $SYSROOT/System/Library/Frameworks"
+ # These always need to be set, or we can't find the frameworks embedded in JavaVM.framework
+ # set this here so it doesn't have to be peppered throughout the forest
+ SYSROOT_CFLAGS="$SYSROOT_CFLAGS -F $SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
+ SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS -F $SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
+ fi
+
+
+
+
+
+# Then detect the actual binaries needed
+
+ # FIXME: Is this needed?
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+ # Store the CFLAGS etc passed to the configure script.
+ ORG_CFLAGS="$CFLAGS"
+ ORG_CXXFLAGS="$CXXFLAGS"
+
+ # autoconf magic only relies on PATH, so update it if tools dir is specified
+ OLD_PATH="$PATH"
+
+ # On Windows, we need to detect the visual studio installation first.
+ # This will change the PATH, but we need to keep that new PATH even
+ # after toolchain detection is done, since the compiler (on x86) uses
+ # it for DLL resolution in runtime.
+ if test "x$OPENJDK_BUILD_OS" = "xwindows" \
+ && test "x$TOOLCHAIN_TYPE" = "xmicrosoft"; then
+
+ # Store path to cygwin link.exe to help excluding it when searching for
+ # VS linker. This must be done before changing the PATH when looking for VS.
+ # Extract the first word of "link", so it can be a program name with args.
+set dummy link; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CYGWIN_LINK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CYGWIN_LINK in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CYGWIN_LINK="$CYGWIN_LINK" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CYGWIN_LINK="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CYGWIN_LINK=$ac_cv_path_CYGWIN_LINK
+if test -n "$CYGWIN_LINK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGWIN_LINK" >&5
+$as_echo "$CYGWIN_LINK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$CYGWIN_LINK" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the first found link.exe is actually the Cygwin link tool" >&5
+$as_echo_n "checking if the first found link.exe is actually the Cygwin link tool... " >&6; }
+ "$CYGWIN_LINK" --version > /dev/null
+ if test $? -eq 0 ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ # This might be the VS linker. Don't exclude it later on.
+ CYGWIN_LINK=""
+ fi
+ fi
+
+ # First-hand choice is to locate and run the vsvars bat file.
+
+
+# Check whether --with-toolchain-version was given.
+if test "${with_toolchain_version+set}" = set; then :
+ withval=$with_toolchain_version;
+fi
+
+
+ if test "x$with_toolchain_version" = xlist; then
+ # List all toolchains
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The following toolchain versions are valid on this platform:" >&5
+$as_echo "$as_me: The following toolchain versions are valid on this platform:" >&6;}
+ for version in $VALID_VS_VERSIONS; do
+ eval VS_DESCRIPTION=\${VS_DESCRIPTION_$version}
+ $PRINTF " %-10s %s\n" $version "$VS_DESCRIPTION"
+ done
+
+ exit 0
+ elif test "x$DEVKIT_VS_VERSION" != x; then
+ VS_VERSION=$DEVKIT_VS_VERSION
+ TOOLCHAIN_VERSION=$VS_VERSION
+ eval VS_DESCRIPTION="\${VS_DESCRIPTION_${VS_VERSION}}"
+ eval VS_VERSION_INTERNAL="\${VS_VERSION_INTERNAL_${VS_VERSION}}"
+ eval MSVCR_NAME="\${VS_MSVCR_${VS_VERSION}}"
+ eval MSVCP_NAME="\${VS_MSVCP_${VS_VERSION}}"
+ eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}"
+ VS_PATH="$TOOLCHAIN_PATH:$PATH"
+
+ # Convert DEVKIT_VS_INCLUDE into windows style VS_INCLUDE so that it
+ # can still be exported as INCLUDE for compiler invocations without
+ # SYSROOT_CFLAGS
+ OLDIFS="$IFS"
+ IFS=";"
+ for i in $DEVKIT_VS_INCLUDE; do
+ ipath=$i
+
+ unix_path="$ipath"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ windows_path=`$CYGPATH -m "$unix_path"`
+ ipath="$windows_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ windows_path=`cmd //c echo $unix_path`
+ ipath="$windows_path"
+ fi
+
+ VS_INCLUDE="$VS_INCLUDE;$ipath"
+ done
+ # Convert DEVKIT_VS_LIB into VS_LIB so that it can still be exported
+ # as LIB for compiler invocations without SYSROOT_LDFLAGS
+ for i in $DEVKIT_VS_LIB; do
+ libpath=$i
+
+ unix_path="$libpath"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ windows_path=`$CYGPATH -m "$unix_path"`
+ libpath="$windows_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ windows_path=`cmd //c echo $unix_path`
+ libpath="$windows_path"
+ fi
+
+ VS_LIB="$VS_LIB;$libpath"
+ done
+ IFS="$OLDIFS"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found devkit $VS_DESCRIPTION" >&5
+$as_echo "$as_me: Found devkit $VS_DESCRIPTION" >&6;}
+
+ elif test "x$with_toolchain_version" != x; then
+ # User override; check that it is valid
+ if test "x${VALID_VS_VERSIONS/$with_toolchain_version/}" = "x${VALID_VS_VERSIONS}"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Visual Studio version $with_toolchain_version is not valid." >&5
+$as_echo "$as_me: Visual Studio version $with_toolchain_version is not valid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Valid Visual Studio versions: $VALID_VS_VERSIONS." >&5
+$as_echo "$as_me: Valid Visual Studio versions: $VALID_VS_VERSIONS." >&6;}
+ as_fn_error $? "Cannot continue." "$LINENO" 5
+ fi
+ VS_VERSIONS_PROBE_LIST="$with_toolchain_version"
+ else
+ # No flag given, use default
+ VS_VERSIONS_PROBE_LIST="$VALID_VS_VERSIONS"
+ fi
+
+ for VS_VERSION in $VS_VERSIONS_PROBE_LIST; do
+
+ VS_VERSION="$VS_VERSION"
+ eval VS_COMNTOOLS_VAR="\${VS_ENVVAR_${VS_VERSION}}"
+ eval VS_COMNTOOLS="\$${VS_COMNTOOLS_VAR}"
+ eval VS_INSTALL_DIR="\${VS_VS_INSTALLDIR_${VS_VERSION}}"
+ eval SDK_INSTALL_DIR="\${VS_SDK_INSTALLDIR_${VS_VERSION}}"
+
+ # When using --with-tools-dir, assume it points to the correct and default
+ # version of Visual Studio or that --with-toolchain-version was also set.
+ if test "x$with_tools_dir" != x; then
+
+ if test "x$VS_ENV_CMD" = x; then
+ VS_VERSION="${VS_VERSION}"
+ VS_BASE="$with_tools_dir/../.."
+ METHOD="--with-tools-dir"
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ VCVARSFILE="vc/bin/vcvars32.bat"
+ else
+ VCVARSFILE="vc/bin/amd64/vcvars64.bat"
+ fi
+
+
+ windows_path="$VS_BASE"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ VS_BASE="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ VS_BASE="$unix_path"
+ fi
+
+ if test -d "$VS_BASE"; then
+ if test -f "$VS_BASE/$VCVARSFILE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS_BASE using $METHOD" >&6;}
+ VS_ENV_CMD="$VS_BASE/$VCVARSFILE"
+ # PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
+ # 'LIB_BUILD_FREETYPE' in libraries.m4) and must be one of 'v100', 'v110' or 'v120' for VS 2010, 2012 or VS2013
+ eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&5
+$as_echo "$as_me: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&6;}
+ fi
+ fi
+ fi
+
+
+ if test "x$VS_ENV_CMD" = x; then
+ VS_VERSION="${VS_VERSION}"
+ VS_BASE="$with_tools_dir/../../.."
+ METHOD="--with-tools-dir"
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ VCVARSFILE="vc/bin/vcvars32.bat"
+ else
+ VCVARSFILE="vc/bin/amd64/vcvars64.bat"
+ fi
+
+
+ windows_path="$VS_BASE"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ VS_BASE="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ VS_BASE="$unix_path"
+ fi
+
+ if test -d "$VS_BASE"; then
+ if test -f "$VS_BASE/$VCVARSFILE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS_BASE using $METHOD" >&6;}
+ VS_ENV_CMD="$VS_BASE/$VCVARSFILE"
+ # PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
+ # 'LIB_BUILD_FREETYPE' in libraries.m4) and must be one of 'v100', 'v110' or 'v120' for VS 2010, 2012 or VS2013
+ eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&5
+$as_echo "$as_me: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$VS_ENV_CMD" = x; then
+ # Having specified an argument which is incorrect will produce an instant failure;
+ # we should not go on looking
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path given by --with-tools-dir does not contain a valid" >&5
+$as_echo "$as_me: The path given by --with-tools-dir does not contain a valid" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Visual Studio installation. Please point to the VC/bin or VC/bin/amd64" >&5
+$as_echo "$as_me: Visual Studio installation. Please point to the VC/bin or VC/bin/amd64" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: directory within the Visual Studio installation" >&5
+$as_echo "$as_me: directory within the Visual Studio installation" >&6;}
+ as_fn_error $? "Cannot locate a valid Visual Studio installation" "$LINENO" 5
+ fi
+ fi
+
+ VS_ENV_CMD=""
+ VS_ENV_ARGS=""
+
+ if test "x$VS_COMNTOOLS" != x; then
+
+ if test "x$VS_ENV_CMD" = x; then
+ VS_VERSION="${VS_VERSION}"
+ VS_BASE="$VS_COMNTOOLS/../.."
+ METHOD="$VS_COMNTOOLS_VAR variable"
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ VCVARSFILE="vc/bin/vcvars32.bat"
+ else
+ VCVARSFILE="vc/bin/amd64/vcvars64.bat"
+ fi
+
+
+ windows_path="$VS_BASE"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ VS_BASE="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ VS_BASE="$unix_path"
+ fi
+
+ if test -d "$VS_BASE"; then
+ if test -f "$VS_BASE/$VCVARSFILE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS_BASE using $METHOD" >&6;}
+ VS_ENV_CMD="$VS_BASE/$VCVARSFILE"
+ # PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
+ # 'LIB_BUILD_FREETYPE' in libraries.m4) and must be one of 'v100', 'v110' or 'v120' for VS 2010, 2012 or VS2013
+ eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&5
+$as_echo "$as_me: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&6;}
+ fi
+ fi
+ fi
+
+ fi
+ if test "x$PROGRAMFILES" != x; then
+
+ if test "x$VS_ENV_CMD" = x; then
+ VS_VERSION="${VS_VERSION}"
+ VS_BASE="$PROGRAMFILES/$VS_INSTALL_DIR"
+ METHOD="well-known name"
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ VCVARSFILE="vc/bin/vcvars32.bat"
+ else
+ VCVARSFILE="vc/bin/amd64/vcvars64.bat"
+ fi
+
+
+ windows_path="$VS_BASE"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ VS_BASE="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ VS_BASE="$unix_path"
+ fi
+
+ if test -d "$VS_BASE"; then
+ if test -f "$VS_BASE/$VCVARSFILE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS_BASE using $METHOD" >&6;}
+ VS_ENV_CMD="$VS_BASE/$VCVARSFILE"
+ # PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
+ # 'LIB_BUILD_FREETYPE' in libraries.m4) and must be one of 'v100', 'v110' or 'v120' for VS 2010, 2012 or VS2013
+ eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&5
+$as_echo "$as_me: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&6;}
+ fi
+ fi
+ fi
+
+ fi
+ # Work around the insanely named ProgramFiles(x86) env variable
+ PROGRAMFILES_X86="`env | $SED -n 's/^ProgramFiles(x86)=//p'`"
+ if test "x$PROGRAMFILES_X86" != x; then
+
+ if test "x$VS_ENV_CMD" = x; then
+ VS_VERSION="${VS_VERSION}"
+ VS_BASE="$PROGRAMFILES_X86/$VS_INSTALL_DIR"
+ METHOD="well-known name"
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ VCVARSFILE="vc/bin/vcvars32.bat"
+ else
+ VCVARSFILE="vc/bin/amd64/vcvars64.bat"
+ fi
+
+
+ windows_path="$VS_BASE"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ VS_BASE="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ VS_BASE="$unix_path"
+ fi
+
+ if test -d "$VS_BASE"; then
+ if test -f "$VS_BASE/$VCVARSFILE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS_BASE using $METHOD" >&6;}
+ VS_ENV_CMD="$VS_BASE/$VCVARSFILE"
+ # PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
+ # 'LIB_BUILD_FREETYPE' in libraries.m4) and must be one of 'v100', 'v110' or 'v120' for VS 2010, 2012 or VS2013
+ eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&5
+$as_echo "$as_me: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&6;}
+ fi
+ fi
+ fi
+
+ fi
+
+ if test "x$VS_ENV_CMD" = x; then
+ VS_VERSION="${VS_VERSION}"
+ VS_BASE="C:/Program Files/$VS_INSTALL_DIR"
+ METHOD="well-known name"
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ VCVARSFILE="vc/bin/vcvars32.bat"
+ else
+ VCVARSFILE="vc/bin/amd64/vcvars64.bat"
+ fi
+
+
+ windows_path="$VS_BASE"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ VS_BASE="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ VS_BASE="$unix_path"
+ fi
+
+ if test -d "$VS_BASE"; then
+ if test -f "$VS_BASE/$VCVARSFILE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS_BASE using $METHOD" >&6;}
+ VS_ENV_CMD="$VS_BASE/$VCVARSFILE"
+ # PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
+ # 'LIB_BUILD_FREETYPE' in libraries.m4) and must be one of 'v100', 'v110' or 'v120' for VS 2010, 2012 or VS2013
+ eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&5
+$as_echo "$as_me: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&6;}
+ fi
+ fi
+ fi
+
+
+ if test "x$VS_ENV_CMD" = x; then
+ VS_VERSION="${VS_VERSION}"
+ VS_BASE="C:/Program Files (x86)/$VS_INSTALL_DIR"
+ METHOD="well-known name"
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ VCVARSFILE="vc/bin/vcvars32.bat"
+ else
+ VCVARSFILE="vc/bin/amd64/vcvars64.bat"
+ fi
+
+
+ windows_path="$VS_BASE"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ VS_BASE="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ VS_BASE="$unix_path"
+ fi
+
+ if test -d "$VS_BASE"; then
+ if test -f "$VS_BASE/$VCVARSFILE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS_BASE using $METHOD" >&6;}
+ VS_ENV_CMD="$VS_BASE/$VCVARSFILE"
+ # PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
+ # 'LIB_BUILD_FREETYPE' in libraries.m4) and must be one of 'v100', 'v110' or 'v120' for VS 2010, 2012 or VS2013
+ eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Visual Studio installation at $VS_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Visual Studio installation at $VS_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&5
+$as_echo "$as_me: Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring" >&6;}
+ fi
+ fi
+ fi
+
+
+ if test "x$SDK_INSTALL_DIR" != x; then
+ if test "x$ProgramW6432" != x; then
+
+ if test "x$VS_ENV_CMD" = x; then
+ VS_VERSION="${VS_VERSION}"
+ WIN_SDK_BASE="$ProgramW6432/$SDK_INSTALL_DIR"
+ METHOD="well-known name"
+
+ windows_path="$WIN_SDK_BASE"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ WIN_SDK_BASE="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ WIN_SDK_BASE="$unix_path"
+ fi
+
+ if test -d "$WIN_SDK_BASE"; then
+ # There have been cases of partial or broken SDK installations. A missing
+ # lib dir is not going to work.
+ if test ! -d "$WIN_SDK_BASE/lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: Installation is broken, lib dir is missing. Ignoring" >&5
+$as_echo "$as_me: Warning: Installation is broken, lib dir is missing. Ignoring" >&6;}
+ elif test -f "$WIN_SDK_BASE/Bin/SetEnv.Cmd"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+ VS_ENV_CMD="$WIN_SDK_BASE/Bin/SetEnv.Cmd"
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ VS_ENV_ARGS="/x86"
+ else
+ VS_ENV_ARGS="/x64"
+ fi
+ # PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
+ # 'LIB_BUILD_FREETYPE' in libraries.m4) and must be 'Windows7.1SDK' for Windows7.1SDK
+ # TODO: improve detection for other versions of SDK
+ eval PLATFORM_TOOLSET="\${VS_SDK_PLATFORM_NAME_${VS_VERSION}}"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&5
+$as_echo "$as_me: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&6;}
+ fi
+ fi
+ fi
+
+ fi
+ if test "x$PROGRAMW6432" != x; then
+
+ if test "x$VS_ENV_CMD" = x; then
+ VS_VERSION="${VS_VERSION}"
+ WIN_SDK_BASE="$PROGRAMW6432/$SDK_INSTALL_DIR"
+ METHOD="well-known name"
+
+ windows_path="$WIN_SDK_BASE"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ WIN_SDK_BASE="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ WIN_SDK_BASE="$unix_path"
+ fi
+
+ if test -d "$WIN_SDK_BASE"; then
+ # There have been cases of partial or broken SDK installations. A missing
+ # lib dir is not going to work.
+ if test ! -d "$WIN_SDK_BASE/lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: Installation is broken, lib dir is missing. Ignoring" >&5
+$as_echo "$as_me: Warning: Installation is broken, lib dir is missing. Ignoring" >&6;}
+ elif test -f "$WIN_SDK_BASE/Bin/SetEnv.Cmd"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+ VS_ENV_CMD="$WIN_SDK_BASE/Bin/SetEnv.Cmd"
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ VS_ENV_ARGS="/x86"
+ else
+ VS_ENV_ARGS="/x64"
+ fi
+ # PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
+ # 'LIB_BUILD_FREETYPE' in libraries.m4) and must be 'Windows7.1SDK' for Windows7.1SDK
+ # TODO: improve detection for other versions of SDK
+ eval PLATFORM_TOOLSET="\${VS_SDK_PLATFORM_NAME_${VS_VERSION}}"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&5
+$as_echo "$as_me: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&6;}
+ fi
+ fi
+ fi
+
+ fi
+ if test "x$PROGRAMFILES" != x; then
+
+ if test "x$VS_ENV_CMD" = x; then
+ VS_VERSION="${VS_VERSION}"
+ WIN_SDK_BASE="$PROGRAMFILES/$SDK_INSTALL_DIR"
+ METHOD="well-known name"
+
+ windows_path="$WIN_SDK_BASE"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ WIN_SDK_BASE="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ WIN_SDK_BASE="$unix_path"
+ fi
+
+ if test -d "$WIN_SDK_BASE"; then
+ # There have been cases of partial or broken SDK installations. A missing
+ # lib dir is not going to work.
+ if test ! -d "$WIN_SDK_BASE/lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: Installation is broken, lib dir is missing. Ignoring" >&5
+$as_echo "$as_me: Warning: Installation is broken, lib dir is missing. Ignoring" >&6;}
+ elif test -f "$WIN_SDK_BASE/Bin/SetEnv.Cmd"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+ VS_ENV_CMD="$WIN_SDK_BASE/Bin/SetEnv.Cmd"
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ VS_ENV_ARGS="/x86"
+ else
+ VS_ENV_ARGS="/x64"
+ fi
+ # PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
+ # 'LIB_BUILD_FREETYPE' in libraries.m4) and must be 'Windows7.1SDK' for Windows7.1SDK
+ # TODO: improve detection for other versions of SDK
+ eval PLATFORM_TOOLSET="\${VS_SDK_PLATFORM_NAME_${VS_VERSION}}"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&5
+$as_echo "$as_me: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&6;}
+ fi
+ fi
+ fi
+
+ fi
+
+ if test "x$VS_ENV_CMD" = x; then
+ VS_VERSION="${VS_VERSION}"
+ WIN_SDK_BASE="C:/Program Files/$SDK_INSTALL_DIR"
+ METHOD="well-known name"
+
+ windows_path="$WIN_SDK_BASE"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ WIN_SDK_BASE="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ WIN_SDK_BASE="$unix_path"
+ fi
+
+ if test -d "$WIN_SDK_BASE"; then
+ # There have been cases of partial or broken SDK installations. A missing
+ # lib dir is not going to work.
+ if test ! -d "$WIN_SDK_BASE/lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: Installation is broken, lib dir is missing. Ignoring" >&5
+$as_echo "$as_me: Warning: Installation is broken, lib dir is missing. Ignoring" >&6;}
+ elif test -f "$WIN_SDK_BASE/Bin/SetEnv.Cmd"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+ VS_ENV_CMD="$WIN_SDK_BASE/Bin/SetEnv.Cmd"
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ VS_ENV_ARGS="/x86"
+ else
+ VS_ENV_ARGS="/x64"
+ fi
+ # PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
+ # 'LIB_BUILD_FREETYPE' in libraries.m4) and must be 'Windows7.1SDK' for Windows7.1SDK
+ # TODO: improve detection for other versions of SDK
+ eval PLATFORM_TOOLSET="\${VS_SDK_PLATFORM_NAME_${VS_VERSION}}"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&5
+$as_echo "$as_me: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&6;}
+ fi
+ fi
+ fi
+
+
+ if test "x$VS_ENV_CMD" = x; then
+ VS_VERSION="${VS_VERSION}"
+ WIN_SDK_BASE="C:/Program Files (x86)/$SDK_INSTALL_DIR"
+ METHOD="well-known name"
+
+ windows_path="$WIN_SDK_BASE"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ WIN_SDK_BASE="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ WIN_SDK_BASE="$unix_path"
+ fi
+
+ if test -d "$WIN_SDK_BASE"; then
+ # There have been cases of partial or broken SDK installations. A missing
+ # lib dir is not going to work.
+ if test ! -d "$WIN_SDK_BASE/lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: Installation is broken, lib dir is missing. Ignoring" >&5
+$as_echo "$as_me: Warning: Installation is broken, lib dir is missing. Ignoring" >&6;}
+ elif test -f "$WIN_SDK_BASE/Bin/SetEnv.Cmd"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+ VS_ENV_CMD="$WIN_SDK_BASE/Bin/SetEnv.Cmd"
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ VS_ENV_ARGS="/x86"
+ else
+ VS_ENV_ARGS="/x64"
+ fi
+ # PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
+ # 'LIB_BUILD_FREETYPE' in libraries.m4) and must be 'Windows7.1SDK' for Windows7.1SDK
+ # TODO: improve detection for other versions of SDK
+ eval PLATFORM_TOOLSET="\${VS_SDK_PLATFORM_NAME_${VS_VERSION}}"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&5
+$as_echo "$as_me: Found Windows SDK installation at $WIN_SDK_BASE using $METHOD" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&5
+$as_echo "$as_me: Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring" >&6;}
+ fi
+ fi
+ fi
+
+ fi
+
+ if test "x$VS_ENV_CMD" != x; then
+ TOOLCHAIN_VERSION=$VS_VERSION
+ eval VS_DESCRIPTION="\${VS_DESCRIPTION_${VS_VERSION}}"
+ eval VS_VERSION_INTERNAL="\${VS_VERSION_INTERNAL_${VS_VERSION}}"
+ eval MSVCR_NAME="\${VS_MSVCR_${VS_VERSION}}"
+ eval MSVCP_NAME="\${VS_MSVCP_${VS_VERSION}}"
+ # The rest of the variables are already evaled while probing
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $VS_DESCRIPTION" >&5
+$as_echo "$as_me: Found $VS_DESCRIPTION" >&6;}
+ break
+ fi
+ done
+
+
+ # If we have a devkit, skip all of the below.
+ if test "x$DEVKIT_VS_VERSION" = x; then
+ if test "x$VS_ENV_CMD" != x; then
+ # We have found a Visual Studio environment on disk, let's extract variables from the vsvars bat file.
+
+ # Only process if variable expands to non-empty
+
+ if test "x$VS_ENV_CMD" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$VS_ENV_CMD"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of VS_ENV_CMD, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of VS_ENV_CMD, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of VS_ENV_CMD" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of VS_ENV_CMD, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of VS_ENV_CMD, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of VS_ENV_CMD" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$VS_ENV_CMD"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of VS_ENV_CMD, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of VS_ENV_CMD, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of VS_ENV_CMD" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$VS_ENV_CMD"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of VS_ENV_CMD, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of VS_ENV_CMD, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of VS_ENV_CMD" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ VS_ENV_CMD="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting VS_ENV_CMD to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting VS_ENV_CMD to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+
+ # Lets extract the variables that are set by vcvarsall.bat/vsvars32.bat/vsvars64.bat
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Trying to extract Visual Studio environment variables" >&5
+$as_echo "$as_me: Trying to extract Visual Studio environment variables" >&6;}
+
+ # We need to create a couple of temporary files.
+ VS_ENV_TMP_DIR="$CONFIGURESUPPORT_OUTPUTDIR/vs-env"
+ $MKDIR -p $VS_ENV_TMP_DIR
+
+ # Cannot use the VS10 setup script directly (since it only updates the DOS subshell environment).
+ # Instead create a shell script which will set the relevant variables when run.
+ WINPATH_VS_ENV_CMD="$VS_ENV_CMD"
+
+ unix_path="$WINPATH_VS_ENV_CMD"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ windows_path=`$CYGPATH -m "$unix_path"`
+ WINPATH_VS_ENV_CMD="$windows_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ windows_path=`cmd //c echo $unix_path`
+ WINPATH_VS_ENV_CMD="$windows_path"
+ fi
+
+ WINPATH_BASH="$BASH"
+
+ unix_path="$WINPATH_BASH"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ windows_path=`$CYGPATH -m "$unix_path"`
+ WINPATH_BASH="$windows_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ windows_path=`cmd //c echo $unix_path`
+ WINPATH_BASH="$windows_path"
+ fi
+
+
+ # Generate a DOS batch file which runs $VS_ENV_CMD, and then creates a shell
+ # script (executable by bash) that will setup the important variables.
+ EXTRACT_VC_ENV_BAT_FILE="$VS_ENV_TMP_DIR/extract-vs-env.bat"
+ $ECHO "@echo off" > $EXTRACT_VC_ENV_BAT_FILE
+ # This will end up something like:
+ # call C:/progra~2/micros~2.0/vc/bin/amd64/vcvars64.bat
+ $ECHO "call $WINPATH_VS_ENV_CMD $VS_ENV_ARGS" >> $EXTRACT_VC_ENV_BAT_FILE
+ # These will end up something like:
+ # C:/CygWin/bin/bash -c 'echo VS_PATH=\"$PATH\" > localdevenv.sh
+ # The trailing space for everyone except PATH is no typo, but is needed due
+ # to trailing \ in the Windows paths. These will be stripped later.
+ $ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+
+ # Now execute the newly created bat file.
+ # The | cat is to stop SetEnv.Cmd to mess with system colors on msys.
+ # Change directory so we don't need to mess with Windows paths in redirects.
+ cd $VS_ENV_TMP_DIR
+ cmd /c extract-vs-env.bat | $CAT
+ cd $CURDIR
+
+ if test ! -s $VS_ENV_TMP_DIR/set-vs-env.sh; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not succesfully extract the envionment variables needed for the VS setup." >&5
+$as_echo "$as_me: Could not succesfully extract the envionment variables needed for the VS setup." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Try setting --with-tools-dir to the VC/bin directory within the VS installation" >&5
+$as_echo "$as_me: Try setting --with-tools-dir to the VC/bin directory within the VS installation" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: or run \"bash.exe -l\" from a VS command prompt and then run configure from there." >&5
+$as_echo "$as_me: or run \"bash.exe -l\" from a VS command prompt and then run configure from there." >&6;}
+ as_fn_error $? "Cannot continue" "$LINENO" 5
+ fi
+
+ # Now set all paths and other env variables. This will allow the rest of
+ # the configure script to find and run the compiler in the proper way.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting extracted environment variables" >&5
+$as_echo "$as_me: Setting extracted environment variables" >&6;}
+ . $VS_ENV_TMP_DIR/set-vs-env.sh
+ # Now we have VS_PATH, VS_INCLUDE, VS_LIB. For further checking, we
+ # also define VCINSTALLDIR, WindowsSdkDir and WINDOWSSDKDIR.
+ else
+ # We did not find a vsvars bat file, let's hope we are run from a VS command prompt.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Cannot locate a valid Visual Studio installation, checking current environment" >&5
+$as_echo "$as_me: Cannot locate a valid Visual Studio installation, checking current environment" >&6;}
+ fi
+ fi
+
+ # At this point, we should have correct variables in the environment, or we can't continue.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Visual Studio variables" >&5
+$as_echo_n "checking for Visual Studio variables... " >&6; }
+
+ if test "x$VCINSTALLDIR" != x || test "x$WindowsSDKDir" != x \
+ || test "x$WINDOWSSDKDIR" != x || test "x$DEVKIT_NAME" != x; then
+ if test "x$VS_INCLUDE" = x || test "x$VS_LIB" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: present but broken" >&5
+$as_echo "present but broken" >&6; }
+ as_fn_error $? "Your VC command prompt seems broken, INCLUDE and/or LIB is missing." "$LINENO" 5
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ # Remove any trailing "\" ";" and " " from the variables.
+ VS_INCLUDE=`$ECHO "$VS_INCLUDE" | $SED -e 's/\\\\*;* *$//'`
+ VS_LIB=`$ECHO "$VS_LIB" | $SED 's/\\\\*;* *$//'`
+ VCINSTALLDIR=`$ECHO "$VCINSTALLDIR" | $SED 's/\\\\* *$//'`
+ WindowsSDKDir=`$ECHO "$WindowsSDKDir" | $SED 's/\\\\* *$//'`
+ WINDOWSSDKDIR=`$ECHO "$WINDOWSSDKDIR" | $SED 's/\\\\* *$//'`
+ # Remove any paths containing # (typically F#) as that messes up make. This
+ # is needed if visual studio was installed with F# support.
+ VS_PATH=`$ECHO "$VS_PATH" | $SED 's/[^:#]*#[^:]*://g'`
+
+
+
+
+
+ # Convert VS_INCLUDE into SYSROOT_CFLAGS
+ OLDIFS="$IFS"
+ IFS=";"
+ for i in $VS_INCLUDE; do
+ ipath=$i
+ # Only process non-empty elements
+ if test "x$ipath" != x; then
+ IFS="$OLDIFS"
+ # Check that directory exists before calling fixup_path
+ testpath=$ipath
+
+ windows_path="$testpath"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ testpath="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ testpath="$unix_path"
+ fi
+
+ if test -d "$testpath"; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$ipath" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$ipath"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of ipath, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of ipath, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of ipath" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ ipath="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting ipath to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting ipath to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$ipath"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ ipath="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting ipath to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting ipath to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$ipath"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of ipath, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of ipath, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of ipath, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ ipath="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ ipath="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ SYSROOT_CFLAGS="$SYSROOT_CFLAGS -I$ipath"
+ fi
+ IFS=";"
+ fi
+ done
+ # Convert VS_LIB into SYSROOT_LDFLAGS
+ for i in $VS_LIB; do
+ libpath=$i
+ # Only process non-empty elements
+ if test "x$libpath" != x; then
+ IFS="$OLDIFS"
+ # Check that directory exists before calling fixup_path
+ testpath=$libpath
+
+ windows_path="$testpath"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ testpath="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ testpath="$unix_path"
+ fi
+
+ if test -d "$testpath"; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$libpath" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$libpath"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of libpath, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of libpath, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of libpath" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ libpath="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting libpath to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting libpath to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$libpath"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ libpath="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting libpath to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting libpath to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$libpath"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of libpath, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of libpath, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of libpath, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ libpath="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ libpath="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS -libpath:$libpath"
+ fi
+ IFS=";"
+ fi
+ done
+ IFS="$OLDIFS"
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+
+ if test "x$VS_ENV_CMD" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Cannot locate a valid Visual Studio or Windows SDK installation on disk," >&5
+$as_echo "$as_me: Cannot locate a valid Visual Studio or Windows SDK installation on disk," >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: nor is this script run from a Visual Studio command prompt." >&5
+$as_echo "$as_me: nor is this script run from a Visual Studio command prompt." >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Running the extraction script failed." >&5
+$as_echo "$as_me: Running the extraction script failed." >&6;}
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Try setting --with-tools-dir to the VC/bin directory within the VS installation" >&5
+$as_echo "$as_me: Try setting --with-tools-dir to the VC/bin directory within the VS installation" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: or run \"bash.exe -l\" from a VS command prompt and then run configure from there." >&5
+$as_echo "$as_me: or run \"bash.exe -l\" from a VS command prompt and then run configure from there." >&6;}
+ as_fn_error $? "Cannot continue" "$LINENO" 5
+ fi
+
+ # Reset path to VS_PATH. It will include everything that was on PATH at the time we
+ # ran TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV.
+ PATH="$VS_PATH"
+ # The microsoft toolchain also requires INCLUDE and LIB to be set.
+ export INCLUDE="$VS_INCLUDE"
+ export LIB="$VS_LIB"
+ else
+ if test "x$XCODE_VERSION_OUTPUT" != x; then
+ # For Xcode, we set the Xcode version as TOOLCHAIN_VERSION
+ TOOLCHAIN_VERSION=`$ECHO $XCODE_VERSION_OUTPUT | $CUT -f 2 -d ' '`
+ TOOLCHAIN_DESCRIPTION="$TOOLCHAIN_DESCRIPTION from Xcode"
+ else
+ # Currently we do not define this for other toolchains. This might change as the need arise.
+ TOOLCHAIN_VERSION=
+ fi
+ fi
+
+
+ # Finally add TOOLCHAIN_PATH at the beginning, to allow --with-tools-dir to
+ # override all other locations.
+ if test "x$TOOLCHAIN_PATH" != x; then
+ PATH=$TOOLCHAIN_PATH:$PATH
+ fi
+
+
+ #
+ # Setup the compilers (CC and CXX)
+ #
+
+ COMPILER_NAME=C
+ SEARCH_LIST="$TOOLCHAIN_CC_BINARY"
+
+ if test "x$CC" != x; then
+ # User has supplied compiler name already, always let that override.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied compiler CC=$CC" >&5
+$as_echo "$as_me: Will use user supplied compiler CC=$CC" >&6;}
+ if test "x`basename $CC`" = "x$CC"; then
+ # A command without a complete path is provided, search $PATH.
+
+ for ac_prog in $CC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_POTENTIAL_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $POTENTIAL_CC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_POTENTIAL_CC="$POTENTIAL_CC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_POTENTIAL_CC="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+POTENTIAL_CC=$ac_cv_path_POTENTIAL_CC
+if test -n "$POTENTIAL_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $POTENTIAL_CC" >&5
+$as_echo "$POTENTIAL_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$POTENTIAL_CC" && break
+done
+
+ if test "x$POTENTIAL_CC" != x; then
+ CC=$POTENTIAL_CC
+ else
+ as_fn_error $? "User supplied compiler CC=$CC could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise it might already be a complete path
+ if test ! -x "$CC"; then
+ as_fn_error $? "User supplied compiler CC=$CC does not exist" "$LINENO" 5
+ fi
+ fi
+ else
+ # No user supplied value. Locate compiler ourselves.
+
+ # If we are cross compiling, assume cross compilation tools follows the
+ # cross compilation standard where they are prefixed with the autoconf
+ # standard name for the target. For example the binary
+ # i686-sun-solaris2.10-gcc will cross compile for i686-sun-solaris2.10.
+ # If we are not cross compiling, then the default compiler name will be
+ # used.
+
+ CC=
+ # If TOOLCHAIN_PATH is set, check for all compiler names in there first
+ # before checking the rest of the PATH.
+ # FIXME: Now that we prefix the TOOLS_DIR to the PATH in the PRE_DETECTION
+ # step, this should not be necessary.
+ if test -n "$TOOLCHAIN_PATH"; then
+ PATH_save="$PATH"
+ PATH="$TOOLCHAIN_PATH"
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}$SEARCH_LIST", so it can be a program name with args.
+set dummy ${ac_tool_prefix}$SEARCH_LIST; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TOOLCHAIN_PATH_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TOOLCHAIN_PATH_CC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TOOLCHAIN_PATH_CC="$TOOLCHAIN_PATH_CC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TOOLCHAIN_PATH_CC="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TOOLCHAIN_PATH_CC=$ac_cv_path_TOOLCHAIN_PATH_CC
+if test -n "$TOOLCHAIN_PATH_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TOOLCHAIN_PATH_CC" >&5
+$as_echo "$TOOLCHAIN_PATH_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_TOOLCHAIN_PATH_CC"; then
+ ac_pt_TOOLCHAIN_PATH_CC=$TOOLCHAIN_PATH_CC
+ # Extract the first word of "$SEARCH_LIST", so it can be a program name with args.
+set dummy $SEARCH_LIST; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_TOOLCHAIN_PATH_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_TOOLCHAIN_PATH_CC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_TOOLCHAIN_PATH_CC="$ac_pt_TOOLCHAIN_PATH_CC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_TOOLCHAIN_PATH_CC="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_TOOLCHAIN_PATH_CC=$ac_cv_path_ac_pt_TOOLCHAIN_PATH_CC
+if test -n "$ac_pt_TOOLCHAIN_PATH_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_TOOLCHAIN_PATH_CC" >&5
+$as_echo "$ac_pt_TOOLCHAIN_PATH_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_TOOLCHAIN_PATH_CC" = x; then
+ TOOLCHAIN_PATH_CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ TOOLCHAIN_PATH_CC=$ac_pt_TOOLCHAIN_PATH_CC
+ fi
+else
+ TOOLCHAIN_PATH_CC="$ac_cv_path_TOOLCHAIN_PATH_CC"
+fi
+
+ CC=$TOOLCHAIN_PATH_CC
+ PATH="$PATH_save"
+ fi
+
+ # AC_PATH_TOOL can't be run multiple times with the same variable,
+ # so create a new name for this run.
+ if test "x$CC" = x; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}$SEARCH_LIST", so it can be a program name with args.
+set dummy ${ac_tool_prefix}$SEARCH_LIST; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_POTENTIAL_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $POTENTIAL_CC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_POTENTIAL_CC="$POTENTIAL_CC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_POTENTIAL_CC="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+POTENTIAL_CC=$ac_cv_path_POTENTIAL_CC
+if test -n "$POTENTIAL_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $POTENTIAL_CC" >&5
+$as_echo "$POTENTIAL_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_POTENTIAL_CC"; then
+ ac_pt_POTENTIAL_CC=$POTENTIAL_CC
+ # Extract the first word of "$SEARCH_LIST", so it can be a program name with args.
+set dummy $SEARCH_LIST; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_POTENTIAL_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_POTENTIAL_CC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_POTENTIAL_CC="$ac_pt_POTENTIAL_CC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_POTENTIAL_CC="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_POTENTIAL_CC=$ac_cv_path_ac_pt_POTENTIAL_CC
+if test -n "$ac_pt_POTENTIAL_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_POTENTIAL_CC" >&5
+$as_echo "$ac_pt_POTENTIAL_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_POTENTIAL_CC" = x; then
+ POTENTIAL_CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ POTENTIAL_CC=$ac_pt_POTENTIAL_CC
+ fi
+else
+ POTENTIAL_CC="$ac_cv_path_POTENTIAL_CC"
+fi
+
+ CC=$POTENTIAL_CC
+ fi
+
+ if test "x$CC" = x; then
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # devkit is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=devkit
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ as_fn_error $? "Could not find a $COMPILER_NAME compiler. $HELP_MSG" "$LINENO" 5
+ fi
+ fi
+
+ # Now we have a compiler binary in CC. Make sure it's okay.
+
+ # Only process if variable expands to non-empty
+
+ if test "x$CC" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$CC"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CC, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of CC" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CC, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of CC, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of CC" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$CC"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CC, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of CC" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$CC"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CC, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of CC" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ CC="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting CC to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting CC to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ TEST_COMPILER="$CC"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking resolved symbolic links for CC" >&5
+$as_echo_n "checking resolved symbolic links for CC... " >&6; }
+ SYMLINK_ORIGINAL="$TEST_COMPILER"
+
+ if test "x$OPENJDK_BUILD_OS" != xwindows; then
+ # Follow a chain of symbolic links. Use readlink
+ # where it exists, else fall back to horribly
+ # complicated shell code.
+ if test "x$READLINK_TESTED" != yes; then
+ # On MacOSX there is a readlink tool with a different
+ # purpose than the GNU readlink tool. Check the found readlink.
+ ISGNU=`$READLINK --version 2>&1 | $GREP GNU`
+ if test "x$ISGNU" = x; then
+ # A readlink that we do not know how to use.
+ # Are there other non-GNU readlinks out there?
+ READLINK_TESTED=yes
+ READLINK=
+ fi
+ fi
+
+ if test "x$READLINK" != x; then
+ SYMLINK_ORIGINAL=`$READLINK -f $SYMLINK_ORIGINAL`
+ else
+ # Save the current directory for restoring afterwards
+ STARTDIR=$PWD
+ COUNTER=0
+ sym_link_dir=`$DIRNAME $SYMLINK_ORIGINAL`
+ sym_link_file=`$BASENAME $SYMLINK_ORIGINAL`
+ cd $sym_link_dir
+ # Use -P flag to resolve symlinks in directories.
+ cd `$THEPWDCMD -P`
+ sym_link_dir=`$THEPWDCMD -P`
+ # Resolve file symlinks
+ while test $COUNTER -lt 20; do
+ ISLINK=`$LS -l $sym_link_dir/$sym_link_file | $GREP '\->' | $SED -e 's/.*-> \(.*\)/\1/'`
+ if test "x$ISLINK" == x; then
+ # This is not a symbolic link! We are done!
+ break
+ fi
+ # Again resolve directory symlinks since the target of the just found
+ # link could be in a different directory
+ cd `$DIRNAME $ISLINK`
+ sym_link_dir=`$THEPWDCMD -P`
+ sym_link_file=`$BASENAME $ISLINK`
+ let COUNTER=COUNTER+1
+ done
+ cd $STARTDIR
+ SYMLINK_ORIGINAL=$sym_link_dir/$sym_link_file
+ fi
+ fi
+
+ if test "x$TEST_COMPILER" = "x$SYMLINK_ORIGINAL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no symlink" >&5
+$as_echo "no symlink" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SYMLINK_ORIGINAL" >&5
+$as_echo "$SYMLINK_ORIGINAL" >&6; }
+
+ # We can't handle ccache by gcc wrappers, since we need to know if we're
+ # using ccache. Instead ccache usage must be controlled by a configure option.
+ COMPILER_BASENAME=`$BASENAME "$SYMLINK_ORIGINAL"`
+ if test "x$COMPILER_BASENAME" = "xccache"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Please use --enable-ccache instead of providing a wrapped compiler." >&5
+$as_echo "$as_me: Please use --enable-ccache instead of providing a wrapped compiler." >&6;}
+ as_fn_error $? "$TEST_COMPILER is a symbolic link to ccache. This is not supported." "$LINENO" 5
+ fi
+ fi
+
+
+ COMPILER=$CC
+ COMPILER_NAME=$COMPILER_NAME
+
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ # cc -V output typically looks like
+ # cc: Sun C 5.12 Linux_i386 2011/11/16
+ # or
+ # cc: Studio 12.5 Sun C 5.14 SunOS_sparc 2016/05/31
+ COMPILER_VERSION_OUTPUT=`$COMPILER -V 2>&1`
+ # Check that this is likely to be the Solaris Studio cc.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "^.* Sun $COMPILER_NAME" > /dev/null
+ if test $? -ne 0; then
+ ALT_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with -V was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with -V was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Remove usage instructions (if present), and
+ # collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/ *[Uu]sage:.*//'`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e "s/^.*[ ,\t]$COMPILER_NAME[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/"`
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ # xlc -qversion output typically looks like
+ # IBM XL C/C++ for AIX, V11.1 (5724-X13)
+ # Version: 11.01.0000.0015
+ COMPILER_VERSION_OUTPUT=`$COMPILER -qversion 2>&1`
+ # Check that this is likely to be the IBM XL C compiler.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "IBM XL C" > /dev/null
+ if test $? -ne 0; then
+ ALT_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with -qversion was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with -qversion was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.*, V\([1-9][0-9.]*\).*$/\1/'`
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # There is no specific version flag, but all output starts with a version string.
+ # First line typically looks something like:
+ # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
+ COMPILER_VERSION_OUTPUT=`$COMPILER 2>&1 | $HEAD -n 1 | $TR -d '\r'`
+ # Check that this is likely to be Microsoft CL.EXE.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "Microsoft.*Compiler" > /dev/null
+ if test $? -ne 0; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running it was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running it was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.*ersion.\([1-9][0-9.]*\) .*$/\1/'`
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ # gcc --version output typically looks like
+ # gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
+ # Copyright (C) 2013 Free Software Foundation, Inc.
+ # This is free software; see the source for copying conditions. There is NO
+ # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ COMPILER_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ # Check that this is likely to be GCC.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "Free Software Foundation" > /dev/null
+ if test $? -ne 0; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$COMPILER_VERSION\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$COMPILER_VERSION\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Remove Copyright and legalese from version string, and
+ # collapse into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/ *Copyright .*//'`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.* \([1-9]\.[0-9.]*\)[^0-9.].*$/\1/'`
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ # clang --version output typically looks like
+ # Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
+ # clang version 3.3 (tags/RELEASE_33/final)
+ # or
+ # Debian clang version 3.2-7ubuntu1 (tags/RELEASE_32/final) (based on LLVM 3.2)
+ # Target: x86_64-pc-linux-gnu
+ # Thread model: posix
+ COMPILER_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ # Check that this is likely to be clang
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "clang" > /dev/null
+ if test $? -ne 0; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.* version \([1-9][0-9.]*\).*$/\1/'`
+ else
+ as_fn_error $? "Unknown toolchain type $TOOLCHAIN_TYPE." "$LINENO" 5
+ fi
+ # This sets CC_VERSION_NUMBER or CXX_VERSION_NUMBER. (This comment is a grep marker)
+ CC_VERSION_NUMBER="$COMPILER_VERSION_NUMBER"
+ # This sets CC_VERSION_STRING or CXX_VERSION_STRING. (This comment is a grep marker)
+ CC_VERSION_STRING="$COMPILER_VERSION_STRING"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Using $TOOLCHAIN_TYPE $COMPILER_NAME compiler version $COMPILER_VERSION_NUMBER [$COMPILER_VERSION_STRING]" >&5
+$as_echo "$as_me: Using $TOOLCHAIN_TYPE $COMPILER_NAME compiler version $COMPILER_VERSION_NUMBER [$COMPILER_VERSION_STRING]" >&6;}
+
+
+ # Now that we have resolved CC ourself, let autoconf have its go at it
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in $CC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in $CC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+ COMPILER_NAME=C++
+ SEARCH_LIST="$TOOLCHAIN_CXX_BINARY"
+
+ if test "x$CXX" != x; then
+ # User has supplied compiler name already, always let that override.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied compiler CXX=$CXX" >&5
+$as_echo "$as_me: Will use user supplied compiler CXX=$CXX" >&6;}
+ if test "x`basename $CXX`" = "x$CXX"; then
+ # A command without a complete path is provided, search $PATH.
+
+ for ac_prog in $CXX
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_POTENTIAL_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $POTENTIAL_CXX in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_POTENTIAL_CXX="$POTENTIAL_CXX" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_POTENTIAL_CXX="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+POTENTIAL_CXX=$ac_cv_path_POTENTIAL_CXX
+if test -n "$POTENTIAL_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $POTENTIAL_CXX" >&5
+$as_echo "$POTENTIAL_CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$POTENTIAL_CXX" && break
+done
+
+ if test "x$POTENTIAL_CXX" != x; then
+ CXX=$POTENTIAL_CXX
+ else
+ as_fn_error $? "User supplied compiler CXX=$CXX could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise it might already be a complete path
+ if test ! -x "$CXX"; then
+ as_fn_error $? "User supplied compiler CXX=$CXX does not exist" "$LINENO" 5
+ fi
+ fi
+ else
+ # No user supplied value. Locate compiler ourselves.
+
+ # If we are cross compiling, assume cross compilation tools follows the
+ # cross compilation standard where they are prefixed with the autoconf
+ # standard name for the target. For example the binary
+ # i686-sun-solaris2.10-gcc will cross compile for i686-sun-solaris2.10.
+ # If we are not cross compiling, then the default compiler name will be
+ # used.
+
+ CXX=
+ # If TOOLCHAIN_PATH is set, check for all compiler names in there first
+ # before checking the rest of the PATH.
+ # FIXME: Now that we prefix the TOOLS_DIR to the PATH in the PRE_DETECTION
+ # step, this should not be necessary.
+ if test -n "$TOOLCHAIN_PATH"; then
+ PATH_save="$PATH"
+ PATH="$TOOLCHAIN_PATH"
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}$SEARCH_LIST", so it can be a program name with args.
+set dummy ${ac_tool_prefix}$SEARCH_LIST; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_TOOLCHAIN_PATH_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $TOOLCHAIN_PATH_CXX in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_TOOLCHAIN_PATH_CXX="$TOOLCHAIN_PATH_CXX" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_TOOLCHAIN_PATH_CXX="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+TOOLCHAIN_PATH_CXX=$ac_cv_path_TOOLCHAIN_PATH_CXX
+if test -n "$TOOLCHAIN_PATH_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TOOLCHAIN_PATH_CXX" >&5
+$as_echo "$TOOLCHAIN_PATH_CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_TOOLCHAIN_PATH_CXX"; then
+ ac_pt_TOOLCHAIN_PATH_CXX=$TOOLCHAIN_PATH_CXX
+ # Extract the first word of "$SEARCH_LIST", so it can be a program name with args.
+set dummy $SEARCH_LIST; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_TOOLCHAIN_PATH_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_TOOLCHAIN_PATH_CXX in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_TOOLCHAIN_PATH_CXX="$ac_pt_TOOLCHAIN_PATH_CXX" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_TOOLCHAIN_PATH_CXX="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_TOOLCHAIN_PATH_CXX=$ac_cv_path_ac_pt_TOOLCHAIN_PATH_CXX
+if test -n "$ac_pt_TOOLCHAIN_PATH_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_TOOLCHAIN_PATH_CXX" >&5
+$as_echo "$ac_pt_TOOLCHAIN_PATH_CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_TOOLCHAIN_PATH_CXX" = x; then
+ TOOLCHAIN_PATH_CXX=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ TOOLCHAIN_PATH_CXX=$ac_pt_TOOLCHAIN_PATH_CXX
+ fi
+else
+ TOOLCHAIN_PATH_CXX="$ac_cv_path_TOOLCHAIN_PATH_CXX"
+fi
+
+ CXX=$TOOLCHAIN_PATH_CXX
+ PATH="$PATH_save"
+ fi
+
+ # AC_PATH_TOOL can't be run multiple times with the same variable,
+ # so create a new name for this run.
+ if test "x$CXX" = x; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}$SEARCH_LIST", so it can be a program name with args.
+set dummy ${ac_tool_prefix}$SEARCH_LIST; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_POTENTIAL_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $POTENTIAL_CXX in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_POTENTIAL_CXX="$POTENTIAL_CXX" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_POTENTIAL_CXX="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+POTENTIAL_CXX=$ac_cv_path_POTENTIAL_CXX
+if test -n "$POTENTIAL_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $POTENTIAL_CXX" >&5
+$as_echo "$POTENTIAL_CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_POTENTIAL_CXX"; then
+ ac_pt_POTENTIAL_CXX=$POTENTIAL_CXX
+ # Extract the first word of "$SEARCH_LIST", so it can be a program name with args.
+set dummy $SEARCH_LIST; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ac_pt_POTENTIAL_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ac_pt_POTENTIAL_CXX in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_POTENTIAL_CXX="$ac_pt_POTENTIAL_CXX" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ac_pt_POTENTIAL_CXX="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_POTENTIAL_CXX=$ac_cv_path_ac_pt_POTENTIAL_CXX
+if test -n "$ac_pt_POTENTIAL_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_POTENTIAL_CXX" >&5
+$as_echo "$ac_pt_POTENTIAL_CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_pt_POTENTIAL_CXX" = x; then
+ POTENTIAL_CXX=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ POTENTIAL_CXX=$ac_pt_POTENTIAL_CXX
+ fi
+else
+ POTENTIAL_CXX="$ac_cv_path_POTENTIAL_CXX"
+fi
+
+ CXX=$POTENTIAL_CXX
+ fi
+
+ if test "x$CXX" = x; then
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # devkit is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=devkit
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ as_fn_error $? "Could not find a $COMPILER_NAME compiler. $HELP_MSG" "$LINENO" 5
+ fi
+ fi
+
+ # Now we have a compiler binary in CXX. Make sure it's okay.
+
+ # Only process if variable expands to non-empty
+
+ if test "x$CXX" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$CXX"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXX, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CXX, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of CXX" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXX, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of CXX, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of CXX" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$CXX"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXX, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CXX, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of CXX" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$CXX"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXX, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CXX, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of CXX" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ CXX="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting CXX to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting CXX to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ TEST_COMPILER="$CXX"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking resolved symbolic links for CXX" >&5
+$as_echo_n "checking resolved symbolic links for CXX... " >&6; }
+ SYMLINK_ORIGINAL="$TEST_COMPILER"
+
+ if test "x$OPENJDK_BUILD_OS" != xwindows; then
+ # Follow a chain of symbolic links. Use readlink
+ # where it exists, else fall back to horribly
+ # complicated shell code.
+ if test "x$READLINK_TESTED" != yes; then
+ # On MacOSX there is a readlink tool with a different
+ # purpose than the GNU readlink tool. Check the found readlink.
+ ISGNU=`$READLINK --version 2>&1 | $GREP GNU`
+ if test "x$ISGNU" = x; then
+ # A readlink that we do not know how to use.
+ # Are there other non-GNU readlinks out there?
+ READLINK_TESTED=yes
+ READLINK=
+ fi
+ fi
+
+ if test "x$READLINK" != x; then
+ SYMLINK_ORIGINAL=`$READLINK -f $SYMLINK_ORIGINAL`
+ else
+ # Save the current directory for restoring afterwards
+ STARTDIR=$PWD
+ COUNTER=0
+ sym_link_dir=`$DIRNAME $SYMLINK_ORIGINAL`
+ sym_link_file=`$BASENAME $SYMLINK_ORIGINAL`
+ cd $sym_link_dir
+ # Use -P flag to resolve symlinks in directories.
+ cd `$THEPWDCMD -P`
+ sym_link_dir=`$THEPWDCMD -P`
+ # Resolve file symlinks
+ while test $COUNTER -lt 20; do
+ ISLINK=`$LS -l $sym_link_dir/$sym_link_file | $GREP '\->' | $SED -e 's/.*-> \(.*\)/\1/'`
+ if test "x$ISLINK" == x; then
+ # This is not a symbolic link! We are done!
+ break
+ fi
+ # Again resolve directory symlinks since the target of the just found
+ # link could be in a different directory
+ cd `$DIRNAME $ISLINK`
+ sym_link_dir=`$THEPWDCMD -P`
+ sym_link_file=`$BASENAME $ISLINK`
+ let COUNTER=COUNTER+1
+ done
+ cd $STARTDIR
+ SYMLINK_ORIGINAL=$sym_link_dir/$sym_link_file
+ fi
+ fi
+
+ if test "x$TEST_COMPILER" = "x$SYMLINK_ORIGINAL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no symlink" >&5
+$as_echo "no symlink" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SYMLINK_ORIGINAL" >&5
+$as_echo "$SYMLINK_ORIGINAL" >&6; }
+
+ # We can't handle ccache by gcc wrappers, since we need to know if we're
+ # using ccache. Instead ccache usage must be controlled by a configure option.
+ COMPILER_BASENAME=`$BASENAME "$SYMLINK_ORIGINAL"`
+ if test "x$COMPILER_BASENAME" = "xccache"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Please use --enable-ccache instead of providing a wrapped compiler." >&5
+$as_echo "$as_me: Please use --enable-ccache instead of providing a wrapped compiler." >&6;}
+ as_fn_error $? "$TEST_COMPILER is a symbolic link to ccache. This is not supported." "$LINENO" 5
+ fi
+ fi
+
+
+ COMPILER=$CXX
+ COMPILER_NAME=$COMPILER_NAME
+
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ # cc -V output typically looks like
+ # cc: Sun C 5.12 Linux_i386 2011/11/16
+ # or
+ # cc: Studio 12.5 Sun C 5.14 SunOS_sparc 2016/05/31
+ COMPILER_VERSION_OUTPUT=`$COMPILER -V 2>&1`
+ # Check that this is likely to be the Solaris Studio cc.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "^.* Sun $COMPILER_NAME" > /dev/null
+ if test $? -ne 0; then
+ ALT_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with -V was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with -V was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Remove usage instructions (if present), and
+ # collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/ *[Uu]sage:.*//'`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e "s/^.*[ ,\t]$COMPILER_NAME[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/"`
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ # xlc -qversion output typically looks like
+ # IBM XL C/C++ for AIX, V11.1 (5724-X13)
+ # Version: 11.01.0000.0015
+ COMPILER_VERSION_OUTPUT=`$COMPILER -qversion 2>&1`
+ # Check that this is likely to be the IBM XL C compiler.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "IBM XL C" > /dev/null
+ if test $? -ne 0; then
+ ALT_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with -qversion was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with -qversion was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.*, V\([1-9][0-9.]*\).*$/\1/'`
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # There is no specific version flag, but all output starts with a version string.
+ # First line typically looks something like:
+ # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
+ COMPILER_VERSION_OUTPUT=`$COMPILER 2>&1 | $HEAD -n 1 | $TR -d '\r'`
+ # Check that this is likely to be Microsoft CL.EXE.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "Microsoft.*Compiler" > /dev/null
+ if test $? -ne 0; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running it was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running it was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.*ersion.\([1-9][0-9.]*\) .*$/\1/'`
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ # gcc --version output typically looks like
+ # gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
+ # Copyright (C) 2013 Free Software Foundation, Inc.
+ # This is free software; see the source for copying conditions. There is NO
+ # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ COMPILER_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ # Check that this is likely to be GCC.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "Free Software Foundation" > /dev/null
+ if test $? -ne 0; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$COMPILER_VERSION\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$COMPILER_VERSION\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Remove Copyright and legalese from version string, and
+ # collapse into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/ *Copyright .*//'`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.* \([1-9]\.[0-9.]*\)[^0-9.].*$/\1/'`
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ # clang --version output typically looks like
+ # Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
+ # clang version 3.3 (tags/RELEASE_33/final)
+ # or
+ # Debian clang version 3.2-7ubuntu1 (tags/RELEASE_32/final) (based on LLVM 3.2)
+ # Target: x86_64-pc-linux-gnu
+ # Thread model: posix
+ COMPILER_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ # Check that this is likely to be clang
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "clang" > /dev/null
+ if test $? -ne 0; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.* version \([1-9][0-9.]*\).*$/\1/'`
+ else
+ as_fn_error $? "Unknown toolchain type $TOOLCHAIN_TYPE." "$LINENO" 5
+ fi
+ # This sets CC_VERSION_NUMBER or CXX_VERSION_NUMBER. (This comment is a grep marker)
+ CXX_VERSION_NUMBER="$COMPILER_VERSION_NUMBER"
+ # This sets CC_VERSION_STRING or CXX_VERSION_STRING. (This comment is a grep marker)
+ CXX_VERSION_STRING="$COMPILER_VERSION_STRING"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Using $TOOLCHAIN_TYPE $COMPILER_NAME compiler version $COMPILER_VERSION_NUMBER [$COMPILER_VERSION_STRING]" >&5
+$as_echo "$as_me: Using $TOOLCHAIN_TYPE $COMPILER_NAME compiler version $COMPILER_VERSION_NUMBER [$COMPILER_VERSION_STRING]" >&6;}
+
+
+ # Now that we have resolved CXX ourself, let autoconf have its go at it
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+ if test -n "$CCC"; then
+ CXX=$CCC
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in $CXX
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in $CXX
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CXX" && break
+done
+
+ if test "x$ac_ct_CXX" = x; then
+ CXX="g++"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CXX=$ac_ct_CXX
+ fi
+fi
+
+ fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GXX=yes
+else
+ GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+ ac_cxx_werror_flag=yes
+ ac_cv_prog_cxx_g=no
+ CXXFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_prog_cxx_g=yes
+else
+ CXXFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+ CXXFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+ # This is the compiler version number on the form X.Y[.Z]
+
+
+
+
+ if test "x$CC_VERSION_NUMBER" != "x$CXX_VERSION_NUMBER"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C and C++ compiler have different version numbers, $CC_VERSION_NUMBER vs $CXX_VERSION_NUMBER." >&5
+$as_echo "$as_me: WARNING: C and C++ compiler have different version numbers, $CC_VERSION_NUMBER vs $CXX_VERSION_NUMBER." >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: This typically indicates a broken setup, and is not supported" >&5
+$as_echo "$as_me: WARNING: This typically indicates a broken setup, and is not supported" >&2;}
+ fi
+
+ # We only check CC_VERSION_NUMBER since we assume CXX_VERSION_NUMBER is equal.
+ if [[ "[$]CC_VERSION_NUMBER" =~ (.*\.){4} ]] ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has more than four parts (W.X.Y.Z): $CC_VERSION_NUMBER. Comparisons might be wrong." >&5
+$as_echo "$as_me: WARNING: C compiler version number has more than four parts (W.X.Y.Z): $CC_VERSION_NUMBER. Comparisons might be wrong." >&2;}
+ fi
+
+ if [[ "[$]CC_VERSION_NUMBER" =~ [0-9]{6} ]] ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has a part larger than 99999: $CC_VERSION_NUMBER. Comparisons might be wrong." >&5
+$as_echo "$as_me: WARNING: C compiler version number has a part larger than 99999: $CC_VERSION_NUMBER. Comparisons might be wrong." >&2;}
+ fi
+
+ COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$CC_VERSION_NUMBER"`
+
+
+ if test "x$TOOLCHAIN_MINIMUM_VERSION" != x; then
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ # Need to assign to a variable since m4 is blocked from modifying parts in [].
+ REFERENCE_VERSION=$TOOLCHAIN_MINIMUM_VERSION
+
+ if [[ "$REFERENCE_VERSION" =~ (.*\.){4} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to $TOOLCHAIN_MINIMUM_VERSION, only four parts (W.X.Y.Z) is supported" "$LINENO" 5
+ fi
+
+ if [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to $TOOLCHAIN_MINIMUM_VERSION, only parts < 99999 is supported" "$LINENO" 5
+ fi
+
+ # Version comparison method inspired by http://stackoverflow.com/a/24067243
+ COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$REFERENCE_VERSION"`
+
+ if test $COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then
+ :
+
+ else
+ :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You are using $TOOLCHAIN_TYPE older than $TOOLCHAIN_MINIMUM_VERSION. This is not a supported configuration." >&5
+$as_echo "$as_me: WARNING: You are using $TOOLCHAIN_TYPE older than $TOOLCHAIN_MINIMUM_VERSION. This is not a supported configuration." >&2;}
+
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ fi
+
+ #
+ # Setup the preprocessor (CPP and CXXCPP)
+ #
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if ${ac_cv_prog_CPP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$CPP" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$CPP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CPP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CPP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of CPP" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CPP, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of CPP, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of CPP" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$CPP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CPP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CPP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of CPP" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$CPP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CPP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CPP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of CPP" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ CPP="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting CPP to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting CPP to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+ if ${ac_cv_prog_CXXCPP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CXXCPP needs to be expanded
+ for CXXCPP in "$CXX -E" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+ CXXCPP=$ac_cv_prog_CXXCPP
+else
+ ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$CXXCPP" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$CXXCPP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXXCPP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CXXCPP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of CXXCPP" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXXCPP, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of CXXCPP, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of CXXCPP" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$CXXCPP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXXCPP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CXXCPP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of CXXCPP" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$CXXCPP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of CXXCPP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of CXXCPP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of CXXCPP" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ CXXCPP="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting CXXCPP to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting CXXCPP to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+
+ #
+ # Setup the linker (LD)
+ #
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # In the Microsoft toolchain we have a separate LD command "link".
+ # Make sure we reject /usr/bin/link (as determined in CYGWIN_LINK), which is
+ # a cygwin program for something completely different.
+ # Extract the first word of "link", so it can be a program name with args.
+set dummy link; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "$CYGWIN_LINK"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_LD="link"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_LD
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set LD to just the basename; use the full file name.
+ shift
+ ac_cv_prog_LD="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$LD" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$LD"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of LD, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of LD, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of LD" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of LD, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of LD, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of LD" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$LD"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of LD, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of LD, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of LD" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$LD"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of LD, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of LD, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of LD" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ LD="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting LD to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting LD to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ # Verify that we indeed succeeded with this trick.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the found link.exe is actually the Visual Studio linker" >&5
+$as_echo_n "checking if the found link.exe is actually the Visual Studio linker... " >&6; }
+ "$LD" --version > /dev/null
+ if test $? -eq 0 ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ as_fn_error $? "This is the Cygwin link tool. Please check your PATH and rerun configure." "$LINENO" 5
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ fi
+ LDCXX="$LD"
+ else
+ # All other toolchains use the compiler to link.
+ LD="$CC"
+ LDCXX="$CXX"
+ fi
+
+ # FIXME: it should be CXXLD, according to standard (cf CXXCPP)
+
+
+ #
+ # Setup the assembler (AS)
+ #
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${AS+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in as
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_AS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $AS in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_AS="$AS" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_AS="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+AS=$ac_cv_path_AS
+if test -n "$AS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AS" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !AS! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!AS!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xAS" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of AS from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of AS from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in as
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_AS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $AS in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_AS="$AS" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_AS="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+AS=$ac_cv_path_AS
+if test -n "$AS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AS" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$AS" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool AS= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool AS= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AS" >&5
+$as_echo_n "checking for AS... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$AS"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool AS=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool AS=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_AS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $AS in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_AS="$AS" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_AS="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+AS=$ac_cv_path_AS
+if test -n "$AS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$AS" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool AS=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool AS=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AS" >&5
+$as_echo_n "checking for AS... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool AS=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$AS" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$AS"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AS, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of AS, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of AS" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AS, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of AS, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of AS" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$AS"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AS, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of AS, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of AS" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$AS"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AS, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of AS, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of AS" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ AS="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting AS to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting AS to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ if test "x$AS" = x; then
+ as_fn_error $? "Solaris assembler (as) is required. Please install via \"pkg install pkg:/developer/assembler\"." "$LINENO" 5
+ fi
+ else
+ # FIXME: is this correct for microsoft?
+ AS="$CC -c"
+ fi
+
+
+ #
+ # Setup the archiver (AR)
+ #
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # The corresponding ar tool is lib.exe (used to create static libraries)
+ # Extract the first word of "lib", so it can be a program name with args.
+set dummy lib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="lib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${AR+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in ar gcc-ar
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AR" && break
+ done
+fi
+if test -z "$AR"; then
+ ac_ct_AR=$AR
+ for ac_prog in ar gcc-ar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_AR" && break
+done
+
+ if test "x$ac_ct_AR" = x; then
+ AR=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+fi
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !AR! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!AR!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xAR" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of AR from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of AR from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in ar gcc-ar
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AR" && break
+ done
+fi
+if test -z "$AR"; then
+ ac_ct_AR=$AR
+ for ac_prog in ar gcc-ar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_AR" && break
+done
+
+ if test "x$ac_ct_AR" = x; then
+ AR=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+fi
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$AR" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool AR= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool AR= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AR" >&5
+$as_echo_n "checking for AR... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$AR"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool AR=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool AR=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $AR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_AR="$AR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+AR=$ac_cv_path_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$AR" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool AR=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool AR=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AR" >&5
+$as_echo_n "checking for AR... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool AR=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ else
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${AR+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in ar
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AR" && break
+ done
+fi
+if test -z "$AR"; then
+ ac_ct_AR=$AR
+ for ac_prog in ar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_AR" && break
+done
+
+ if test "x$ac_ct_AR" = x; then
+ AR=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+fi
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !AR! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!AR!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xAR" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of AR from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of AR from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in ar
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AR" && break
+ done
+fi
+if test -z "$AR"; then
+ ac_ct_AR=$AR
+ for ac_prog in ar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_AR" && break
+done
+
+ if test "x$ac_ct_AR" = x; then
+ AR=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+fi
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$AR" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool AR= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool AR= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AR" >&5
+$as_echo_n "checking for AR... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$AR"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool AR=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool AR=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $AR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_AR="$AR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_AR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+AR=$ac_cv_path_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$AR" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool AR=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool AR=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AR" >&5
+$as_echo_n "checking for AR... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool AR=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ fi
+
+ # Only process if variable expands to non-empty
+
+ if test "x$AR" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$AR"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AR, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of AR, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of AR" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AR, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of AR, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of AR" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$AR"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AR, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of AR, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of AR" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$AR"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of AR, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of AR, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of AR" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ AR="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting AR to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting AR to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+
+
+ if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${LIPO+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in lipo
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_LIPO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $LIPO in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_LIPO="$LIPO" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_LIPO="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+LIPO=$ac_cv_path_LIPO
+if test -n "$LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LIPO" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !LIPO! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!LIPO!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xLIPO" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of LIPO from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of LIPO from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in lipo
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_LIPO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $LIPO in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_LIPO="$LIPO" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_LIPO="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+LIPO=$ac_cv_path_LIPO
+if test -n "$LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$LIPO" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$LIPO" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool LIPO= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool LIPO= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIPO" >&5
+$as_echo_n "checking for LIPO... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$LIPO"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool LIPO=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool LIPO=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_LIPO+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $LIPO in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_LIPO="$LIPO" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_LIPO="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+LIPO=$ac_cv_path_LIPO
+if test -n "$LIPO"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$LIPO" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool LIPO=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool LIPO=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIPO" >&5
+$as_echo_n "checking for LIPO... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool LIPO=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$LIPO" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$LIPO"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of LIPO, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of LIPO, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of LIPO" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of LIPO, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of LIPO, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of LIPO" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$LIPO"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of LIPO, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of LIPO, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of LIPO" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$LIPO"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of LIPO, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of LIPO, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of LIPO" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ LIPO="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting LIPO to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting LIPO to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ fi
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MT+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MT"; then
+ ac_cv_prog_MT="$MT" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/bin/mt"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_MT="mt"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_MT
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set MT to just the basename; use the full file name.
+ shift
+ ac_cv_prog_MT="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+MT=$ac_cv_prog_MT
+if test -n "$MT"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MT" >&5
+$as_echo "$MT" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MT" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$MT"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MT, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of MT, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of MT" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MT, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of MT, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of MT" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$MT"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MT, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of MT, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of MT" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$MT"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MT, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of MT, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of MT" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ MT="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MT to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting MT to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ # Setup the resource compiler (RC)
+ # Extract the first word of "rc", so it can be a program name with args.
+set dummy rc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RC"; then
+ ac_cv_prog_RC="$RC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/bin/rc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_RC="rc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_RC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set RC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_RC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+RC=$ac_cv_prog_RC
+if test -n "$RC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RC" >&5
+$as_echo "$RC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$RC" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$RC"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of RC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of RC, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of RC" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of RC, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of RC, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of RC" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$RC"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of RC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of RC, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of RC" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$RC"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of RC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of RC, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of RC" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ RC="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting RC to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting RC to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ # Extract the first word of "dumpbin", so it can be a program name with args.
+set dummy dumpbin; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$DUMPBIN"; then
+ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_DUMPBIN="dumpbin"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$DUMPBIN" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$DUMPBIN"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of DUMPBIN, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of DUMPBIN, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of DUMPBIN" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of DUMPBIN, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of DUMPBIN, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of DUMPBIN" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$DUMPBIN"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of DUMPBIN, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of DUMPBIN, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of DUMPBIN" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$DUMPBIN"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of DUMPBIN, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of DUMPBIN, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of DUMPBIN" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ DUMPBIN="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting DUMPBIN to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting DUMPBIN to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ # We need to check for 'msbuild.exe' because at the place where we expect to
+ # find 'msbuild.exe' there's also a directory called 'msbuild' and configure
+ # won't find the 'msbuild.exe' executable in that case (and the
+ # 'ac_executable_extensions' is unusable due to performance reasons).
+ # Notice that we intentionally don't fix up the path to MSBUILD because we
+ # will call it in a DOS shell during freetype detection on Windows (see
+ # 'LIB_SETUP_FREETYPE' in "libraries.m4"
+ # Extract the first word of "msbuild.exe", so it can be a program name with args.
+set dummy msbuild.exe; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MSBUILD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$MSBUILD"; then
+ ac_cv_prog_MSBUILD="$MSBUILD" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_MSBUILD="msbuild.exe"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+MSBUILD=$ac_cv_prog_MSBUILD
+if test -n "$MSBUILD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSBUILD" >&5
+$as_echo "$MSBUILD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${STRIP+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in strip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $STRIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_STRIP="$STRIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_STRIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+STRIP=$ac_cv_path_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$STRIP" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !STRIP! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!STRIP!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xSTRIP" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of STRIP from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of STRIP from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in strip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $STRIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_STRIP="$STRIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_STRIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+STRIP=$ac_cv_path_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$STRIP" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$STRIP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool STRIP= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool STRIP= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for STRIP" >&5
+$as_echo_n "checking for STRIP... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$STRIP"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool STRIP=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool STRIP=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $STRIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_STRIP="$STRIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_STRIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+STRIP=$ac_cv_path_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$STRIP" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool STRIP=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool STRIP=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for STRIP" >&5
+$as_echo_n "checking for STRIP... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool STRIP=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$STRIP" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$STRIP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$STRIP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$STRIP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ STRIP="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting STRIP to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting STRIP to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${NM+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in nm
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $NM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_NM="$NM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_NM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+NM=$ac_cv_path_NM
+if test -n "$NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
+$as_echo "$NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$NM" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !NM! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!NM!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xNM" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of NM from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of NM from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in nm
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $NM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_NM="$NM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_NM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+NM=$ac_cv_path_NM
+if test -n "$NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
+$as_echo "$NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$NM" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$NM" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool NM= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool NM= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NM" >&5
+$as_echo_n "checking for NM... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$NM"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool NM=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool NM=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $NM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_NM="$NM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_NM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+NM=$ac_cv_path_NM
+if test -n "$NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
+$as_echo "$NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$NM" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool NM=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool NM=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NM" >&5
+$as_echo_n "checking for NM... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool NM=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$NM" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$NM"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$NM"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$NM"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ NM="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting NM to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting NM to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${GNM+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in gnm
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GNM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GNM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GNM="$GNM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GNM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GNM=$ac_cv_path_GNM
+if test -n "$GNM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNM" >&5
+$as_echo "$GNM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$GNM" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !GNM! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!GNM!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xGNM" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of GNM from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of GNM from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in gnm
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GNM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GNM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GNM="$GNM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GNM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GNM=$ac_cv_path_GNM
+if test -n "$GNM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNM" >&5
+$as_echo "$GNM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$GNM" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$GNM" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool GNM= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool GNM= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNM" >&5
+$as_echo_n "checking for GNM... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$GNM"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool GNM=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool GNM=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_GNM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $GNM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GNM="$GNM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GNM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+GNM=$ac_cv_path_GNM
+if test -n "$GNM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNM" >&5
+$as_echo "$GNM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$GNM" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool GNM=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool GNM=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNM" >&5
+$as_echo_n "checking for GNM... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool GNM=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$GNM" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$GNM"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of GNM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of GNM, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of GNM" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of GNM, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of GNM, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of GNM" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$GNM"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of GNM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of GNM, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of GNM" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$GNM"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of GNM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of GNM, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of GNM" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ GNM="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting GNM to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting GNM to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ elif test "x$OPENJDK_TARGET_OS" != xwindows; then
+ # FIXME: we should unify this with the solaris case above.
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${STRIP+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in strip
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$STRIP" && break
+ done
+fi
+if test -z "$STRIP"; then
+ ac_ct_STRIP=$STRIP
+ for ac_prog in strip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_STRIP" && break
+done
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+fi
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !STRIP! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!STRIP!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xSTRIP" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of STRIP from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of STRIP from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in strip
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$STRIP" && break
+ done
+fi
+if test -z "$STRIP"; then
+ ac_ct_STRIP=$STRIP
+ for ac_prog in strip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_STRIP" && break
+done
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+fi
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$STRIP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool STRIP= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool STRIP= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for STRIP" >&5
+$as_echo_n "checking for STRIP... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$STRIP"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool STRIP=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool STRIP=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $STRIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_STRIP="$STRIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_STRIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+STRIP=$ac_cv_path_STRIP
+if test -n "$STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$STRIP" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool STRIP=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool STRIP=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for STRIP" >&5
+$as_echo_n "checking for STRIP... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool STRIP=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$STRIP" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$STRIP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$STRIP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$STRIP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STRIP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of STRIP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of STRIP" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ STRIP="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting STRIP to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting STRIP to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${NM+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in nm gcc-nm
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NM"; then
+ ac_cv_prog_NM="$NM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_NM="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+NM=$ac_cv_prog_NM
+if test -n "$NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
+$as_echo "$NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$NM" && break
+ done
+fi
+if test -z "$NM"; then
+ ac_ct_NM=$NM
+ for ac_prog in nm gcc-nm
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_NM"; then
+ ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_NM="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NM=$ac_cv_prog_ac_ct_NM
+if test -n "$ac_ct_NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5
+$as_echo "$ac_ct_NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_NM" && break
+done
+
+ if test "x$ac_ct_NM" = x; then
+ NM=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ NM=$ac_ct_NM
+ fi
+fi
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !NM! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!NM!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xNM" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of NM from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of NM from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in nm gcc-nm
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NM"; then
+ ac_cv_prog_NM="$NM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_NM="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+NM=$ac_cv_prog_NM
+if test -n "$NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
+$as_echo "$NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$NM" && break
+ done
+fi
+if test -z "$NM"; then
+ ac_ct_NM=$NM
+ for ac_prog in nm gcc-nm
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_NM"; then
+ ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_NM="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NM=$ac_cv_prog_ac_ct_NM
+if test -n "$ac_ct_NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5
+$as_echo "$ac_ct_NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_NM" && break
+done
+
+ if test "x$ac_ct_NM" = x; then
+ NM=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ NM=$ac_ct_NM
+ fi
+fi
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$NM" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool NM= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool NM= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NM" >&5
+$as_echo_n "checking for NM... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$NM"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool NM=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool NM=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $NM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_NM="$NM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_NM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+NM=$ac_cv_path_NM
+if test -n "$NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
+$as_echo "$NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$NM" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool NM=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool NM=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NM" >&5
+$as_echo_n "checking for NM... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool NM=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ else
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${NM+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in nm
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NM"; then
+ ac_cv_prog_NM="$NM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_NM="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+NM=$ac_cv_prog_NM
+if test -n "$NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
+$as_echo "$NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$NM" && break
+ done
+fi
+if test -z "$NM"; then
+ ac_ct_NM=$NM
+ for ac_prog in nm
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_NM"; then
+ ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_NM="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NM=$ac_cv_prog_ac_ct_NM
+if test -n "$ac_ct_NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5
+$as_echo "$ac_ct_NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_NM" && break
+done
+
+ if test "x$ac_ct_NM" = x; then
+ NM=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ NM=$ac_ct_NM
+ fi
+fi
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !NM! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!NM!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xNM" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of NM from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of NM from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in nm
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$NM"; then
+ ac_cv_prog_NM="$NM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_NM="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+NM=$ac_cv_prog_NM
+if test -n "$NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
+$as_echo "$NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$NM" && break
+ done
+fi
+if test -z "$NM"; then
+ ac_ct_NM=$NM
+ for ac_prog in nm
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_NM"; then
+ ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_NM="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NM=$ac_cv_prog_ac_ct_NM
+if test -n "$ac_ct_NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5
+$as_echo "$ac_ct_NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_NM" && break
+done
+
+ if test "x$ac_ct_NM" = x; then
+ NM=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ NM=$ac_ct_NM
+ fi
+fi
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$NM" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool NM= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool NM= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NM" >&5
+$as_echo_n "checking for NM... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$NM"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool NM=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool NM=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $NM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_NM="$NM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_NM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+NM=$ac_cv_path_NM
+if test -n "$NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5
+$as_echo "$NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$NM" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool NM=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool NM=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NM" >&5
+$as_echo_n "checking for NM... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool NM=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ fi
+
+ # Only process if variable expands to non-empty
+
+ if test "x$NM" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$NM"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$NM"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$NM"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of NM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of NM, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of NM" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ NM="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting NM to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting NM to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ GNM="$NM"
+
+ fi
+
+ # objcopy is used for moving debug symbols to separate files when
+ # full debug symbols are enabled.
+ if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${OBJCOPY+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in gobjcopy objcopy
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJCOPY+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJCOPY"; then
+ ac_cv_prog_OBJCOPY="$OBJCOPY" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OBJCOPY="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJCOPY=$ac_cv_prog_OBJCOPY
+if test -n "$OBJCOPY"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJCOPY" >&5
+$as_echo "$OBJCOPY" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$OBJCOPY" && break
+ done
+fi
+if test -z "$OBJCOPY"; then
+ ac_ct_OBJCOPY=$OBJCOPY
+ for ac_prog in gobjcopy objcopy
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJCOPY+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJCOPY"; then
+ ac_cv_prog_ac_ct_OBJCOPY="$ac_ct_OBJCOPY" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OBJCOPY="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJCOPY=$ac_cv_prog_ac_ct_OBJCOPY
+if test -n "$ac_ct_OBJCOPY"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJCOPY" >&5
+$as_echo "$ac_ct_OBJCOPY" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_OBJCOPY" && break
+done
+
+ if test "x$ac_ct_OBJCOPY" = x; then
+ OBJCOPY=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJCOPY=$ac_ct_OBJCOPY
+ fi
+fi
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !OBJCOPY! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!OBJCOPY!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xOBJCOPY" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of OBJCOPY from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of OBJCOPY from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in gobjcopy objcopy
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJCOPY+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJCOPY"; then
+ ac_cv_prog_OBJCOPY="$OBJCOPY" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OBJCOPY="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJCOPY=$ac_cv_prog_OBJCOPY
+if test -n "$OBJCOPY"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJCOPY" >&5
+$as_echo "$OBJCOPY" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$OBJCOPY" && break
+ done
+fi
+if test -z "$OBJCOPY"; then
+ ac_ct_OBJCOPY=$OBJCOPY
+ for ac_prog in gobjcopy objcopy
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJCOPY+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJCOPY"; then
+ ac_cv_prog_ac_ct_OBJCOPY="$ac_ct_OBJCOPY" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OBJCOPY="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJCOPY=$ac_cv_prog_ac_ct_OBJCOPY
+if test -n "$ac_ct_OBJCOPY"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJCOPY" >&5
+$as_echo "$ac_ct_OBJCOPY" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_OBJCOPY" && break
+done
+
+ if test "x$ac_ct_OBJCOPY" = x; then
+ OBJCOPY=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJCOPY=$ac_ct_OBJCOPY
+ fi
+fi
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$OBJCOPY" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool OBJCOPY= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool OBJCOPY= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OBJCOPY" >&5
+$as_echo_n "checking for OBJCOPY... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$OBJCOPY"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool OBJCOPY=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool OBJCOPY=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_OBJCOPY+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $OBJCOPY in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_OBJCOPY="$OBJCOPY" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_OBJCOPY="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+OBJCOPY=$ac_cv_path_OBJCOPY
+if test -n "$OBJCOPY"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJCOPY" >&5
+$as_echo "$OBJCOPY" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$OBJCOPY" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool OBJCOPY=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool OBJCOPY=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OBJCOPY" >&5
+$as_echo_n "checking for OBJCOPY... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool OBJCOPY=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ # Only call fixup if objcopy was found.
+ if test -n "$OBJCOPY"; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$OBJCOPY" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$OBJCOPY"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJCOPY, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of OBJCOPY, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of OBJCOPY" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJCOPY, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of OBJCOPY, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of OBJCOPY" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$OBJCOPY"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJCOPY, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of OBJCOPY, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of OBJCOPY" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$OBJCOPY"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJCOPY, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of OBJCOPY, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of OBJCOPY" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ OBJCOPY="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting OBJCOPY to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting OBJCOPY to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ if test "x$OPENJDK_BUILD_OS" = xsolaris; then
+ # objcopy prior to 2.21.1 on solaris is broken and is not usable.
+ # Rewrite objcopy version output to VALID_VERSION or BAD_VERSION.
+ # - version number is last blank separate word on first line
+ # - version number formats that have been seen:
+ # - <major>.<minor>
+ # - <major>.<minor>.<micro>
+ OBJCOPY_VERSION=`$OBJCOPY --version | $HEAD -n 1`
+ # The outer [ ] is to prevent m4 from eating the [] in the sed expression.
+ OBJCOPY_VERSION_CHECK=`$ECHO $OBJCOPY_VERSION | $SED -n \
+ -e 's/.* //' \
+ -e '/^[01]\./b bad' \
+ -e '/^2\./{' \
+ -e ' s/^2\.//' \
+ -e ' /^[0-9]$/b bad' \
+ -e ' /^[0-9]\./b bad' \
+ -e ' /^1[0-9]$/b bad' \
+ -e ' /^1[0-9]\./b bad' \
+ -e ' /^20\./b bad' \
+ -e ' /^21\.0$/b bad' \
+ -e ' /^21\.0\./b bad' \
+ -e '}' \
+ -e ':good' \
+ -e 's/.*/VALID_VERSION/p' \
+ -e 'q' \
+ -e ':bad' \
+ -e 's/.*/BAD_VERSION/p' \
+ -e 'q'`
+ if test "x$OBJCOPY_VERSION_CHECK" = xBAD_VERSION; then
+ OBJCOPY=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring found objcopy since it is broken (prior to 2.21.1). No debug symbols will be generated." >&5
+$as_echo "$as_me: WARNING: Ignoring found objcopy since it is broken (prior to 2.21.1). No debug symbols will be generated." >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: objcopy reports version $OBJCOPY_VERSION" >&5
+$as_echo "$as_me: objcopy reports version $OBJCOPY_VERSION" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Note: patch 149063-01 or newer contains the correct Solaris 10 SPARC version" >&5
+$as_echo "$as_me: Note: patch 149063-01 or newer contains the correct Solaris 10 SPARC version" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Note: patch 149064-01 or newer contains the correct Solaris 10 X86 version" >&5
+$as_echo "$as_me: Note: patch 149064-01 or newer contains the correct Solaris 10 X86 version" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Note: Solaris 11 Update 1 contains the correct version" >&5
+$as_echo "$as_me: Note: Solaris 11 Update 1 contains the correct version" >&6;}
+ fi
+ fi
+ fi
+ fi
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${OBJDUMP+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in gobjdump objdump
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OBJDUMP="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$OBJDUMP" && break
+ done
+fi
+if test -z "$OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ for ac_prog in gobjdump objdump
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_OBJDUMP" && break
+done
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+fi
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !OBJDUMP! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!OBJDUMP!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xOBJDUMP" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of OBJDUMP from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of OBJDUMP from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in gobjdump objdump
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$OBJDUMP"; then
+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_OBJDUMP="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$OBJDUMP" && break
+ done
+fi
+if test -z "$OBJDUMP"; then
+ ac_ct_OBJDUMP=$OBJDUMP
+ for ac_prog in gobjdump objdump
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_OBJDUMP"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_OBJDUMP="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_OBJDUMP" && break
+done
+
+ if test "x$ac_ct_OBJDUMP" = x; then
+ OBJDUMP=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ OBJDUMP=$ac_ct_OBJDUMP
+ fi
+fi
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$OBJDUMP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool OBJDUMP= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool OBJDUMP= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OBJDUMP" >&5
+$as_echo_n "checking for OBJDUMP... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$OBJDUMP"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool OBJDUMP=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool OBJDUMP=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_OBJDUMP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $OBJDUMP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_OBJDUMP="$OBJDUMP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_OBJDUMP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+OBJDUMP=$ac_cv_path_OBJDUMP
+if test -n "$OBJDUMP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$OBJDUMP" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool OBJDUMP=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool OBJDUMP=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OBJDUMP" >&5
+$as_echo_n "checking for OBJDUMP... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool OBJDUMP=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ if test "x$OBJDUMP" != x; then
+ # Only used for compare.sh; we can live without it. BASIC_FIXUP_EXECUTABLE
+ # bails if argument is missing.
+
+ # Only process if variable expands to non-empty
+
+ if test "x$OBJDUMP" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$OBJDUMP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJDUMP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of OBJDUMP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of OBJDUMP" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJDUMP, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of OBJDUMP, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of OBJDUMP" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$OBJDUMP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJDUMP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of OBJDUMP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of OBJDUMP" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$OBJDUMP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of OBJDUMP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of OBJDUMP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of OBJDUMP" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ OBJDUMP="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting OBJDUMP to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting OBJDUMP to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ fi
+
+
+ # Restore old path, except for the microsoft toolchain, which requires VS_PATH
+ # to remain in place. Otherwise the compiler will not work in some siutations
+ # in later configure checks.
+ if test "x$TOOLCHAIN_TYPE" != "xmicrosoft"; then
+ PATH="$OLD_PATH"
+ fi
+
+ # Restore the flags to the user specified values.
+ # This is necessary since AC_PROG_CC defaults CFLAGS to "-g -O2"
+ CFLAGS="$ORG_CFLAGS"
+ CXXFLAGS="$ORG_CXXFLAGS"
+
+
+# Finally do some processing after the detection phase
+
+ if test "x$COMPILE_TYPE" = "xcross"; then
+ # Now we need 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. Also, we need to do this without adding a tools dir to the
+ # path, otherwise we might pick up cross-compilers which don't use standard
+ # naming.
+
+ OLDPATH="$PATH"
+
+
+# Check whether --with-build-devkit was given.
+if test "${with_build_devkit+set}" = set; then :
+ withval=$with_build_devkit;
+fi
+
+ if test "x$with_build_devkit" = "xyes"; then
+ as_fn_error $? "--with-build-devkit must have a value" "$LINENO" 5
+ elif test -n "$with_build_devkit"; then
+ if test ! -d "$with_build_devkit"; then
+ as_fn_error $? "--with-build-devkit points to non existing dir: $with_build_devkit" "$LINENO" 5
+ else
+
+ # Only process if variable expands to non-empty
+
+ if test "x$with_build_devkit" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$with_build_devkit"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of with_build_devkit, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of with_build_devkit, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of with_build_devkit" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ with_build_devkit="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting with_build_devkit to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting with_build_devkit to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$with_build_devkit"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ with_build_devkit="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting with_build_devkit to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting with_build_devkit to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$with_build_devkit"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of with_build_devkit, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of with_build_devkit, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of with_build_devkit, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ with_build_devkit="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ with_build_devkit="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ BUILD_DEVKIT_ROOT="$with_build_devkit"
+ # Check for a meta data info file in the root of the devkit
+ if test -f "$BUILD_DEVKIT_ROOT/devkit.info"; then
+ # Process devkit.info so that existing devkit variables are not
+ # modified by this
+ $SED -e "s/^DEVKIT_/BUILD_DEVKIT_/g" \
+ -e "s/\$DEVKIT_ROOT/\$BUILD_DEVKIT_ROOT/g" \
+ -e "s/\$host/\$build/g" \
+ $BUILD_DEVKIT_ROOT/devkit.info \
+ > $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
+ . $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
+ # This potentially sets the following:
+ # A descriptive name of the devkit
+
+ if test "x$BUILD_DEVKIT_NAME" = x; then
+ eval BUILD_DEVKIT_NAME="\${BUILD_DEVKIT_NAME_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-extra-path
+
+ if test "x$BUILD_DEVKIT_EXTRA_PATH" = x; then
+ eval BUILD_DEVKIT_EXTRA_PATH="\${BUILD_DEVKIT_EXTRA_PATH_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-toolchain-path
+
+ if test "x$BUILD_DEVKIT_TOOLCHAIN_PATH" = x; then
+ eval BUILD_DEVKIT_TOOLCHAIN_PATH="\${BUILD_DEVKIT_TOOLCHAIN_PATH_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Corresponds to --with-sysroot
+
+ if test "x$BUILD_DEVKIT_SYSROOT" = x; then
+ eval BUILD_DEVKIT_SYSROOT="\${BUILD_DEVKIT_SYSROOT_${OPENJDK_TARGET_CPU}}"
+ fi
+
+ # Skip the Window specific parts
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for build platform devkit" >&5
+$as_echo_n "checking for build platform devkit... " >&6; }
+ if test "x$BUILD_DEVKIT_NAME" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_DEVKIT_NAME in $BUILD_DEVKIT_ROOT" >&5
+$as_echo "$BUILD_DEVKIT_NAME in $BUILD_DEVKIT_ROOT" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_DEVKIT_ROOT" >&5
+$as_echo "$BUILD_DEVKIT_ROOT" >&6; }
+ fi
+
+ BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
+
+ if test "x$BUILD_SYSROOT" != "x"; then
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ # Solaris Studio does not have a concept of sysroot. Instead we must
+ # make sure the default include and lib dirs are appended to each
+ # compile and link command line. Must also add -I-xbuiltin to enable
+ # inlining of system functions and intrinsics.
+ BUILD_SYSROOT_CFLAGS="-I-xbuiltin -I$BUILD_SYSROOT/usr/include"
+ BUILD_SYSROOT_LDFLAGS="-L$BUILD_SYSROOT/usr/lib$OPENJDK_TARGET_CPU_ISADIR \
+ -L$BUILD_SYSROOT/lib$OPENJDK_TARGET_CPU_ISADIR"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ BUILD_SYSROOT_CFLAGS="--sysroot=$BUILD_SYSROOT"
+ BUILD_SYSROOT_LDFLAGS="--sysroot=$BUILD_SYSROOT"
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ BUILD_SYSROOT_CFLAGS="-isysroot $BUILD_SYSROOT"
+ BUILD_SYSROOT_LDFLAGS="-isysroot $BUILD_SYSROOT"
+ fi
+ # The global CFLAGS and LDFLAGS variables need these for configure to function
+ BUILD_CFLAGS="$BUILD_CFLAGS $BUILD_SYSROOT_CFLAGS"
+ BUILD_CPPFLAGS="$BUILD_CPPFLAGS $BUILD_SYSROOT_CFLAGS"
+ BUILD_CXXFLAGS="$BUILD_CXXFLAGS $BUILD_SYSROOT_CFLAGS"
+ BUILD_LDFLAGS="$BUILD_LDFLAGS $BUILD_SYSROOT_LDFLAGS"
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # We also need -iframework<path>/System/Library/Frameworks
+ BUILD_SYSROOT_CFLAGS="$BUILD_SYSROOT_CFLAGS -iframework $BUILD_SYSROOT/System/Library/Frameworks"
+ BUILD_SYSROOT_LDFLAGS="$BUILD_SYSROOT_LDFLAGS -iframework $BUILD_SYSROOT/System/Library/Frameworks"
+ # These always need to be set, or we can't find the frameworks embedded in JavaVM.framework
+ # set this here so it doesn't have to be peppered throughout the forest
+ BUILD_SYSROOT_CFLAGS="$BUILD_SYSROOT_CFLAGS -F $BUILD_SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
+ BUILD_SYSROOT_LDFLAGS="$BUILD_SYSROOT_LDFLAGS -F $BUILD_SYSROOT/System/Library/Frameworks/JavaVM.framework/Frameworks"
+ fi
+
+
+
+
+
+ # Fallback default of just /bin if DEVKIT_PATH is not defined
+ if test "x$BUILD_DEVKIT_TOOLCHAIN_PATH" = x; then
+ BUILD_DEVKIT_TOOLCHAIN_PATH="$BUILD_DEVKIT_ROOT/bin"
+ fi
+ PATH="$BUILD_DEVKIT_TOOLCHAIN_PATH:$BUILD_DEVKIT_EXTRA_PATH"
+ fi
+ fi
+
+ # FIXME: we should list the discovered compilers as an exclude pattern!
+ # If we do that, we can do this detection before POST_DETECTION, and still
+ # find the build compilers in the tools dir, if needed.
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${BUILD_CC+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in cl cc gcc
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_CC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_CC="$BUILD_CC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_CC="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_CC=$ac_cv_path_BUILD_CC
+if test -n "$BUILD_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_CC" >&5
+$as_echo "$BUILD_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BUILD_CC" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !BUILD_CC! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!BUILD_CC!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xBUILD_CC" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of BUILD_CC from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of BUILD_CC from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in cl cc gcc
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_CC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_CC="$BUILD_CC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_CC="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_CC=$ac_cv_path_BUILD_CC
+if test -n "$BUILD_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_CC" >&5
+$as_echo "$BUILD_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BUILD_CC" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$BUILD_CC" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool BUILD_CC= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool BUILD_CC= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_CC" >&5
+$as_echo_n "checking for BUILD_CC... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$BUILD_CC"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool BUILD_CC=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool BUILD_CC=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_CC in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_CC="$BUILD_CC" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_CC="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_CC=$ac_cv_path_BUILD_CC
+if test -n "$BUILD_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_CC" >&5
+$as_echo "$BUILD_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$BUILD_CC" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool BUILD_CC=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool BUILD_CC=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_CC" >&5
+$as_echo_n "checking for BUILD_CC... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool BUILD_CC=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$BUILD_CC" = x; then
+ as_fn_error $? "Could not find required tool for BUILD_CC" "$LINENO" 5
+ fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BUILD_CC" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_CC"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_CC, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_CC" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CC, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of BUILD_CC, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of BUILD_CC" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_CC"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_CC, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_CC" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_CC"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CC, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_CC, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_CC" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ BUILD_CC="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BUILD_CC to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting BUILD_CC to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${BUILD_CXX+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in cl CC g++
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_CXX in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_CXX="$BUILD_CXX" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_CXX="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_CXX=$ac_cv_path_BUILD_CXX
+if test -n "$BUILD_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_CXX" >&5
+$as_echo "$BUILD_CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BUILD_CXX" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !BUILD_CXX! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!BUILD_CXX!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xBUILD_CXX" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of BUILD_CXX from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of BUILD_CXX from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in cl CC g++
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_CXX in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_CXX="$BUILD_CXX" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_CXX="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_CXX=$ac_cv_path_BUILD_CXX
+if test -n "$BUILD_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_CXX" >&5
+$as_echo "$BUILD_CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BUILD_CXX" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$BUILD_CXX" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool BUILD_CXX= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool BUILD_CXX= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_CXX" >&5
+$as_echo_n "checking for BUILD_CXX... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$BUILD_CXX"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool BUILD_CXX=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool BUILD_CXX=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_CXX+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_CXX in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_CXX="$BUILD_CXX" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_CXX="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_CXX=$ac_cv_path_BUILD_CXX
+if test -n "$BUILD_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_CXX" >&5
+$as_echo "$BUILD_CXX" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$BUILD_CXX" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool BUILD_CXX=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool BUILD_CXX=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_CXX" >&5
+$as_echo_n "checking for BUILD_CXX... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool BUILD_CXX=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$BUILD_CXX" = x; then
+ as_fn_error $? "Could not find required tool for BUILD_CXX" "$LINENO" 5
+ fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BUILD_CXX" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_CXX"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CXX, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_CXX, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_CXX" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CXX, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of BUILD_CXX, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of BUILD_CXX" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_CXX"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CXX, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_CXX, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_CXX" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_CXX"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_CXX, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_CXX, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_CXX" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ BUILD_CXX="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BUILD_CXX to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting BUILD_CXX to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${BUILD_NM+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in nm gcc-nm
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_NM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_NM="$BUILD_NM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_NM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_NM=$ac_cv_path_BUILD_NM
+if test -n "$BUILD_NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_NM" >&5
+$as_echo "$BUILD_NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BUILD_NM" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !BUILD_NM! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!BUILD_NM!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xBUILD_NM" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of BUILD_NM from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of BUILD_NM from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in nm gcc-nm
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_NM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_NM="$BUILD_NM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_NM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_NM=$ac_cv_path_BUILD_NM
+if test -n "$BUILD_NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_NM" >&5
+$as_echo "$BUILD_NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BUILD_NM" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$BUILD_NM" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool BUILD_NM= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool BUILD_NM= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_NM" >&5
+$as_echo_n "checking for BUILD_NM... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$BUILD_NM"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool BUILD_NM=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool BUILD_NM=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_NM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_NM in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_NM="$BUILD_NM" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_NM="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_NM=$ac_cv_path_BUILD_NM
+if test -n "$BUILD_NM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_NM" >&5
+$as_echo "$BUILD_NM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$BUILD_NM" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool BUILD_NM=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool BUILD_NM=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_NM" >&5
+$as_echo_n "checking for BUILD_NM... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool BUILD_NM=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BUILD_NM" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_NM"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_NM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_NM, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_NM" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_NM, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of BUILD_NM, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of BUILD_NM" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_NM"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_NM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_NM, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_NM" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_NM"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_NM, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_NM, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_NM" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ BUILD_NM="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BUILD_NM to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting BUILD_NM to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${BUILD_AR+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in ar gcc-ar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_AR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_AR="$BUILD_AR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_AR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_AR=$ac_cv_path_BUILD_AR
+if test -n "$BUILD_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_AR" >&5
+$as_echo "$BUILD_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BUILD_AR" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !BUILD_AR! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!BUILD_AR!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xBUILD_AR" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of BUILD_AR from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of BUILD_AR from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in ar gcc-ar
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_AR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_AR="$BUILD_AR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_AR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_AR=$ac_cv_path_BUILD_AR
+if test -n "$BUILD_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_AR" >&5
+$as_echo "$BUILD_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BUILD_AR" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$BUILD_AR" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool BUILD_AR= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool BUILD_AR= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_AR" >&5
+$as_echo_n "checking for BUILD_AR... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$BUILD_AR"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool BUILD_AR=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool BUILD_AR=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_AR in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_AR="$BUILD_AR" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_AR="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_AR=$ac_cv_path_BUILD_AR
+if test -n "$BUILD_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_AR" >&5
+$as_echo "$BUILD_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$BUILD_AR" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool BUILD_AR=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool BUILD_AR=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_AR" >&5
+$as_echo_n "checking for BUILD_AR... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool BUILD_AR=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BUILD_AR" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_AR"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_AR, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_AR, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_AR" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_AR, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of BUILD_AR, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of BUILD_AR" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_AR"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_AR, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_AR, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_AR" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_AR"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_AR, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_AR, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_AR" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ BUILD_AR="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BUILD_AR to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting BUILD_AR to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${BUILD_OBJCOPY+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in objcopy
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_OBJCOPY+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_OBJCOPY in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_OBJCOPY="$BUILD_OBJCOPY" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_OBJCOPY="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_OBJCOPY=$ac_cv_path_BUILD_OBJCOPY
+if test -n "$BUILD_OBJCOPY"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_OBJCOPY" >&5
+$as_echo "$BUILD_OBJCOPY" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BUILD_OBJCOPY" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !BUILD_OBJCOPY! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!BUILD_OBJCOPY!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xBUILD_OBJCOPY" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of BUILD_OBJCOPY from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of BUILD_OBJCOPY from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in objcopy
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_OBJCOPY+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_OBJCOPY in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_OBJCOPY="$BUILD_OBJCOPY" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_OBJCOPY="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_OBJCOPY=$ac_cv_path_BUILD_OBJCOPY
+if test -n "$BUILD_OBJCOPY"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_OBJCOPY" >&5
+$as_echo "$BUILD_OBJCOPY" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BUILD_OBJCOPY" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$BUILD_OBJCOPY" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool BUILD_OBJCOPY= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool BUILD_OBJCOPY= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_OBJCOPY" >&5
+$as_echo_n "checking for BUILD_OBJCOPY... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$BUILD_OBJCOPY"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool BUILD_OBJCOPY=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool BUILD_OBJCOPY=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_OBJCOPY+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_OBJCOPY in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_OBJCOPY="$BUILD_OBJCOPY" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_OBJCOPY="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_OBJCOPY=$ac_cv_path_BUILD_OBJCOPY
+if test -n "$BUILD_OBJCOPY"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_OBJCOPY" >&5
+$as_echo "$BUILD_OBJCOPY" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$BUILD_OBJCOPY" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool BUILD_OBJCOPY=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool BUILD_OBJCOPY=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_OBJCOPY" >&5
+$as_echo_n "checking for BUILD_OBJCOPY... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool BUILD_OBJCOPY=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BUILD_OBJCOPY" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_OBJCOPY"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_OBJCOPY, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_OBJCOPY, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_OBJCOPY" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_OBJCOPY, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of BUILD_OBJCOPY, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of BUILD_OBJCOPY" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_OBJCOPY"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_OBJCOPY, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_OBJCOPY, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_OBJCOPY" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_OBJCOPY"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_OBJCOPY, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_OBJCOPY, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_OBJCOPY" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ BUILD_OBJCOPY="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BUILD_OBJCOPY to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting BUILD_OBJCOPY to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${BUILD_STRIP+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in strip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_STRIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_STRIP="$BUILD_STRIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_STRIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_STRIP=$ac_cv_path_BUILD_STRIP
+if test -n "$BUILD_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_STRIP" >&5
+$as_echo "$BUILD_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BUILD_STRIP" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !BUILD_STRIP! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!BUILD_STRIP!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xBUILD_STRIP" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of BUILD_STRIP from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of BUILD_STRIP from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in strip
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_STRIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_STRIP="$BUILD_STRIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_STRIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_STRIP=$ac_cv_path_BUILD_STRIP
+if test -n "$BUILD_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_STRIP" >&5
+$as_echo "$BUILD_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$BUILD_STRIP" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$BUILD_STRIP" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool BUILD_STRIP= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool BUILD_STRIP= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_STRIP" >&5
+$as_echo_n "checking for BUILD_STRIP... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$BUILD_STRIP"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool BUILD_STRIP=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool BUILD_STRIP=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_BUILD_STRIP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $BUILD_STRIP in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_BUILD_STRIP="$BUILD_STRIP" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_BUILD_STRIP="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+BUILD_STRIP=$ac_cv_path_BUILD_STRIP
+if test -n "$BUILD_STRIP"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUILD_STRIP" >&5
+$as_echo "$BUILD_STRIP" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$BUILD_STRIP" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool BUILD_STRIP=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool BUILD_STRIP=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BUILD_STRIP" >&5
+$as_echo_n "checking for BUILD_STRIP... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool BUILD_STRIP=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$BUILD_STRIP" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_STRIP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_STRIP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_STRIP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_STRIP" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_STRIP, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of BUILD_STRIP, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of BUILD_STRIP" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_STRIP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_STRIP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_STRIP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_STRIP" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$BUILD_STRIP"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of BUILD_STRIP, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of BUILD_STRIP, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of BUILD_STRIP" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ BUILD_STRIP="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting BUILD_STRIP to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting BUILD_STRIP to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+ # Assume the C compiler is the assembler
+ BUILD_AS="$BUILD_CC -c"
+ # Just like for the target compiler, use the compiler as linker
+ BUILD_LD="$BUILD_CC"
+ BUILD_LDCXX="$BUILD_CXX"
+
+ PATH="$OLDPATH"
+
+
+ COMPILER=$BUILD_CC
+ COMPILER_NAME=BuildC
+
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ # cc -V output typically looks like
+ # cc: Sun C 5.12 Linux_i386 2011/11/16
+ # or
+ # cc: Studio 12.5 Sun C 5.14 SunOS_sparc 2016/05/31
+ COMPILER_VERSION_OUTPUT=`$COMPILER -V 2>&1`
+ # Check that this is likely to be the Solaris Studio cc.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "^.* Sun $COMPILER_NAME" > /dev/null
+ if test $? -ne 0; then
+ ALT_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with -V was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with -V was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Remove usage instructions (if present), and
+ # collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/ *[Uu]sage:.*//'`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e "s/^.*[ ,\t]$COMPILER_NAME[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/"`
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ # xlc -qversion output typically looks like
+ # IBM XL C/C++ for AIX, V11.1 (5724-X13)
+ # Version: 11.01.0000.0015
+ COMPILER_VERSION_OUTPUT=`$COMPILER -qversion 2>&1`
+ # Check that this is likely to be the IBM XL C compiler.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "IBM XL C" > /dev/null
+ if test $? -ne 0; then
+ ALT_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with -qversion was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with -qversion was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.*, V\([1-9][0-9.]*\).*$/\1/'`
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # There is no specific version flag, but all output starts with a version string.
+ # First line typically looks something like:
+ # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
+ COMPILER_VERSION_OUTPUT=`$COMPILER 2>&1 | $HEAD -n 1 | $TR -d '\r'`
+ # Check that this is likely to be Microsoft CL.EXE.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "Microsoft.*Compiler" > /dev/null
+ if test $? -ne 0; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running it was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running it was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.*ersion.\([1-9][0-9.]*\) .*$/\1/'`
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ # gcc --version output typically looks like
+ # gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
+ # Copyright (C) 2013 Free Software Foundation, Inc.
+ # This is free software; see the source for copying conditions. There is NO
+ # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ COMPILER_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ # Check that this is likely to be GCC.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "Free Software Foundation" > /dev/null
+ if test $? -ne 0; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$COMPILER_VERSION\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$COMPILER_VERSION\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Remove Copyright and legalese from version string, and
+ # collapse into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/ *Copyright .*//'`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.* \([1-9]\.[0-9.]*\)[^0-9.].*$/\1/'`
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ # clang --version output typically looks like
+ # Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
+ # clang version 3.3 (tags/RELEASE_33/final)
+ # or
+ # Debian clang version 3.2-7ubuntu1 (tags/RELEASE_32/final) (based on LLVM 3.2)
+ # Target: x86_64-pc-linux-gnu
+ # Thread model: posix
+ COMPILER_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ # Check that this is likely to be clang
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "clang" > /dev/null
+ if test $? -ne 0; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.* version \([1-9][0-9.]*\).*$/\1/'`
+ else
+ as_fn_error $? "Unknown toolchain type $TOOLCHAIN_TYPE." "$LINENO" 5
+ fi
+ # This sets CC_VERSION_NUMBER or CXX_VERSION_NUMBER. (This comment is a grep marker)
+ BUILD_CC_VERSION_NUMBER="$COMPILER_VERSION_NUMBER"
+ # This sets CC_VERSION_STRING or CXX_VERSION_STRING. (This comment is a grep marker)
+ BUILD_CC_VERSION_STRING="$COMPILER_VERSION_STRING"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Using $TOOLCHAIN_TYPE $COMPILER_NAME compiler version $COMPILER_VERSION_NUMBER [$COMPILER_VERSION_STRING]" >&5
+$as_echo "$as_me: Using $TOOLCHAIN_TYPE $COMPILER_NAME compiler version $COMPILER_VERSION_NUMBER [$COMPILER_VERSION_STRING]" >&6;}
+
+
+ COMPILER=$BUILD_CXX
+ COMPILER_NAME=BuildC++
+
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ # cc -V output typically looks like
+ # cc: Sun C 5.12 Linux_i386 2011/11/16
+ # or
+ # cc: Studio 12.5 Sun C 5.14 SunOS_sparc 2016/05/31
+ COMPILER_VERSION_OUTPUT=`$COMPILER -V 2>&1`
+ # Check that this is likely to be the Solaris Studio cc.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "^.* Sun $COMPILER_NAME" > /dev/null
+ if test $? -ne 0; then
+ ALT_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with -V was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with -V was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Remove usage instructions (if present), and
+ # collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/ *[Uu]sage:.*//'`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e "s/^.*[ ,\t]$COMPILER_NAME[ ,\t]\([1-9]\.[0-9][0-9]*\).*/\1/"`
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ # xlc -qversion output typically looks like
+ # IBM XL C/C++ for AIX, V11.1 (5724-X13)
+ # Version: 11.01.0000.0015
+ COMPILER_VERSION_OUTPUT=`$COMPILER -qversion 2>&1`
+ # Check that this is likely to be the IBM XL C compiler.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "IBM XL C" > /dev/null
+ if test $? -ne 0; then
+ ALT_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with -qversion was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with -qversion was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$ALT_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.*, V\([1-9][0-9.]*\).*$/\1/'`
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # There is no specific version flag, but all output starts with a version string.
+ # First line typically looks something like:
+ # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
+ COMPILER_VERSION_OUTPUT=`$COMPILER 2>&1 | $HEAD -n 1 | $TR -d '\r'`
+ # Check that this is likely to be Microsoft CL.EXE.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "Microsoft.*Compiler" > /dev/null
+ if test $? -ne 0; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running it was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running it was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.*ersion.\([1-9][0-9.]*\) .*$/\1/'`
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ # gcc --version output typically looks like
+ # gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
+ # Copyright (C) 2013 Free Software Foundation, Inc.
+ # This is free software; see the source for copying conditions. There is NO
+ # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ COMPILER_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ # Check that this is likely to be GCC.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "Free Software Foundation" > /dev/null
+ if test $? -ne 0; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$COMPILER_VERSION\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$COMPILER_VERSION\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Remove Copyright and legalese from version string, and
+ # collapse into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/ *Copyright .*//'`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.* \([1-9]\.[0-9.]*\)[^0-9.].*$/\1/'`
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ # clang --version output typically looks like
+ # Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
+ # clang version 3.3 (tags/RELEASE_33/final)
+ # or
+ # Debian clang version 3.2-7ubuntu1 (tags/RELEASE_32/final) (based on LLVM 3.2)
+ # Target: x86_64-pc-linux-gnu
+ # Thread model: posix
+ COMPILER_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ # Check that this is likely to be clang
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "clang" > /dev/null
+ if test $? -ne 0; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&5
+$as_echo "$as_me: The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The result from running with --version was: \"$COMPILER_VERSION_OUTPUT\"" >&5
+$as_echo "$as_me: The result from running with --version was: \"$COMPILER_VERSION_OUTPUT\"" >&6;}
+ as_fn_error $? "A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir." "$LINENO" 5
+ fi
+ # Collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.* version \([1-9][0-9.]*\).*$/\1/'`
+ else
+ as_fn_error $? "Unknown toolchain type $TOOLCHAIN_TYPE." "$LINENO" 5
+ fi
+ # This sets CC_VERSION_NUMBER or CXX_VERSION_NUMBER. (This comment is a grep marker)
+ BUILD_CXX_VERSION_NUMBER="$COMPILER_VERSION_NUMBER"
+ # This sets CC_VERSION_STRING or CXX_VERSION_STRING. (This comment is a grep marker)
+ BUILD_CXX_VERSION_STRING="$COMPILER_VERSION_STRING"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Using $TOOLCHAIN_TYPE $COMPILER_NAME compiler version $COMPILER_VERSION_NUMBER [$COMPILER_VERSION_STRING]" >&5
+$as_echo "$as_me: Using $TOOLCHAIN_TYPE $COMPILER_NAME compiler version $COMPILER_VERSION_NUMBER [$COMPILER_VERSION_STRING]" >&6;}
+
+
+ if test "x$BUILD_CC_VERSION_NUMBER" != "x$BUILD_CXX_VERSION_NUMBER"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C and C++ compiler have different version numbers, $BUILD_CC_VERSION_NUMBER vs $BUILD_CXX_VERSION_NUMBER." >&5
+$as_echo "$as_me: WARNING: C and C++ compiler have different version numbers, $BUILD_CC_VERSION_NUMBER vs $BUILD_CXX_VERSION_NUMBER." >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: This typically indicates a broken setup, and is not supported" >&5
+$as_echo "$as_me: WARNING: This typically indicates a broken setup, and is not supported" >&2;}
+ fi
+
+ # We only check CC_VERSION_NUMBER since we assume CXX_VERSION_NUMBER is equal.
+ if [[ "[$]BUILD_CC_VERSION_NUMBER" =~ (.*\.){4} ]] ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has more than four parts (W.X.Y.Z): $BUILD_CC_VERSION_NUMBER. Comparisons might be wrong." >&5
+$as_echo "$as_me: WARNING: C compiler version number has more than four parts (W.X.Y.Z): $BUILD_CC_VERSION_NUMBER. Comparisons might be wrong." >&2;}
+ fi
+
+ if [[ "[$]BUILD_CC_VERSION_NUMBER" =~ [0-9]{6} ]] ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has a part larger than 99999: $BUILD_CC_VERSION_NUMBER. Comparisons might be wrong." >&5
+$as_echo "$as_me: WARNING: C compiler version number has a part larger than 99999: $BUILD_CC_VERSION_NUMBER. Comparisons might be wrong." >&2;}
+ fi
+
+ OPENJDK_BUILD_COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$BUILD_CC_VERSION_NUMBER"`
+
+ else
+ # If we are not cross compiling, use the normal target compilers for
+ # building the build platform executables.
+ BUILD_CC="$CC"
+ BUILD_CXX="$CXX"
+ BUILD_LD="$LD"
+ BUILD_LDCXX="$LDCXX"
+ BUILD_NM="$NM"
+ BUILD_AS="$AS"
+ BUILD_OBJCOPY="$OBJCOPY"
+ BUILD_STRIP="$STRIP"
+ BUILD_SYSROOT_CFLAGS="$SYSROOT_CFLAGS"
+ BUILD_SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS"
+ BUILD_AR="$AR"
+
+
+ if test "x$CC_VERSION_NUMBER" != "x$CXX_VERSION_NUMBER"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C and C++ compiler have different version numbers, $CC_VERSION_NUMBER vs $CXX_VERSION_NUMBER." >&5
+$as_echo "$as_me: WARNING: C and C++ compiler have different version numbers, $CC_VERSION_NUMBER vs $CXX_VERSION_NUMBER." >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: This typically indicates a broken setup, and is not supported" >&5
+$as_echo "$as_me: WARNING: This typically indicates a broken setup, and is not supported" >&2;}
+ fi
+
+ # We only check CC_VERSION_NUMBER since we assume CXX_VERSION_NUMBER is equal.
+ if [[ "[$]CC_VERSION_NUMBER" =~ (.*\.){4} ]] ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has more than four parts (W.X.Y.Z): $CC_VERSION_NUMBER. Comparisons might be wrong." >&5
+$as_echo "$as_me: WARNING: C compiler version number has more than four parts (W.X.Y.Z): $CC_VERSION_NUMBER. Comparisons might be wrong." >&2;}
+ fi
+
+ if [[ "[$]CC_VERSION_NUMBER" =~ [0-9]{6} ]] ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: C compiler version number has a part larger than 99999: $CC_VERSION_NUMBER. Comparisons might be wrong." >&5
+$as_echo "$as_me: WARNING: C compiler version number has a part larger than 99999: $CC_VERSION_NUMBER. Comparisons might be wrong." >&2;}
+ fi
+
+ OPENJDK_BUILD_COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$CC_VERSION_NUMBER"`
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # The package path is used only on macosx?
+ # FIXME: clean this up, and/or move it elsewhere.
+ PACKAGE_PATH=/opt/local
+
+
+ # Check for extra potential brokenness.
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # On Windows, double-check that we got the right compiler.
+ CC_VERSION_OUTPUT=`$CC 2>&1 | $HEAD -n 1 | $TR -d '\r'`
+ COMPILER_CPU_TEST=`$ECHO $CC_VERSION_OUTPUT | $SED -n "s/^.* \(.*\)$/\1/p"`
+ if test "x$OPENJDK_TARGET_CPU" = "xx86"; then
+ if test "x$COMPILER_CPU_TEST" != "x80x86" -a "x$COMPILER_CPU_TEST" != "xx86"; then
+ as_fn_error $? "Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for \"$COMPILER_CPU_TEST\"; expected \"80x86\" or \"x86\"." "$LINENO" 5
+ fi
+ elif test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
+ if test "x$COMPILER_CPU_TEST" != "xx64"; then
+ as_fn_error $? "Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for \"$COMPILER_CPU_TEST\"; expected \"x64\"." "$LINENO" 5
+ fi
+ fi
+ fi
+
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ # If this is a --hash-style=gnu system, use --hash-style=both, why?
+ HAS_GNU_HASH=`$CC -dumpspecs 2>/dev/null | $GREP 'hash-style=gnu'`
+ # This is later checked when setting flags.
+
+ # "-Og" suppported for GCC 4.8 and later
+ CFLAG_OPTIMIZE_DEBUG_FLAG="-Og"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C compiler supports \"$CFLAG_OPTIMIZE_DEBUG_FLAG\"" >&5
+$as_echo_n "checking if the C compiler supports \"$CFLAG_OPTIMIZE_DEBUG_FLAG\"... " >&6; }
+ supports=yes
+
+ saved_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS $CFLAG_OPTIMIZE_DEBUG_FLAG"
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int i;
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ supports=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ CFLAGS="$saved_cflags"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ C_COMP_SUPPORTS="yes"
+ else
+ :
+ C_COMP_SUPPORTS="no"
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"$CFLAG_OPTIMIZE_DEBUG_FLAG\"" >&5
+$as_echo_n "checking if the C++ compiler supports \"$CFLAG_OPTIMIZE_DEBUG_FLAG\"... " >&6; }
+ supports=yes
+
+ saved_cxxflags="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAG $CFLAG_OPTIMIZE_DEBUG_FLAG"
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int i;
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+ supports=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ CXXFLAGS="$saved_cxxflags"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ CXX_COMP_SUPPORTS="yes"
+ else
+ :
+ CXX_COMP_SUPPORTS="no"
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if both compilers support \"$CFLAG_OPTIMIZE_DEBUG_FLAG\"" >&5
+$as_echo_n "checking if both compilers support \"$CFLAG_OPTIMIZE_DEBUG_FLAG\"... " >&6; }
+ supports=no
+ if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ HAS_CFLAG_OPTIMIZE_DEBUG=true
+ else
+ :
+ HAS_CFLAG_OPTIMIZE_DEBUG=false
+ fi
+
+
+
+
+
+
+
+ # "-z relro" supported in GNU binutils 2.17 and later
+ LINKER_RELRO_FLAG="-Wl,-z,relro"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if linker supports \"$LINKER_RELRO_FLAG\"" >&5
+$as_echo_n "checking if linker supports \"$LINKER_RELRO_FLAG\"... " >&6; }
+ supports=yes
+
+ saved_ldflags="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $LINKER_RELRO_FLAG"
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+else
+ supports=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ LDFLAGS="$saved_ldflags"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ HAS_LINKER_RELRO=true
+ else
+ :
+ HAS_LINKER_RELRO=false
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # "-z now" supported in GNU binutils 2.11 and later
+ LINKER_NOW_FLAG="-Wl,-z,now"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if linker supports \"$LINKER_NOW_FLAG\"" >&5
+$as_echo_n "checking if linker supports \"$LINKER_NOW_FLAG\"... " >&6; }
+ supports=yes
+
+ saved_ldflags="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $LINKER_NOW_FLAG"
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+else
+ supports=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ LDFLAGS="$saved_ldflags"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ HAS_LINKER_NOW=true
+ else
+ :
+ HAS_LINKER_NOW=false
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+ fi
+
+ # Check for broken SuSE 'ld' for which 'Only anonymous version tag is allowed
+ # in executable.'
+ USING_BROKEN_SUSE_LD=no
+ if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$TOOLCHAIN_TYPE" = xgcc; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken SuSE 'ld' which only understands anonymous version tags in executables" >&5
+$as_echo_n "checking for broken SuSE 'ld' which only understands anonymous version tags in executables... " >&6; }
+ $ECHO "SUNWprivate_1.1 { local: *; };" > version-script.map
+ $ECHO "int main() { }" > main.c
+ if $CXX -Wl,-version-script=version-script.map main.c 2>&5 >&5; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ USING_BROKEN_SUSE_LD=no
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ USING_BROKEN_SUSE_LD=yes
+ fi
+ $RM version-script.map main.c a.out
+ fi
+
+
+ # Setup hotspot lecagy names for toolchains
+ HOTSPOT_TOOLCHAIN_TYPE=$TOOLCHAIN_TYPE
+ if test "x$TOOLCHAIN_TYPE" = xclang; then
+ HOTSPOT_TOOLCHAIN_TYPE=gcc
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ HOTSPOT_TOOLCHAIN_TYPE=sparcWorks
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ HOTSPOT_TOOLCHAIN_TYPE=visCPP
+ fi
+
+
+
+# Setup the JTReg Regression Test Harness.
+
+
+# Check whether --with-jtreg was given.
+if test "${with_jtreg+set}" = set; then :
+ withval=$with_jtreg;
+fi
+
+
+ if test "x$with_jtreg" = xno; then
+ # jtreg disabled
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg test harness" >&5
+$as_echo_n "checking for jtreg test harness... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, disabled" >&5
+$as_echo "no, disabled" >&6; }
+ elif test "x$with_jtreg" != xyes && test "x$with_jtreg" != x; then
+ # An explicit path is specified, use it.
+ JT_HOME="$with_jtreg"
+ if test ! -d "$JT_HOME"; then
+ as_fn_error $? "jtreg home directory from --with-jtreg=$with_jtreg does not exist" "$LINENO" 5
+ fi
+
+ if test ! -e "$JT_HOME/lib/jtreg.jar"; then
+ as_fn_error $? "jtreg home directory from --with-jtreg=$with_jtreg is not a valid jtreg home" "$LINENO" 5
+ fi
+
+ JTREGEXE="$JT_HOME/bin/jtreg"
+ if test ! -x "$JTREGEXE"; then
+ as_fn_error $? "jtreg home directory from --with-jtreg=$with_jtreg does not contain valid jtreg executable" "$LINENO" 5
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg test harness" >&5
+$as_echo_n "checking for jtreg test harness... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JT_HOME" >&5
+$as_echo "$JT_HOME" >&6; }
+ else
+ # Try to locate jtreg
+ if test "x$JT_HOME" != x; then
+ # JT_HOME set in environment, use it
+ if test ! -d "$JT_HOME"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring JT_HOME pointing to invalid directory: $JT_HOME" >&5
+$as_echo "$as_me: WARNING: Ignoring JT_HOME pointing to invalid directory: $JT_HOME" >&2;}
+ JT_HOME=
+ else
+ if test ! -e "$JT_HOME/lib/jtreg.jar"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME" >&5
+$as_echo "$as_me: WARNING: Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME" >&2;}
+ JT_HOME=
+ elif test ! -x "$JT_HOME/bin/jtreg"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring JT_HOME which does not contain valid jtreg executable: $JT_HOME" >&5
+$as_echo "$as_me: WARNING: Ignoring JT_HOME which does not contain valid jtreg executable: $JT_HOME" >&2;}
+ JT_HOME=
+ else
+ JTREGEXE="$JT_HOME/bin/jtreg"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Located jtreg using JT_HOME from environment" >&5
+$as_echo "$as_me: Located jtreg using JT_HOME from environment" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$JT_HOME" = x; then
+ # JT_HOME is not set in environment, or was deemed invalid.
+ # Try to find jtreg on path
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${JTREGEXE+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in jtreg
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JTREGEXE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $JTREGEXE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_JTREGEXE="$JTREGEXE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_JTREGEXE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+JTREGEXE=$ac_cv_path_JTREGEXE
+if test -n "$JTREGEXE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JTREGEXE" >&5
+$as_echo "$JTREGEXE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$JTREGEXE" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !JTREGEXE! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!JTREGEXE!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xJTREGEXE" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of JTREGEXE from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of JTREGEXE from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in jtreg
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JTREGEXE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $JTREGEXE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_JTREGEXE="$JTREGEXE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_JTREGEXE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+JTREGEXE=$ac_cv_path_JTREGEXE
+if test -n "$JTREGEXE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JTREGEXE" >&5
+$as_echo "$JTREGEXE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$JTREGEXE" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$JTREGEXE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool JTREGEXE= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool JTREGEXE= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JTREGEXE" >&5
+$as_echo_n "checking for JTREGEXE... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$JTREGEXE"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool JTREGEXE=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool JTREGEXE=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_JTREGEXE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $JTREGEXE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_JTREGEXE="$JTREGEXE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_JTREGEXE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+JTREGEXE=$ac_cv_path_JTREGEXE
+if test -n "$JTREGEXE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JTREGEXE" >&5
+$as_echo "$JTREGEXE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$JTREGEXE" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool JTREGEXE=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool JTREGEXE=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JTREGEXE" >&5
+$as_echo_n "checking for JTREGEXE... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool JTREGEXE=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+ if test "x$JTREGEXE" != x; then
+ # That's good, now try to derive JT_HOME
+ JT_HOME=`(cd $($DIRNAME $JTREGEXE)/.. && pwd)`
+ if test ! -e "$JT_HOME/lib/jtreg.jar"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring jtreg from path since a valid jtreg home cannot be found" >&5
+$as_echo "$as_me: WARNING: Ignoring jtreg from path since a valid jtreg home cannot be found" >&2;}
+ JT_HOME=
+ JTREGEXE=
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Located jtreg using jtreg executable in path" >&5
+$as_echo "$as_me: Located jtreg using jtreg executable in path" >&6;}
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jtreg test harness" >&5
+$as_echo_n "checking for jtreg test harness... " >&6; }
+ if test "x$JT_HOME" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JT_HOME" >&5
+$as_echo "$JT_HOME" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, not found" >&5
+$as_echo "no, not found" >&6; }
+
+ if test "x$with_jtreg" = xyes; then
+ as_fn_error $? "--with-jtreg was specified, but no jtreg found." "$LINENO" 5
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$JTREGEXE" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$JTREGEXE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path=`$CYGPATH -u "$path"`
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path=`$CYGPATH -u "$path"`
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in cygwin causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path=`$CYGPATH -u "$path"`
+ fi
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of JTREGEXE" "$LINENO" 5
+ fi
+ fi
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file presence.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ # Short path failed, file does not exist as specified.
+ # Try adding .exe or .cmd
+ if test -f "${new_path}.exe"; then
+ input_to_shortpath="${new_path}.exe"
+ elif test -f "${new_path}.cmd"; then
+ input_to_shortpath="${new_path}.cmd"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JTREGEXE, which resolves as \"$new_path\", is invalid." >&5
+$as_echo "$as_me: The path of JTREGEXE, which resolves as \"$new_path\", is invalid." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&5
+$as_echo "$as_me: Neither \"$new_path\" nor \"$new_path.exe/cmd\" can be found" >&6;}
+ as_fn_error $? "Cannot locate the the path of JTREGEXE" "$LINENO" 5
+ fi
+ else
+ input_to_shortpath="$new_path"
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+ new_path="$input_to_shortpath"
+
+ input_path="$input_to_shortpath"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $input_to_shortpath | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$JTREGEXE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ # Now try to locate executable using which
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+
+ if test "x$new_path" = x; then
+ # Oops. Which didn't find the executable.
+ # The splitting of arguments from the executable at a space might have been incorrect,
+ # since paths with space are more likely in Windows. Give it another try with the whole
+ # argument.
+ path="$complete"
+ arguments="EOL"
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+
+ new_path=`$WHICH "$new_path" 2> /dev/null`
+ # bat and cmd files are not always considered executable in MSYS causing which
+ # to not find them
+ if test "x$new_path" = x \
+ && test "x`$ECHO \"$path\" | $GREP -i -e \"\\.bat$\" -e \"\\.cmd$\"`" != x \
+ && test "x`$LS \"$path\" 2>/dev/null`" != x; then
+ new_path="$path"
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ fi
+
+ if test "x$new_path" = x; then
+ # It's still not found. Now this is an unrecoverable error.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You might be mixing spaces in the path and extra arguments, which is not allowed." >&5
+$as_echo "$as_me: You might be mixing spaces in the path and extra arguments, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of JTREGEXE" "$LINENO" 5
+ fi
+ fi
+
+ # Now new_path has a complete unix path to the binary
+ if test "x`$ECHO $new_path | $GREP ^/bin/`" != x; then
+ # Keep paths in /bin as-is, but remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+ # Do not save /bin paths to all_fixpath_prefixes!
+ else
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $new_path`
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+ # Output is in $new_path
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ # remove trailing .exe if any
+ new_path="${new_path/%.exe/}"
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+ fi
+
+ else
+ # We're on a unix platform. Hooray! :)
+ # First separate the path from the arguments. This will split at the first
+ # space.
+ complete="$JTREGEXE"
+ path="${complete%% *}"
+ tmp="$complete EOL"
+ arguments="${tmp#* }"
+
+ # Cannot rely on the command "which" here since it doesn't always work.
+ is_absolute_path=`$ECHO "$path" | $GREP ^/`
+ if test -z "$is_absolute_path"; then
+ # Path to executable is not absolute. Find it.
+ IFS_save="$IFS"
+ IFS=:
+ for p in $PATH; do
+ if test -f "$p/$path" && test -x "$p/$path"; then
+ new_path="$p/$path"
+ break
+ fi
+ done
+ IFS="$IFS_save"
+ else
+ # This is an absolute path, we can use it without further modifications.
+ new_path="$path"
+ fi
+
+ if test "x$new_path" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&5
+$as_echo "$as_me: The path of JTREGEXE, which resolves as \"$complete\", is not found." >&6;}
+ has_space=`$ECHO "$complete" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: This might be caused by spaces in the path, which is not allowed." >&5
+$as_echo "$as_me: This might be caused by spaces in the path, which is not allowed." >&6;}
+ fi
+ as_fn_error $? "Cannot locate the the path of JTREGEXE" "$LINENO" 5
+ fi
+ fi
+
+ # Now join together the path and the arguments once again
+ if test "x$arguments" != xEOL; then
+ new_complete="$new_path ${arguments% *}"
+ else
+ new_complete="$new_path"
+ fi
+
+ if test "x$complete" != "x$new_complete"; then
+ JTREGEXE="$new_complete"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JTREGEXE to \"$new_complete\"" >&5
+$as_echo "$as_me: Rewriting JTREGEXE to \"$new_complete\"" >&6;}
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$JT_HOME" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$JT_HOME"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JT_HOME, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of JT_HOME, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of JT_HOME" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ JT_HOME="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JT_HOME to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting JT_HOME to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$JT_HOME"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ JT_HOME="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting JT_HOME to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting JT_HOME to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$JT_HOME"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of JT_HOME, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of JT_HOME, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of JT_HOME, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ JT_HOME="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ JT_HOME="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+
+
+
+
+ # COMPILER_TARGET_BITS_FLAG : option for selecting 32- or 64-bit output
+ # COMPILER_COMMAND_FILE_FLAG : option for passing a command file to the compiler
+ # COMPILER_BINDCMD_FILE_FLAG : option for specifying a file which saves the binder
+ # commands produced by the link step (currently AIX only)
+ if test "x$TOOLCHAIN_TYPE" = xxlc; then
+ COMPILER_TARGET_BITS_FLAG="-q"
+ COMPILER_COMMAND_FILE_FLAG="-f"
+ COMPILER_BINDCMD_FILE_FLAG="-bloadmap:"
+ else
+ COMPILER_TARGET_BITS_FLAG="-m"
+ COMPILER_COMMAND_FILE_FLAG="@"
+ COMPILER_BINDCMD_FILE_FLAG=""
+
+ # The solstudio linker does not support @-files.
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ COMPILER_COMMAND_FILE_FLAG=
+ fi
+
+ # Check if @file is supported by gcc
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if @file is supported by gcc" >&5
+$as_echo_n "checking if @file is supported by gcc... " >&6; }
+ # Extra emtpy "" to prevent ECHO from interpreting '--version' as argument
+ $ECHO "" "--version" > command.file
+ if $CXX @command.file 2>&5 >&5; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ COMPILER_COMMAND_FILE_FLAG="@"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ COMPILER_COMMAND_FILE_FLAG=
+ fi
+ $RM command.file
+ fi
+ fi
+
+
+
+
+ # FIXME: figure out if we should select AR flags depending on OS or toolchain.
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ ARFLAGS="-r"
+ elif test "x$OPENJDK_TARGET_OS" = xaix; then
+ ARFLAGS="-X64"
+ elif test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # lib.exe is used as AR to create static libraries.
+ ARFLAGS="-nologo -NODEFAULTLIB:MSVCRT"
+ else
+ ARFLAGS=""
+ fi
+
+
+ ## Setup strip.
+ # FIXME: should this really be per platform, or should it be per toolchain type?
+ # strip is not provided by clang or solstudio; so guessing platform makes most sense.
+ # FIXME: we should really only export STRIPFLAGS from here, not POST_STRIP_CMD.
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ STRIPFLAGS="-g"
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ STRIPFLAGS="-x"
+ elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ STRIPFLAGS="-S"
+ elif test "x$OPENJDK_TARGET_OS" = xaix; then
+ STRIPFLAGS="-X32_64"
+ fi
+
+
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ CC_OUT_OPTION=-Fo
+ EXE_OUT_OPTION=-out:
+ LD_OUT_OPTION=-out:
+ AR_OUT_OPTION=-out:
+ else
+ # The option used to specify the target .o,.a or .so file.
+ # When compiling, how to specify the to be created object file.
+ CC_OUT_OPTION='-o$(SPACE)'
+ # When linking, how to specify the to be created executable.
+ EXE_OUT_OPTION='-o$(SPACE)'
+ # When linking, how to specify the to be created dynamically linkable library.
+ LD_OUT_OPTION='-o$(SPACE)'
+ # When archiving, how to specify the to be create static archive for object files.
+ AR_OUT_OPTION='rcs$(SPACE)'
+ fi
+
+
+
+
+
+ # On Windows, we need to set RC flags.
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ RC_FLAGS="-nologo -l0x409"
+ JVM_RCFLAGS="-nologo"
+ if test "x$DEBUG_LEVEL" = xrelease; then
+ RC_FLAGS="$RC_FLAGS -DNDEBUG"
+ JVM_RCFLAGS="$JVM_RCFLAGS -DNDEBUG"
+ fi
+
+ # The version variables used to create RC_FLAGS may be overridden
+ # in a custom configure script, or possibly the command line.
+ # Let those variables be expanded at make time in spec.gmk.
+ # The \$ are escaped to the shell, and the $(...) variables
+ # are evaluated by make.
+ RC_FLAGS="$RC_FLAGS \
+ -D\"JDK_VERSION_STRING=\$(VERSION_STRING)\" \
+ -D\"JDK_COMPANY=\$(COMPANY_NAME)\" \
+ -D\"JDK_COMPONENT=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) binary\" \
+ -D\"JDK_VER=\$(VERSION_NUMBER)\" \
+ -D\"JDK_COPYRIGHT=Copyright \xA9 $COPYRIGHT_YEAR\" \
+ -D\"JDK_NAME=\$(PRODUCT_NAME) \$(JDK_RC_PLATFORM_NAME) \$(VERSION_MAJOR)\" \
+ -D\"JDK_FVER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\""
+
+ JVM_RCFLAGS="$JVM_RCFLAGS \
+ -D\"HS_BUILD_ID=\$(VERSION_STRING)\" \
+ -D\"HS_COMPANY=\$(COMPANY_NAME)\" \
+ -D\"JDK_DOTVER=\$(VERSION_NUMBER_FOUR_POSITIONS)\" \
+ -D\"HS_COPYRIGHT=Copyright $COPYRIGHT_YEAR\" \
+ -D\"HS_NAME=\$(PRODUCT_NAME) \$(VERSION_SHORT)\" \
+ -D\"JDK_VER=\$(subst .,\$(COMMA),\$(VERSION_NUMBER_FOUR_POSITIONS))\" \
+ -D\"HS_FNAME=jvm.dll\" \
+ -D\"HS_INTERNAL_NAME=jvm\""
+ fi
+
+
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # silence copyright notice and other headers.
+ COMMON_CCXXFLAGS="$COMMON_CCXXFLAGS -nologo"
+ fi
+
+
+# Now we can test some aspects on the target using configure macros.
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+ ###############################################################################
+ #
+ # Now we check if libjvm.so will use 32 or 64 bit pointers for the C/C++ code.
+ # (The JVM can use 32 or 64 bit Java pointers but that decision
+ # is made at runtime.)
+ #
+
+ if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xaix; then
+ # Always specify -m flag on Solaris
+ # And -q on AIX because otherwise the compiler produces 32-bit objects by default
+
+ # When we add flags to the "official" CFLAGS etc, we need to
+ # keep track of these additions in ADDED_CFLAGS etc. These
+ # will later be checked to make sure only controlled additions
+ # have been made to CFLAGS etc.
+ ADDED_CFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ ADDED_CXXFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ ADDED_LDFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${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}"
+
+ JVM_CFLAGS="$JVM_CFLAGS $ADDED_CFLAGS"
+ JVM_LDFLAGS="$JVM_LDFLAGS $ADDED_LDFLAGS"
+ JVM_ASFLAGS="$JVM_ASFLAGS $ADDED_CFLAGS"
+
+ elif test "x$COMPILE_TYPE" = xreduced; then
+ if test "x$OPENJDK_TARGET_OS_TYPE" = xunix; then
+ # Specify -m if running reduced on unix platforms
+
+ # When we add flags to the "official" CFLAGS etc, we need to
+ # keep track of these additions in ADDED_CFLAGS etc. These
+ # will later be checked to make sure only controlled additions
+ # have been made to CFLAGS etc.
+ ADDED_CFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ ADDED_CXXFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ ADDED_LDFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${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}"
+
+ JVM_CFLAGS="$JVM_CFLAGS $ADDED_CFLAGS"
+ JVM_LDFLAGS="$JVM_LDFLAGS $ADDED_LDFLAGS"
+ JVM_ASFLAGS="$JVM_ASFLAGS $ADDED_CFLAGS"
+
+ fi
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ JVM_CFLAGS="$JVM_CFLAGS ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ JVM_LDFLAGS="$JVM_LDFLAGS ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ JVM_ASFLAGS="$JVM_ASFLAGS ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ fi
+
+ # Make compilation sanity check
+ for ac_header in stdio.h
+do :
+ ac_fn_cxx_check_header_mongrel "$LINENO" "stdio.h" "ac_cv_header_stdio_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdio_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_STDIO_H 1
+_ACEOF
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to compile stdio.h. This likely implies missing compile dependencies." >&5
+$as_echo "$as_me: Failed to compile stdio.h. This likely implies missing compile dependencies." >&6;}
+ if test "x$COMPILE_TYPE" = xreduced; then
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # reduced is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=reduced
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You are doing a reduced build. Check that you have 32-bit libraries installed. $HELP_MSG" >&5
+$as_echo "$as_me: You are doing a reduced build. Check that you have 32-bit libraries installed. $HELP_MSG" >&6;}
+ elif test "x$COMPILE_TYPE" = xcross; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You are doing a cross-compilation. Check that you have all target platform libraries installed." >&5
+$as_echo "$as_me: You are doing a cross-compilation. Check that you have all target platform libraries installed." >&6;}
+ fi
+ as_fn_error $? "Cannot continue." "$LINENO" 5
+
+fi
+
+done
+
+
+ # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int *" >&5
+$as_echo_n "checking size of int *... " >&6; }
+if ${ac_cv_sizeof_int_p+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (int *))" "ac_cv_sizeof_int_p" "$ac_includes_default"; then :
+
+else
+ if test "$ac_cv_type_int_p" = yes; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (int *)
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ ac_cv_sizeof_int_p=0
+ fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int_p" >&5
+$as_echo "$ac_cv_sizeof_int_p" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT_P $ac_cv_sizeof_int_p
+_ACEOF
+
+
+
+ # AC_CHECK_SIZEOF defines 'ac_cv_sizeof_int_p' to hold the number of bytes used by an 'int*'
+ if test "x$ac_cv_sizeof_int_p" = x; then
+ # The test failed, lets stick to the assumed value.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The number of bits in the target could not be determined, using $OPENJDK_TARGET_CPU_BITS." >&5
+$as_echo "$as_me: WARNING: The number of bits in the target could not be determined, using $OPENJDK_TARGET_CPU_BITS." >&2;}
+ else
+ TESTED_TARGET_CPU_BITS=`expr 8 \* $ac_cv_sizeof_int_p`
+
+ if test "x$TESTED_TARGET_CPU_BITS" != "x$OPENJDK_TARGET_CPU_BITS"; then
+ # This situation may happen on 64-bit platforms where the compiler by default only generates 32-bit objects
+ # Let's try to implicitely set the compilers target architecture and retry the test
+ { $as_echo "$as_me:${as_lineno-$LINENO}: 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)." >&5
+$as_echo "$as_me: 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)." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Retrying with platforms compiler target bits flag to ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" >&5
+$as_echo "$as_me: Retrying with platforms compiler target bits flag to ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}" >&6;}
+
+ # When we add flags to the "official" CFLAGS etc, we need to
+ # keep track of these additions in ADDED_CFLAGS etc. These
+ # will later be checked to make sure only controlled additions
+ # have been made to CFLAGS etc.
+ ADDED_CFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ ADDED_CXXFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ ADDED_LDFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${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}"
+
+ JVM_CFLAGS="$JVM_CFLAGS $ADDED_CFLAGS"
+ JVM_LDFLAGS="$JVM_LDFLAGS $ADDED_LDFLAGS"
+ JVM_ASFLAGS="$JVM_ASFLAGS $ADDED_CFLAGS"
+
+
+ # We have to unset 'ac_cv_sizeof_int_p' first, otherwise AC_CHECK_SIZEOF will use the previously cached value!
+ unset ac_cv_sizeof_int_p
+ # And we have to undef the definition of SIZEOF_INT_P in confdefs.h by the previous invocation of AC_CHECK_SIZEOF
+ cat >>confdefs.h <<_ACEOF
+#undef SIZEOF_INT_P
+_ACEOF
+
+ # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int *" >&5
+$as_echo_n "checking size of int *... " >&6; }
+if ${ac_cv_sizeof_int_p+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (int *))" "ac_cv_sizeof_int_p" "$ac_includes_default"; then :
+
+else
+ if test "$ac_cv_type_int_p" = yes; then
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (int *)
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ ac_cv_sizeof_int_p=0
+ fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int_p" >&5
+$as_echo "$ac_cv_sizeof_int_p" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT_P $ac_cv_sizeof_int_p
+_ACEOF
+
+
+
+ TESTED_TARGET_CPU_BITS=`expr 8 \* $ac_cv_sizeof_int_p`
+
+ if test "x$TESTED_TARGET_CPU_BITS" != "x$OPENJDK_TARGET_CPU_BITS"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: 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)" >&5
+$as_echo "$as_me: 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)" >&6;}
+ if test "x$COMPILE_TYPE" = xreduced; then
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # reduced is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=reduced
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You are doing a reduced build. Check that you have 32-bit libraries installed. $HELP_MSG" >&5
+$as_echo "$as_me: You are doing a reduced build. Check that you have 32-bit libraries installed. $HELP_MSG" >&6;}
+ elif test "x$COMPILE_TYPE" = xcross; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: You are doing a cross-compilation. Check that you have all target platform libraries installed." >&5
+$as_echo "$as_me: You are doing a cross-compilation. Check that you have all target platform libraries installed." >&6;}
+ fi
+ as_fn_error $? "Cannot continue." "$LINENO" 5
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for target address size" >&5
+$as_echo_n "checking for target address size... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OPENJDK_TARGET_CPU_BITS bits" >&5
+$as_echo "$OPENJDK_TARGET_CPU_BITS bits" >&6; }
+
+
+ ###############################################################################
+ #
+ # Is the target little of big endian?
+ #
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_c_bigendian=unknown
+ # See if we're dealing with a universal compiler.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifndef __APPLE_CC__
+ not a universal capable compiler
+ #endif
+ typedef int dummy;
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+ # Check for potential -arch flags. It is not universal unless
+ # there are at least two -arch flags with different values.
+ ac_arch=
+ ac_prev=
+ for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+ if test -n "$ac_prev"; then
+ case $ac_word in
+ i?86 | x86_64 | ppc | ppc64)
+ if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+ ac_arch=$ac_word
+ else
+ ac_cv_c_bigendian=universal
+ break
+ fi
+ ;;
+ esac
+ ac_prev=
+ elif test "x$ac_word" = "x-arch"; then
+ ac_prev=arch
+ fi
+ done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if sys/param.h defines the BYTE_ORDER macro.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+ && LITTLE_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ # It does; now see whether it defined to BIG_ENDIAN or not.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_c_bigendian=yes
+else
+ ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+ bogus endian macros
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ # It does; now see whether it defined to _BIG_ENDIAN or not.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+ not big endian
+ #endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_c_bigendian=yes
+else
+ ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $ac_cv_c_bigendian = unknown; then
+ # Compile a test program.
+ if test "$cross_compiling" = yes; then :
+ # Try to guess by grepping values from an object file.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+short int ascii_mm[] =
+ { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+ short int ascii_ii[] =
+ { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+ int use_ascii (int i) {
+ return ascii_mm[i] + ascii_ii[i];
+ }
+ short int ebcdic_ii[] =
+ { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+ short int ebcdic_mm[] =
+ { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+ int use_ebcdic (int i) {
+ return ebcdic_mm[i] + ebcdic_ii[i];
+ }
+ extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+ ac_cv_c_bigendian=yes
+ fi
+ if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+ if test "$ac_cv_c_bigendian" = unknown; then
+ ac_cv_c_bigendian=no
+ else
+ # finding both strings is unlikely to happen, but who knows?
+ ac_cv_c_bigendian=unknown
+ fi
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+ long int l;
+ char c[sizeof (long int)];
+ } u;
+ u.l = 1;
+ return u.c[sizeof (long int) - 1] == 1;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_run "$LINENO"; then :
+ ac_cv_c_bigendian=no
+else
+ ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+ yes)
+ ENDIAN="big";; #(
+ no)
+ ENDIAN="little" ;; #(
+ universal)
+ ENDIAN="universal_endianness"
+ ;; #(
+ *)
+ ENDIAN="unknown" ;;
+ esac
+
+
+ if test "x$ENDIAN" = xuniversal_endianness; then
+ as_fn_error $? "Building with both big and little endianness is not supported" "$LINENO" 5
+ fi
+ if test "x$ENDIAN" != "x$OPENJDK_TARGET_CPU_ENDIAN"; then
+ as_fn_error $? "The tested endian in the target ($ENDIAN) differs from the endian expected to be found in the target ($OPENJDK_TARGET_CPU_ENDIAN)" "$LINENO" 5
+ fi
+
+
+# Configure flags for the tools
+
+ ###############################################################################
+ #
+ # How to compile shared libraries.
+ #
+
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ PICFLAG="-fPIC"
+ C_FLAG_REORDER=''
+ CXX_FLAG_REORDER=''
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # Linking is different on MacOSX
+ if test "x$STATIC_BUILD" = xtrue; then
+ SHARED_LIBRARY_FLAGS ='-undefined dynamic_lookup'
+ else
+ SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG"
+ JVM_CFLAGS="$JVM_CFLAGS $PICFLAG"
+ fi
+ SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path$(or $1,/.)'
+ SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
+ SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/$1'
+ SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,$1'
+ else
+ # Default works for linux, might work on other platforms as well.
+ SHARED_LIBRARY_FLAGS='-shared'
+ SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$ORIGIN$1'
+ SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN"
+ SET_SHARED_LIBRARY_NAME='-Wl,-soname=$1'
+ SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=$1'
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ C_FLAG_REORDER=''
+ CXX_FLAG_REORDER=''
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # Linking is different on MacOSX
+ PICFLAG=''
+ SHARED_LIBRARY_FLAGS="-dynamiclib -compatibility_version 1.0.0 -current_version 1.0.0 $PICFLAG"
+ SET_EXECUTABLE_ORIGIN='-Wl,-rpath,@loader_path$(or $1,/.)'
+ SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
+ SET_SHARED_LIBRARY_NAME='-Wl,-install_name,@rpath/$1'
+ SET_SHARED_LIBRARY_MAPFILE='-Wl,-exported_symbols_list,$1'
+
+ if test "x$STATIC_BUILD" = xfalse; then
+ JVM_CFLAGS="$JVM_CFLAGS -fPIC"
+ fi
+ else
+ # Default works for linux, might work on other platforms as well.
+ PICFLAG='-fPIC'
+ SHARED_LIBRARY_FLAGS='-shared'
+ SET_EXECUTABLE_ORIGIN='-Wl,-rpath,\$$ORIGIN$1'
+ SET_SHARED_LIBRARY_NAME='-Wl,-soname=$1'
+ SET_SHARED_LIBRARY_MAPFILE='-Wl,-version-script=$1'
+
+ # arm specific settings
+ if test "x$OPENJDK_TARGET_CPU" = "xarm"; then
+ # '-Wl,-z,origin' isn't used on arm.
+ SET_SHARED_LIBRARY_ORIGIN='-Wl,-rpath,\$$$$ORIGIN$1'
+ else
+ SET_SHARED_LIBRARY_ORIGIN="-Wl,-z,origin $SET_EXECUTABLE_ORIGIN"
+ fi
+
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ if test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
+ PICFLAG="-xcode=pic32"
+ else
+ PICFLAG="-KPIC"
+ fi
+ C_FLAG_REORDER='-xF'
+ CXX_FLAG_REORDER='-xF'
+ SHARED_LIBRARY_FLAGS="-G"
+ SET_EXECUTABLE_ORIGIN='-R\$$ORIGIN$1'
+ SET_SHARED_LIBRARY_ORIGIN="$SET_EXECUTABLE_ORIGIN"
+ SET_SHARED_LIBRARY_NAME='-h $1'
+ SET_SHARED_LIBRARY_MAPFILE='-M$1'
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ # '-qpic' defaults to 'qpic=small'. This means that the compiler generates only
+ # one instruction for accessing the TOC. If the TOC grows larger than 64K, the linker
+ # will have to patch this single instruction with a call to some out-of-order code which
+ # does the load from the TOC. This is of course slow. But in that case we also would have
+ # to use '-bbigtoc' for linking anyway so we could also change the PICFLAG to 'qpic=large'.
+ # With 'qpic=large' the compiler will by default generate a two-instruction sequence which
+ # can be patched directly by the linker and does not require a jump to out-of-order code.
+ # Another alternative instead of using 'qpic=large -bbigtoc' may be to use '-qminimaltoc'
+ # instead. This creates a distinct TOC for every compilation unit (and thus requires two
+ # loads for accessing a global variable). But there are rumors that this may be seen as a
+ # 'performance feature' because of improved code locality of the symbols used in a
+ # compilation unit.
+ PICFLAG="-qpic"
+ JVM_CFLAGS="$JVM_CFLAGS $PICFLAG"
+ C_FLAG_REORDER=''
+ CXX_FLAG_REORDER=''
+ SHARED_LIBRARY_FLAGS="-qmkshrobj -bM:SRE -bnoentry"
+ SET_EXECUTABLE_ORIGIN=""
+ SET_SHARED_LIBRARY_ORIGIN=''
+ SET_SHARED_LIBRARY_NAME=''
+ SET_SHARED_LIBRARY_MAPFILE=''
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ PICFLAG=""
+ C_FLAG_REORDER=''
+ CXX_FLAG_REORDER=''
+ SHARED_LIBRARY_FLAGS="-dll"
+ SET_EXECUTABLE_ORIGIN=''
+ SET_SHARED_LIBRARY_ORIGIN=''
+ SET_SHARED_LIBRARY_NAME=''
+ SET_SHARED_LIBRARY_MAPFILE='-def:$1'
+ fi
+
+
+
+
+
+
+
+
+
+ # The (cross) compiler is now configured, we can now test capabilities
+ # of the target platform.
+
+
+
+ ###############################################################################
+ #
+ # Setup the opt flags for different compilers
+ # and different operating systems.
+ #
+
+ # FIXME: this was indirectly the old default, but just inherited.
+ # if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # C_FLAG_DEPS="-MMD -MF"
+ # fi
+
+ # Generate make dependency files
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ C_FLAG_DEPS="-MMD -MF"
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ C_FLAG_DEPS="-MMD -MF"
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ C_FLAG_DEPS="-xMMD -xMF"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ C_FLAG_DEPS="-qmakedep=gcc -MF"
+ fi
+ CXX_FLAG_DEPS="$C_FLAG_DEPS"
+
+
+
+ # Debug symbols
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ if test "x$OPENJDK_TARGET_CPU_BITS" = "x64" && test "x$DEBUG_LEVEL" = "xfastdebug"; then
+ # reduce from default "-g2" option to save space
+ CFLAGS_DEBUG_SYMBOLS="-g1"
+ CXXFLAGS_DEBUG_SYMBOLS="-g1"
+ else
+ CFLAGS_DEBUG_SYMBOLS="-g"
+ CXXFLAGS_DEBUG_SYMBOLS="-g"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ CFLAGS_DEBUG_SYMBOLS="-g"
+ CXXFLAGS_DEBUG_SYMBOLS="-g"
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ CFLAGS_DEBUG_SYMBOLS="-g -xs"
+ # -g0 enables debug symbols without disabling inlining.
+ CXXFLAGS_DEBUG_SYMBOLS="-g0 -xs"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ CFLAGS_DEBUG_SYMBOLS="-g"
+ CXXFLAGS_DEBUG_SYMBOLS="-g"
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ CFLAGS_DEBUG_SYMBOLS="-Zi"
+ CXXFLAGS_DEBUG_SYMBOLS="-Zi"
+ fi
+
+
+
+ # Debug symbols for JVM_CFLAGS
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -xs"
+ if test "x$DEBUG_LEVEL" = xslowdebug; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g"
+ else
+ # -g0 does not disable inlining, which -g does.
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g0"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -Z7 -d2Zi+"
+ else
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS -g"
+ fi
+
+
+ # bounds, memory and behavior checking options
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ case $DEBUG_LEVEL in
+ release )
+ # no adjustment
+ ;;
+ fastdebug )
+ # no adjustment
+ ;;
+ slowdebug )
+ # FIXME: By adding this to C(XX)FLAGS_DEBUG_OPTIONS/JVM_CFLAGS_SYMBOLS it
+ # get's added conditionally on whether we produce debug symbols or not.
+ # This is most likely not really correct.
+
+ # Add runtime stack smashing and undefined behavior checks.
+ # Not all versions of gcc support -fstack-protector
+ STACK_PROTECTOR_CFLAG="-fstack-protector-all"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C compiler supports \"$STACK_PROTECTOR_CFLAG -Werror\"" >&5
+$as_echo_n "checking if the C compiler supports \"$STACK_PROTECTOR_CFLAG -Werror\"... " >&6; }
+ supports=yes
+
+ saved_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS $STACK_PROTECTOR_CFLAG -Werror"
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int i;
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ supports=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ CFLAGS="$saved_cflags"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ C_COMP_SUPPORTS="yes"
+ else
+ :
+ C_COMP_SUPPORTS="no"
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"$STACK_PROTECTOR_CFLAG -Werror\"" >&5
+$as_echo_n "checking if the C++ compiler supports \"$STACK_PROTECTOR_CFLAG -Werror\"... " >&6; }
+ supports=yes
+
+ saved_cxxflags="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAG $STACK_PROTECTOR_CFLAG -Werror"
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int i;
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+ supports=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ CXXFLAGS="$saved_cxxflags"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ CXX_COMP_SUPPORTS="yes"
+ else
+ :
+ CXX_COMP_SUPPORTS="no"
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if both compilers support \"$STACK_PROTECTOR_CFLAG -Werror\"" >&5
+$as_echo_n "checking if both compilers support \"$STACK_PROTECTOR_CFLAG -Werror\"... " >&6; }
+ supports=no
+ if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+
+ else
+ :
+ STACK_PROTECTOR_CFLAG=""
+ fi
+
+
+
+
+
+
+
+ CFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
+ CXXFLAGS_DEBUG_OPTIONS="$STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
+ if test "x$STACK_PROTECTOR_CFLAG" != x; then
+ JVM_CFLAGS_SYMBOLS="$JVM_CFLAGS_SYMBOLS $STACK_PROTECTOR_CFLAG --param ssp-buffer-size=1"
+ fi
+ ;;
+ esac
+ fi
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ if test "x$DEBUG_LEVEL" != xrelease; then
+ if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ JVM_CFLAGS="$JVM_CFLAGS -homeparams"
+ fi
+ fi
+ fi
+
+ # Optimization levels
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ CC_HIGHEST="$CC_HIGHEST -fns -fsimple -fsingle -xbuiltin=%all -xdepend -xrestrict -xlibmil"
+
+ if test "x$OPENJDK_TARGET_CPU_ARCH" = "xx86"; then
+ # FIXME: seems we always set -xregs=no%frameptr; put it elsewhere more global?
+ C_O_FLAG_HIGHEST_JVM="-xO4"
+ C_O_FLAG_HIGHEST="-xO4 -Wu,-O4~yz $CC_HIGHEST -xalias_level=basic -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_DEBUG="-xregs=no%frameptr"
+ C_O_FLAG_DEBUG_JVM=""
+ C_O_FLAG_NONE="-xregs=no%frameptr"
+ CXX_O_FLAG_HIGHEST_JVM="-xO4"
+ 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_DEBUG="-xregs=no%frameptr"
+ CXX_O_FLAG_DEBUG_JVM=""
+ CXX_O_FLAG_NONE="-xregs=no%frameptr"
+ if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
+ C_O_FLAG_HIGHEST="$C_O_FLAG_HIGHEST -xchip=pentium"
+ CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_HIGHEST -xchip=pentium"
+ fi
+ elif test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
+ C_O_FLAG_HIGHEST_JVM="-xO4"
+ C_O_FLAG_HIGHEST="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0 $CC_HIGHEST -xalias_level=basic -xprefetch=auto,explicit -xchip=ultra"
+ C_O_FLAG_HI="-xO4 -Wc,-Qrm-s -Wc,-Qiselect-T0"
+ C_O_FLAG_NORM="-xO2 -Wc,-Qrm-s -Wc,-Qiselect-T0"
+ C_O_FLAG_DEBUG=""
+ C_O_FLAG_DEBUG_JVM=""
+ C_O_FLAG_NONE=""
+ CXX_O_FLAG_HIGHEST_JVM="-xO4"
+ CXX_O_FLAG_HIGHEST="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0 $CC_HIGHEST -xprefetch=auto,explicit -xchip=ultra"
+ CXX_O_FLAG_HI="-xO4 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
+ CXX_O_FLAG_NORM="-xO2 -Qoption cg -Qrm-s -Qoption cg -Qiselect-T0"
+ CXX_O_FLAG_DEBUG=""
+ CXX_O_FLAG_DEBUG_JVM=""
+ CXX_O_FLAG_NONE=""
+ fi
+ else
+ # The remaining toolchains share opt flags between CC and CXX;
+ # setup for C and duplicate afterwards.
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # On MacOSX we optimize for size, something
+ # we should do for all platforms?
+ C_O_FLAG_HIGHEST_JVM="-Os"
+ C_O_FLAG_HIGHEST="-Os"
+ C_O_FLAG_HI="-Os"
+ C_O_FLAG_NORM="-Os"
+ C_O_FLAG_SIZE="-Os"
+ else
+ C_O_FLAG_HIGHEST_JVM="-O3"
+ C_O_FLAG_HIGHEST="-O3"
+ C_O_FLAG_HI="-O3"
+ C_O_FLAG_NORM="-O2"
+ C_O_FLAG_SIZE="-Os"
+ fi
+ C_O_FLAG_DEBUG="-O0"
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ C_O_FLAG_DEBUG_JVM=""
+ elif test "x$OPENJDK_TARGET_OS" = xlinux; then
+ C_O_FLAG_DEBUG_JVM="-O0"
+ fi
+ C_O_FLAG_NONE="-O0"
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # On MacOSX we optimize for size, something
+ # we should do for all platforms?
+ C_O_FLAG_HIGHEST_JVM="-Os"
+ C_O_FLAG_HIGHEST="-Os"
+ C_O_FLAG_HI="-Os"
+ C_O_FLAG_NORM="-Os"
+ C_O_FLAG_SIZE="-Os"
+ else
+ C_O_FLAG_HIGHEST_JVM="-O3"
+ C_O_FLAG_HIGHEST="-O3"
+ C_O_FLAG_HI="-O3"
+ C_O_FLAG_NORM="-O2"
+ C_O_FLAG_SIZE="-Os"
+ fi
+ C_O_FLAG_DEBUG="-O0"
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ C_O_FLAG_DEBUG_JVM=""
+ elif test "x$OPENJDK_TARGET_OS" = xlinux; then
+ C_O_FLAG_DEBUG_JVM="-O0"
+ fi
+ C_O_FLAG_NONE="-O0"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ C_O_FLAG_HIGHEST_JVM="-O3 -qhot=level=1 -qinline -qinlglue"
+ C_O_FLAG_HIGHEST="-O3 -qhot=level=1 -qinline -qinlglue"
+ C_O_FLAG_HI="-O3 -qinline -qinlglue"
+ C_O_FLAG_NORM="-O2"
+ C_O_FLAG_DEBUG="-qnoopt"
+ # FIXME: Value below not verified.
+ C_O_FLAG_DEBUG_JVM=""
+ C_O_FLAG_NONE="-qnoopt"
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ C_O_FLAG_HIGHEST_JVM="-O2 -Oy-"
+ C_O_FLAG_HIGHEST="-O2"
+ C_O_FLAG_HI="-O1"
+ C_O_FLAG_NORM="-O1"
+ C_O_FLAG_DEBUG="-Od"
+ C_O_FLAG_DEBUG_JVM=""
+ C_O_FLAG_NONE="-Od"
+ C_O_FLAG_SIZE="-Os"
+ fi
+ CXX_O_FLAG_HIGHEST_JVM="$C_O_FLAG_HIGHEST_JVM"
+ 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_DEBUG="$C_O_FLAG_DEBUG"
+ CXX_O_FLAG_DEBUG_JVM="$C_O_FLAG_DEBUG_JVM"
+ CXX_O_FLAG_NONE="$C_O_FLAG_NONE"
+ CXX_O_FLAG_SIZE="$C_O_FLAG_SIZE"
+ fi
+
+ # Adjust optimization flags according to debug level.
+ case $DEBUG_LEVEL in
+ release )
+ # no adjustment
+ ;;
+ fastdebug )
+ # Not quite so much optimization
+ C_O_FLAG_HI="$C_O_FLAG_NORM"
+ CXX_O_FLAG_HI="$CXX_O_FLAG_NORM"
+ ;;
+ slowdebug )
+ # Disable optimization
+ C_O_FLAG_HIGHEST_JVM="$C_O_FLAG_DEBUG_JVM"
+ C_O_FLAG_HIGHEST="$C_O_FLAG_DEBUG"
+ C_O_FLAG_HI="$C_O_FLAG_DEBUG"
+ C_O_FLAG_NORM="$C_O_FLAG_DEBUG"
+ C_O_FLAG_SIZE="$C_O_FLAG_DEBUG"
+ CXX_O_FLAG_HIGHEST_JVM="$CXX_O_FLAG_DEBUG_JVM"
+ CXX_O_FLAG_HIGHEST="$CXX_O_FLAG_DEBUG"
+ CXX_O_FLAG_HI="$CXX_O_FLAG_DEBUG"
+ CXX_O_FLAG_NORM="$CXX_O_FLAG_DEBUG"
+ CXX_O_FLAG_SIZE="$CXX_O_FLAG_DEBUG"
+ ;;
+ esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-abi-profile was given.
+if test "${with_abi_profile+set}" = set; then :
+ withval=$with_abi_profile;
+fi
+
+
+ if test "x$with_abi_profile" != x; then
+ if test "x$OPENJDK_TARGET_CPU" != xarm && \
+ test "x$OPENJDK_TARGET_CPU" != xaarch64; then
+ as_fn_error $? "--with-abi-profile only available on arm/aarch64" "$LINENO" 5
+ fi
+
+ OPENJDK_TARGET_ABI_PROFILE=$with_abi_profile
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ABI profle" >&5
+$as_echo_n "checking for ABI profle... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OPENJDK_TARGET_ABI_PROFILE" >&5
+$as_echo "$OPENJDK_TARGET_ABI_PROFILE" >&6; }
+
+ if test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm-vfp-sflt; then
+ ARM_FLOAT_TYPE=vfp-sflt
+ ARM_ARCH_TYPE_FLAGS='-march=armv7-a -mthumb'
+ elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm-vfp-hflt; then
+ ARM_FLOAT_TYPE=vfp-hflt
+ ARM_ARCH_TYPE_FLAGS='-march=armv7-a -mthumb'
+ elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm-sflt; then
+ ARM_FLOAT_TYPE=sflt
+ ARM_ARCH_TYPE_FLAGS='-march=armv5t -marm'
+ elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarmv5-vfp-sflt; then
+ ARM_FLOAT_TYPE=vfp-sflt
+ ARM_ARCH_TYPE_FLAGS='-march=armv5t -marm'
+ elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarmv6-vfp-hflt; then
+ ARM_FLOAT_TYPE=vfp-hflt
+ ARM_ARCH_TYPE_FLAGS='-march=armv6 -marm'
+ elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xarm64; then
+ # No special flags, just need to trigger setting JDK_ARCH_ABI_PROP_NAME
+ ARM_FLOAT_TYPE=
+ ARM_ARCH_TYPE_FLAGS=
+ elif test "x$OPENJDK_TARGET_ABI_PROFILE" = xaarch64; then
+ # No special flags, just need to trigger setting JDK_ARCH_ABI_PROP_NAME
+ ARM_FLOAT_TYPE=
+ ARM_ARCH_TYPE_FLAGS=
+ else
+ as_fn_error $? "Invalid ABI profile: \"$OPENJDK_TARGET_ABI_PROFILE\"" "$LINENO" 5
+ fi
+
+ if test "x$ARM_FLOAT_TYPE" = xvfp-sflt; then
+ ARM_FLOAT_TYPE_FLAGS='-mfloat-abi=softfp -mfpu=vfp -DFLOAT_ARCH=-vfp-sflt'
+ elif test "x$ARM_FLOAT_TYPE" = xvfp-hflt; then
+ ARM_FLOAT_TYPE_FLAGS='-mfloat-abi=hard -mfpu=vfp -DFLOAT_ARCH=-vfp-hflt'
+ elif test "x$ARM_FLOAT_TYPE" = xsflt; then
+ ARM_FLOAT_TYPE_FLAGS='-msoft-float -mfpu=vfp'
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ARM_FLOAT_TYPE floating point flags" >&5
+$as_echo_n "checking for $ARM_FLOAT_TYPE floating point flags... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ARM_FLOAT_TYPE_FLAGS" >&5
+$as_echo "$ARM_FLOAT_TYPE_FLAGS" >&6; }
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for arch type flags" >&5
+$as_echo_n "checking for arch type flags... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ARM_ARCH_TYPE_FLAGS" >&5
+$as_echo "$ARM_ARCH_TYPE_FLAGS" >&6; }
+
+ # Now set JDK_ARCH_ABI_PROP_NAME. This is equivalent to the last part of the
+ # autoconf target triplet.
+ JDK_ARCH_ABI_PROP_NAME=`$ECHO $OPENJDK_TARGET_AUTOCONF_NAME | $SED -e 's/.*-\([^-]*\)$/\1/'`
+ # Sanity check that it is a known ABI.
+ if test "x$JDK_ARCH_ABI_PROP_NAME" != xgnu && \
+ test "x$JDK_ARCH_ABI_PROP_NAME" != xgnueabi && \
+ test "x$JDK_ARCH_ABI_PROP_NAME" != xgnueabihf; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unknown autoconf target triplet ABI: \"$JDK_ARCH_ABI_PROP_NAME\"" >&5
+$as_echo "$as_me: WARNING: Unknown autoconf target triplet ABI: \"$JDK_ARCH_ABI_PROP_NAME\"" >&2;}
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ABI property name" >&5
+$as_echo_n "checking for ABI property name... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JDK_ARCH_ABI_PROP_NAME" >&5
+$as_echo "$JDK_ARCH_ABI_PROP_NAME" >&6; }
+
+
+ # Pass these on to the open part of configure as if they were set using
+ # --with-extra-c[xx]flags.
+ EXTRA_CFLAGS="$EXTRA_CFLAGS $ARM_ARCH_TYPE_FLAGS $ARM_FLOAT_TYPE_FLAGS"
+ EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS $ARM_ARCH_TYPE_FLAGS $ARM_FLOAT_TYPE_FLAGS"
+ # Get rid of annoying "note: the mangling of 'va_list' has changed in GCC 4.4"
+ # FIXME: This should not really be set using extra_cflags.
+ if test "x$OPENJDK_TARGET_CPU" = xarm; then
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -Wno-psabi"
+ EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -Wno-psabi"
+ fi
+ # Also add JDK_ARCH_ABI_PROP_NAME define, but only to CFLAGS.
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -DJDK_ARCH_ABI_PROP_NAME='\"\$(JDK_ARCH_ABI_PROP_NAME)\"'"
+ # And pass the architecture flags to the linker as well
+ EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ARM_ARCH_TYPE_FLAGS $ARM_FLOAT_TYPE_FLAGS"
+ fi
+
+ # When building with an abi profile, the name of that profile is appended on the
+ # bundle platform, which is used in bundle names.
+ if test "x$OPENJDK_TARGET_ABI_PROFILE" != x; then
+ OPENJDK_TARGET_BUNDLE_PLATFORM="$OPENJDK_TARGET_OS_BUNDLE-$OPENJDK_TARGET_ABI_PROFILE"
+ fi
+
+
+ # Special extras...
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ if test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
+ CFLAGS_JDKLIB_EXTRA="${CFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
+ CXXFLAGS_JDKLIB_EXTRA="${CXXFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
+ fi
+ CFLAGS_JDKLIB_EXTRA="${CFLAGS_JDKLIB_EXTRA} -errtags=yes -errfmt"
+ CXXFLAGS_JDKLIB_EXTRA="${CXXFLAGS_JDKLIB_EXTRA} -errtags=yes -errfmt"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ CFLAGS_JDK="${CFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
+ CXXFLAGS_JDK="${CXXFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ CXXSTD_CXXFLAG="-std=gnu++98"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"$CXXSTD_CXXFLAG -Werror\"" >&5
+$as_echo_n "checking if the C++ compiler supports \"$CXXSTD_CXXFLAG -Werror\"... " >&6; }
+ supports=yes
+
+ saved_cxxflags="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAG $CXXSTD_CXXFLAG -Werror"
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int i;
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+ supports=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ CXXFLAGS="$saved_cxxflags"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+
+ else
+ :
+ CXXSTD_CXXFLAG=""
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+ CXXFLAGS_JDK="${CXXFLAGS_JDK} ${CXXSTD_CXXFLAG}"
+ JVM_CFLAGS="${JVM_CFLAGS} ${CXXSTD_CXXFLAG}"
+
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ CFLAGS_JDK="${CFLAGS_JDK} -D__solaris__"
+ CXXFLAGS_JDK="${CXXFLAGS_JDK} -D__solaris__"
+ fi
+
+ CFLAGS_JDK="${CFLAGS_JDK} ${EXTRA_CFLAGS}"
+ CXXFLAGS_JDK="${CXXFLAGS_JDK} ${EXTRA_CXXFLAGS}"
+ LDFLAGS_JDK="${LDFLAGS_JDK} ${EXTRA_LDFLAGS}"
+
+ ###############################################################################
+ #
+ # Now setup the CFLAGS and LDFLAGS for the JDK build.
+ # Later we will also have CFLAGS and LDFLAGS for the hotspot subrepo build.
+ #
+
+ # Setup compiler/platform specific flags into
+ # CFLAGS_JDK - C Compiler flags
+ # CXXFLAGS_JDK - C++ Compiler flags
+ # COMMON_CCXXFLAGS_JDK - common to C and C++
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ JVM_CFLAGS="$JVM_CFLAGS -D_GNU_SOURCE"
+ JVM_CFLAGS="$JVM_CFLAGS -D_REENTRANT"
+ JVM_CFLAGS="$JVM_CFLAGS -fcheck-new"
+ if test "x$OPENJDK_TARGET_CPU" = xx86; then
+ # Force compatibility with i586 on 32 bit intel platforms.
+ COMMON_CCXXFLAGS="${COMMON_CCXXFLAGS} -march=i586"
+ JVM_CFLAGS="$JVM_CFLAGS -march=i586"
+ fi
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \
+ -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
+ case $OPENJDK_TARGET_CPU_ARCH in
+ arm )
+ # on arm we don't prevent gcc to omit frame pointer but do prevent strict aliasing
+ CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing"
+ COMMON_CCXXFLAGS_JDK="${COMMON_CCXXFLAGS_JDK} -fsigned-char"
+ ;;
+ ppc )
+ # on ppc we don't prevent gcc to omit frame pointer but do prevent strict aliasing
+ CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ s390 )
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer -mbackchain -march=z10"
+ CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ * )
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer"
+ CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ # Need to assign to a variable since m4 is blocked from modifying parts in [].
+ REFERENCE_VERSION=6
+
+ if [[ "$REFERENCE_VERSION" =~ (.*\.){4} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to 6, only four parts (W.X.Y.Z) is supported" "$LINENO" 5
+ fi
+
+ if [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to 6, only parts < 99999 is supported" "$LINENO" 5
+ fi
+
+ # Version comparison method inspired by http://stackoverflow.com/a/24067243
+ COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$REFERENCE_VERSION"`
+
+ if test $COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then
+ :
+
+ # These flags are required for GCC 6 builds as undefined behaviour in OpenJDK code
+ # runs afoul of the more aggressive versions of these optimisations.
+ # Notably, value range propagation now assumes that the this pointer of C++
+ # member functions is non-null.
+ NO_DELETE_NULL_POINTER_CHECKS_CFLAG="-fno-delete-null-pointer-checks"
+ NO_LIFETIME_DSE_CFLAG="-fno-lifetime-dse"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} and ${NO_LIFETIME_DSE_CFLAG}" >&5
+$as_echo "$as_me: GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} and ${NO_LIFETIME_DSE_CFLAG}" >&6;}
+ CFLAGS_JDK="$CFLAGS_JDK ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} ${NO_LIFETIME_DSE_CFLAG}"
+ JVM_CFLAGS="$JVM_CFLAGS ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} ${NO_LIFETIME_DSE_CFLAG}"
+
+ else
+ :
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ JVM_CFLAGS="$JVM_CFLAGS -D_GNU_SOURCE"
+
+ # Restrict the debug information created by Clang to avoid
+ # too big object files and speed the build up a little bit
+ # (see http://llvm.org/bugs/show_bug.cgi?id=7554)
+ JVM_CFLAGS="$JVM_CFLAGS -flimit-debug-info"
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ if test "x$OPENJDK_TARGET_CPU" = xx86; then
+ # Force compatibility with i586 on 32 bit intel platforms.
+ COMMON_CCXXFLAGS="${COMMON_CCXXFLAGS} -march=i586"
+ JVM_CFLAGS="$JVM_CFLAGS -march=i586"
+ fi
+ JVM_CFLAGS="$JVM_CFLAGS -Wno-sometimes-uninitialized"
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \
+ -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
+ case $OPENJDK_TARGET_CPU_ARCH in
+ ppc )
+ # on ppc we don't prevent gcc to omit frame pointer but do prevent strict aliasing
+ CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ * )
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer"
+ CFLAGS_JDK="${CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ esac
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ JVM_CFLAGS="$JVM_CFLAGS -DSPARC_WORKS"
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
+ if test "x$OPENJDK_TARGET_CPU_ARCH" = xx86; then
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_TARGET_CPU_LEGACY_LIB"
+ fi
+
+ 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"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ JVM_CFLAGS="$JVM_CFLAGS -D_REENTRANT -D__STDC_FORMAT_MACROS"
+ CFLAGS_JDK="$CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
+ CXXFLAGS_JDK="$CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS $COMMON_CCXXFLAGS_JDK \
+ -MD -Zc:wchar_t- -W3 -wd4800 \
+ -DWIN32_LEAN_AND_MEAN \
+ -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
+ -D_WINSOCK_DEPRECATED_NO_WARNINGS \
+ -DWIN32 -DIAL"
+ if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64"
+ else
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86"
+ fi
+ # If building with Visual Studio 2010, we can still use _STATIC_CPPLIB to
+ # avoid bundling msvcpNNN.dll. Doesn't work with newer versions of visual
+ # studio.
+ if test "x$TOOLCHAIN_VERSION" = "x2010"; then
+ STATIC_CPPLIB_FLAGS="-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB"
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK $STATIC_CPPLIB_FLAGS"
+ JVM_CFLAGS="$JVM_CFLAGS $STATIC_CPPLIB_FLAGS"
+ fi
+ fi
+
+ ###############################################################################
+
+ # Adjust flags according to debug level.
+ case $DEBUG_LEVEL in
+ fastdebug | slowdebug )
+ CFLAGS_JDK="$CFLAGS_JDK $CFLAGS_DEBUG_SYMBOLS $CFLAGS_DEBUG_OPTIONS"
+ CXXFLAGS_JDK="$CXXFLAGS_JDK $CXXFLAGS_DEBUG_SYMBOLS $CXXFLAGS_DEBUG_OPTIONS"
+ ;;
+ release )
+ ;;
+ * )
+ as_fn_error $? "Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL" "$LINENO" 5
+ ;;
+ esac
+
+ # Set some common defines. These works for all compilers, but assume
+ # -D is universally accepted.
+
+ # Setup endianness
+ 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
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN="
+ else
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
+ fi
+ else
+ # Same goes for _BIG_ENDIAN. Do we really need to set *ENDIAN on Solaris if they
+ # are defined in the system?
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN="
+ else
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN"
+ fi
+ fi
+
+ # Setup target OS define. Use OS target name but in upper case.
+ OPENJDK_TARGET_OS_UPPERCASE=`$ECHO $OPENJDK_TARGET_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D$OPENJDK_TARGET_OS_UPPERCASE"
+
+ # Setup target CPU
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \
+ $OPENJDK_TARGET_ADD_LP64 \
+ -DARCH='\"$OPENJDK_TARGET_CPU_LEGACY\"' -D$OPENJDK_TARGET_CPU_LEGACY"
+
+ # Setup debug/release defines
+ if test "x$DEBUG_LEVEL" = xrelease; then
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DNDEBUG"
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DTRIMMED"
+ fi
+ else
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DDEBUG"
+ fi
+
+ # Set some additional per-OS defines.
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ JVM_CFLAGS="$JVM_CFLAGS -DLINUX"
+ JVM_CFLAGS="$JVM_CFLAGS -pipe $PICFLAG -fno-rtti -fno-exceptions \
+ -fvisibility=hidden -fno-strict-aliasing -fno-omit-frame-pointer"
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ JVM_CFLAGS="$JVM_CFLAGS -DSOLARIS"
+ JVM_CFLAGS="$JVM_CFLAGS -template=no%extdef -features=no%split_init \
+ -D_Crun_inline_placement -library=%none $PICFLAG -mt -features=no%except"
+ elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
+ JVM_CFLAGS="$JVM_CFLAGS -D_ALLBSD_SOURCE"
+ JVM_CFLAGS="$JVM_CFLAGS -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
+ JVM_CFLAGS="$JVM_CFLAGS -fno-rtti -fno-exceptions -fvisibility=hidden \
+ -mno-omit-leaf-frame-pointer -mstack-alignment=16 -pipe -fno-strict-aliasing \
+ -DMAC_OS_X_VERSION_MAX_ALLOWED=1070 -mmacosx-version-min=10.7.0 \
+ -fno-omit-frame-pointer"
+ elif test "x$OPENJDK_TARGET_OS" = xaix; then
+ JVM_CFLAGS="$JVM_CFLAGS -DAIX"
+ # We may need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
+ JVM_CFLAGS="$JVM_CFLAGS -qtune=balanced \
+ -qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
+ -qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
+ elif test "x$OPENJDK_TARGET_OS" = xbsd; then
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
+ elif test "x$OPENJDK_TARGET_OS" = xwindows; then
+ JVM_CFLAGS="$JVM_CFLAGS -D_WINDOWS -DWIN32 -D_JNI_IMPLEMENTATION_"
+ JVM_CFLAGS="$JVM_CFLAGS -nologo -W3 -MD -MP"
+ fi
+
+ # Set some additional per-CPU defines.
+ if test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = xwindows-x86; then
+ JVM_CFLAGS="$JVM_CFLAGS -arch:IA32"
+ elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
+ JVM_CFLAGS="$JVM_CFLAGS -xarch=sparc"
+ elif test "x$OPENJDK_TARGET_CPU" = xppc64; then
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ JVM_CFLAGS="$JVM_CFLAGS -minsert-sched-nops=regroup_exact -mno-multiple -mno-string"
+ # fixes `relocation truncated to fit' error for gcc 4.1.
+ JVM_CFLAGS="$JVM_CFLAGS -mminimal-toc"
+ # Use ppc64 instructions, but schedule for power5
+ JVM_CFLAGS="$JVM_CFLAGS -mcpu=powerpc64 -mtune=power5"
+ elif test "x$OPENJDK_TARGET_OS" = xaix; then
+ JVM_CFLAGS="$JVM_CFLAGS -qarch=ppc64"
+ fi
+ elif test "x$OPENJDK_TARGET_CPU" = xppc64le; then
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ JVM_CFLAGS="$JVM_CFLAGS -minsert-sched-nops=regroup_exact -mno-multiple -mno-string"
+ # Little endian machine uses ELFv2 ABI.
+ JVM_CFLAGS="$JVM_CFLAGS -DABI_ELFv2"
+ # Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI.
+ JVM_CFLAGS="$JVM_CFLAGS -mcpu=power8 -mtune=power8"
+ fi
+ elif test "x$OPENJDK_TARGET_CPU" = xs390x; then
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ JVM_CFLAGS="$JVM_CFLAGS -mbackchain -march=z10"
+ fi
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU_ENDIAN" = xlittle; then
+ JVM_CFLAGS="$JVM_CFLAGS -DVM_LITTLE_ENDIAN"
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ if test "x$OPENJDK_TARGET_OS" != xsolaris && test "x$OPENJDK_TARGET_OS" != xaix; then
+ # Solaris does not have _LP64=1 in the old build.
+ # xlc on AIX defines _LP64=1 by default and issues a warning if we redefine it.
+ JVM_CFLAGS="$JVM_CFLAGS -D_LP64=1"
+ fi
+ fi
+
+ # Set JVM_CFLAGS warning handling
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ JVM_CFLAGS="$JVM_CFLAGS -Wpointer-arith -Wsign-compare -Wunused-function \
+ -Wunused-value -Woverloaded-virtual"
+
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ # Need to assign to a variable since m4 is blocked from modifying parts in [].
+ REFERENCE_VERSION=4.8
+
+ if [[ "$REFERENCE_VERSION" =~ (.*\.){4} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to 4.8, only four parts (W.X.Y.Z) is supported" "$LINENO" 5
+ fi
+
+ if [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to 4.8, only parts < 99999 is supported" "$LINENO" 5
+ fi
+
+ # Version comparison method inspired by http://stackoverflow.com/a/24067243
+ COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$REFERENCE_VERSION"`
+
+ if test $COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then
+ :
+
+ # These flags either do not work or give spurious warnings prior to gcc 4.8.
+ JVM_CFLAGS="$JVM_CFLAGS -Wno-format-zero-length -Wtype-limits -Wuninitialized"
+
+
+ else
+ :
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ fi
+ if ! [[ " $JVM_VARIANTS " =~ " zero " ]] && ! [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
+ # Non-zero builds have stricter warnings
+ JVM_CFLAGS="$JVM_CFLAGS -Wreturn-type -Wundef -Wformat=2"
+ else
+ if test "x$TOOLCHAIN_TYPE" = xclang; then
+ # Some versions of llvm do not like -Wundef
+ JVM_CFLAGS="$JVM_CFLAGS -Wno-undef"
+ fi
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ JVM_CFLAGS="$JVM_CFLAGS -Wno-deprecated -Wpointer-arith \
+ -Wsign-compare -Wundef -Wunused-function -Wformat=2"
+ fi
+
+ # Additional macosx handling
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # Setting these parameters makes it an error to link to macosx APIs that are
+ # newer than the given OS version and makes the linked binaries compatible
+ # even if built on a newer version of the OS.
+ # The expected format is X.Y.Z
+ MACOSX_VERSION_MIN=10.7.0
+
+
+ # The macro takes the version with no dots, ex: 1070
+ # Let the flags variables get resolved in make for easier override on make
+ # command line.
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ fi
+
+ # Setup some hard coded includes
+ COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \
+ -I\$(SUPPORT_OUTPUTDIR)/modules_include/java.base \
+ -I${JDK_TOPDIR}/src/java.base/share/native/include \
+ -I${JDK_TOPDIR}/src/java.base/$OPENJDK_TARGET_OS/native/include \
+ -I${JDK_TOPDIR}/src/java.base/$OPENJDK_TARGET_OS_TYPE/native/include \
+ -I${JDK_TOPDIR}/src/java.base/share/native/libjava \
+ -I${JDK_TOPDIR}/src/java.base/$OPENJDK_TARGET_OS_TYPE/native/libjava"
+
+ # The shared libraries are compiled using the picflag.
+ CFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK \
+ $CFLAGS_JDK $EXTRA_CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
+ CXXFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK \
+ $CXXFLAGS_JDK $EXTRA_CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA"
+
+ # Executable flags
+ CFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $EXTRA_CFLAGS_JDK"
+ CXXFLAGS_JDKEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $EXTRA_CXXFLAGS_JDK"
+
+
+
+
+
+
+ # Setup LDFLAGS et al.
+ #
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ LDFLAGS_MICROSOFT="-nologo -opt:ref"
+ LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_MICROSOFT -incremental:no"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_MICROSOFT -opt:icf,8 -subsystem:windows -base:0x8000000"
+ if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
+ LDFLAGS_SAFESH="-safeseh"
+ LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_SAFESH"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_SAFESH"
+ # NOTE: Old build added -machine. Probably not needed.
+ JVM_LDFLAGS="$JVM_LDFLAGS -machine:I386"
+ else
+ JVM_LDFLAGS="$JVM_LDFLAGS -machine:AMD64"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ JVM_LDFLAGS="$JVM_LDFLAGS -mno-omit-leaf-frame-pointer -mstack-alignment=16 -stdlib=libstdc++ -fPIC"
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead.
+ JVM_LDFLAGS="$JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ # If this is a --hash-style=gnu system, use --hash-style=both, why?
+ # We have previously set HAS_GNU_HASH if this is the case
+ if test -n "$HAS_GNU_HASH"; then
+ LDFLAGS_HASH_STYLE="-Wl,--hash-style=both"
+ LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_HASH_STYLE"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_HASH_STYLE"
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ JVM_LDFLAGS="$JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ # And since we now know that the linker is gnu, then add -z defs, to forbid
+ # undefined symbols in object files.
+ LDFLAGS_NO_UNDEF_SYM="-Wl,-z,defs"
+ LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_NO_UNDEF_SYM"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_NO_UNDEF_SYM"
+ LDFLAGS_NO_EXEC_STACK="-Wl,-z,noexecstack"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_NO_EXEC_STACK"
+ if test "x$OPENJDK_TARGET_CPU" = xx86; then
+ JVM_LDFLAGS="$JVM_LDFLAGS -march=i586"
+ fi
+ case $DEBUG_LEVEL in
+ release )
+ # tell linker to optimize libraries.
+ # Should this be supplied to the OSS linker as well?
+ LDFLAGS_DEBUGLEVEL_release="-Wl,-O1"
+ LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_DEBUGLEVEL_release"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_DEBUGLEVEL_release"
+ if test "x$HAS_LINKER_RELRO" = "xtrue"; then
+ JVM_LDFLAGS="$JVM_LDFLAGS $LINKER_RELRO_FLAG"
+ fi
+ ;;
+ slowdebug )
+ # Hotspot always let the linker optimize
+ JVM_LDFLAGS="$JVM_LDFLAGS -Wl,-O1"
+ if test "x$HAS_LINKER_NOW" = "xtrue"; then
+ # do relocations at load
+ LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_NOW_FLAG"
+ LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_NOW_FLAG"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LINKER_NOW_FLAG"
+ fi
+ if test "x$HAS_LINKER_RELRO" = "xtrue"; then
+ # mark relocations read only
+ LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG"
+ LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LINKER_RELRO_FLAG"
+ fi
+ ;;
+ fastdebug )
+ # Hotspot always let the linker optimize
+ JVM_LDFLAGS="$JVM_LDFLAGS -Wl,-O1"
+ if test "x$HAS_LINKER_RELRO" = "xtrue"; then
+ # mark relocations read only
+ LDFLAGS_JDK="$LDFLAGS_JDK $LINKER_RELRO_FLAG"
+ LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LINKER_RELRO_FLAG"
+ fi
+ ;;
+ * )
+ as_fn_error $? "Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL" "$LINENO" 5
+ ;;
+ esac
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ LDFLAGS_SOLSTUDIO="-Wl,-z,defs"
+ LDFLAGS_JDK="$LDFLAGS_JDK $LDFLAGS_SOLSTUDIO -ztext"
+ LDFLAGS_CXX_SOLSTUDIO="-norunpath"
+ LDFLAGS_CXX_JDK="$LDFLAGS_CXX_JDK $LDFLAGS_CXX_SOLSTUDIO -xnolib"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_SOLSTUDIO -library=%none -mt $LDFLAGS_CXX_SOLSTUDIO -z noversion"
+ if test "x$OPENJDK_TARGET_CPU_ARCH" = "xsparc"; then
+ JVM_LDFLAGS="$JVM_LDFLAGS -xarch=sparc"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ LDFLAGS_XLC="-b64 -brtl -bnolibpath -bexpall -bernotok"
+ LDFLAGS_JDK="${LDFLAGS_JDK} $LDFLAGS_XLC"
+ JVM_LDFLAGS="$JVM_LDFLAGS $LDFLAGS_XLC"
+ fi
+
+ # Customize LDFLAGS for executables
+
+ LDFLAGS_JDKEXE="${LDFLAGS_JDK}"
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ if test "x$OPENJDK_TARGET_CPU_BITS" = "x64"; then
+ LDFLAGS_STACK_SIZE=1048576
+ else
+ LDFLAGS_STACK_SIZE=327680
+ fi
+ LDFLAGS_JDKEXE="${LDFLAGS_JDKEXE} /STACK:$LDFLAGS_STACK_SIZE"
+ elif test "x$OPENJDK_TARGET_OS" = xlinux; then
+ LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE -Wl,--allow-shlib-undefined"
+ fi
+
+ LDFLAGS_JDKEXE="${LDFLAGS_JDKEXE} ${EXTRA_LDFLAGS_JDK}"
+
+ # Customize LDFLAGS for libs
+ LDFLAGS_JDKLIB="${LDFLAGS_JDK}"
+
+ LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} ${SHARED_LIBRARY_FLAGS}"
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ JAVA_BASE_LDFLAGS="${JAVA_BASE_LDFLAGS} \
+ -libpath:${OUTPUT_ROOT}/support/modules_libs/java.base"
+ JDKLIB_LIBS=""
+ else
+ JAVA_BASE_LDFLAGS="${JAVA_BASE_LDFLAGS} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base"
+
+ if test "xTARGET" = "xTARGET"; then
+ # On some platforms (mac) the linker warns about non existing -L dirs.
+ # For any of the variants server, client or minimal, the dir matches the
+ # variant name. The "main" variant should be used for linking. For the
+ # rest, the dir is just server.
+ if [[ " $JVM_VARIANTS " =~ " server " ]] || [[ " $JVM_VARIANTS " =~ " client " ]] \
+ || [[ " $JVM_VARIANTS " =~ " minimal " ]] ; then
+ JAVA_BASE_LDFLAGS="${JAVA_BASE_LDFLAGS} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/$JVM_VARIANT_MAIN"
+ else
+ JAVA_BASE_LDFLAGS="${JAVA_BASE_LDFLAGS} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/server"
+ fi
+ elif test "xTARGET" = "xBUILD"; then
+ # When building a buildjdk, it's always only the server variant
+ JAVA_BASE_LDFLAGS="${JAVA_BASE_LDFLAGS} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/server"
+ fi
+
+ JDKLIB_LIBS="-ljava -ljvm"
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ JDKLIB_LIBS="$JDKLIB_LIBS -lc"
+ fi
+
+ fi
+
+LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} ${JAVA_BASE_LDFLAGS}"
+
+ # Set JVM_LIBS (per os)
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ JVM_LIBS="$JVM_LIBS -lm -ldl -lpthread"
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ # FIXME: This hard-coded path is not really proper.
+ if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ SOLARIS_LIBM_LIBS="/usr/lib/amd64/libm.so.1"
+ elif test "x$OPENJDK_TARGET_CPU" = xsparcv9; then
+ SOLARIS_LIBM_LIBS="/usr/lib/sparcv9/libm.so.1"
+ fi
+ JVM_LIBS="$JVM_LIBS -lsocket -lsched -ldl $SOLARIS_LIBM_LIBS -lCrun \
+ -lthread -ldoor -lc -ldemangle -lnsl -lkstat -lrt"
+ elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ JVM_LIBS="$JVM_LIBS -lm"
+ elif test "x$OPENJDK_TARGET_OS" = xaix; then
+ JVM_LIBS="$JVM_LIBS -Wl,-lC_r -lm -ldl -lpthread"
+ elif test "x$OPENJDK_TARGET_OS" = xbsd; then
+ JVM_LIBS="$JVM_LIBS -lm"
+ elif test "x$OPENJDK_TARGET_OS" = xwindows; then
+ JVM_LIBS="$JVM_LIBS kernel32.lib user32.lib gdi32.lib winspool.lib \
+ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \
+ wsock32.lib winmm.lib version.lib psapi.lib"
+ fi
+
+ # Set JVM_ASFLAGS
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ if test "x$OPENJDK_TARGET_CPU" = xx86; then
+ JVM_ASFLAGS="$JVM_ASFLAGS -march=i586"
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ JVM_ASFLAGS="$JVM_ASFLAGS -x assembler-with-cpp -mno-omit-leaf-frame-pointer -mstack-alignment=16"
+ fi
+
+ LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} ${EXTRA_LDFLAGS_JDK}"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Special extras...
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ if test "x$OPENJDK_BUILD_CPU_ARCH" = "xsparc"; then
+ OPENJDK_BUILD_CFLAGS_JDKLIB_EXTRA="${OPENJDK_BUILD_CFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
+ OPENJDK_BUILD_CXXFLAGS_JDKLIB_EXTRA="${OPENJDK_BUILD_CXXFLAGS_JDKLIB_EXTRA} -xregs=no%appl"
+ fi
+ OPENJDK_BUILD_CFLAGS_JDKLIB_EXTRA="${OPENJDK_BUILD_CFLAGS_JDKLIB_EXTRA} -errtags=yes -errfmt"
+ OPENJDK_BUILD_CXXFLAGS_JDKLIB_EXTRA="${OPENJDK_BUILD_CXXFLAGS_JDKLIB_EXTRA} -errtags=yes -errfmt"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
+ OPENJDK_BUILD_CXXFLAGS_JDK="${OPENJDK_BUILD_CXXFLAGS_JDK} -qchars=signed -qfullpath -qsaveopt"
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ OPENJDK_BUILD_CXXSTD_CXXFLAG="-std=gnu++98"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"$OPENJDK_BUILD_CXXSTD_CXXFLAG -Werror\"" >&5
+$as_echo_n "checking if the C++ compiler supports \"$OPENJDK_BUILD_CXXSTD_CXXFLAG -Werror\"... " >&6; }
+ supports=yes
+
+ saved_cxxflags="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAG $OPENJDK_BUILD_CXXSTD_CXXFLAG -Werror"
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int i;
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+ supports=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ CXXFLAGS="$saved_cxxflags"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+
+ else
+ :
+ OPENJDK_BUILD_CXXSTD_CXXFLAG=""
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+ OPENJDK_BUILD_CXXFLAGS_JDK="${OPENJDK_BUILD_CXXFLAGS_JDK} ${OPENJDK_BUILD_CXXSTD_CXXFLAG}"
+ OPENJDK_BUILD_JVM_CFLAGS="${OPENJDK_BUILD_JVM_CFLAGS} ${OPENJDK_BUILD_CXXSTD_CXXFLAG}"
+
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -D__solaris__"
+ OPENJDK_BUILD_CXXFLAGS_JDK="${OPENJDK_BUILD_CXXFLAGS_JDK} -D__solaris__"
+ fi
+
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} ${OPENJDK_BUILD_EXTRA_CFLAGS}"
+ OPENJDK_BUILD_CXXFLAGS_JDK="${OPENJDK_BUILD_CXXFLAGS_JDK} ${OPENJDK_BUILD_EXTRA_CXXFLAGS}"
+ OPENJDK_BUILD_LDFLAGS_JDK="${OPENJDK_BUILD_LDFLAGS_JDK} ${OPENJDK_BUILD_EXTRA_LDFLAGS}"
+
+ ###############################################################################
+ #
+ # Now setup the CFLAGS and LDFLAGS for the JDK build.
+ # Later we will also have CFLAGS and LDFLAGS for the hotspot subrepo build.
+ #
+
+ # Setup compiler/platform specific flags into
+ # OPENJDK_BUILD_CFLAGS_JDK - C Compiler flags
+ # OPENJDK_BUILD_CXXFLAGS_JDK - C++ Compiler flags
+ # OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK - common to C and C++
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_GNU_SOURCE"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_REENTRANT"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -fcheck-new"
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ # Force compatibility with i586 on 32 bit intel platforms.
+ OPENJDK_BUILD_COMMON_CCXXFLAGS="${OPENJDK_BUILD_COMMON_CCXXFLAGS} -march=i586"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -march=i586"
+ fi
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS $OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \
+ -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
+ case $OPENJDK_BUILD_CPU_ARCH in
+ arm )
+ # on arm we don't prevent gcc to omit frame pointer but do prevent strict aliasing
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -fno-strict-aliasing"
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="${OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK} -fsigned-char"
+ ;;
+ ppc )
+ # on ppc we don't prevent gcc to omit frame pointer but do prevent strict aliasing
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ s390 )
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer -mbackchain -march=z10"
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ * )
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer"
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ # Need to assign to a variable since m4 is blocked from modifying parts in [].
+ REFERENCE_VERSION=6
+
+ if [[ "$REFERENCE_VERSION" =~ (.*\.){4} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to 6, only four parts (W.X.Y.Z) is supported" "$LINENO" 5
+ fi
+
+ if [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to 6, only parts < 99999 is supported" "$LINENO" 5
+ fi
+
+ # Version comparison method inspired by http://stackoverflow.com/a/24067243
+ COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$REFERENCE_VERSION"`
+
+ if test $OPENJDK_BUILD_COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then
+ :
+
+ # These flags are required for GCC 6 builds as undefined behaviour in OpenJDK code
+ # runs afoul of the more aggressive versions of these optimisations.
+ # Notably, value range propagation now assumes that the this pointer of C++
+ # member functions is non-null.
+ NO_DELETE_NULL_POINTER_CHECKS_CFLAG="-fno-delete-null-pointer-checks"
+ NO_LIFETIME_DSE_CFLAG="-fno-lifetime-dse"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} and ${NO_LIFETIME_DSE_CFLAG}" >&5
+$as_echo "$as_me: GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} and ${NO_LIFETIME_DSE_CFLAG}" >&6;}
+ OPENJDK_BUILD_CFLAGS_JDK="$OPENJDK_BUILD_CFLAGS_JDK ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} ${NO_LIFETIME_DSE_CFLAG}"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS ${NO_DELETE_NULL_POINTER_CHECKS_CFLAG} ${NO_LIFETIME_DSE_CFLAG}"
+
+ else
+ :
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_GNU_SOURCE"
+
+ # Restrict the debug information created by Clang to avoid
+ # too big object files and speed the build up a little bit
+ # (see http://llvm.org/bugs/show_bug.cgi?id=7554)
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -flimit-debug-info"
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ # Force compatibility with i586 on 32 bit intel platforms.
+ OPENJDK_BUILD_COMMON_CCXXFLAGS="${OPENJDK_BUILD_COMMON_CCXXFLAGS} -march=i586"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -march=i586"
+ fi
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -Wno-sometimes-uninitialized"
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS $OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wformat=2 \
+ -pipe -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE"
+ case $OPENJDK_BUILD_CPU_ARCH in
+ ppc )
+ # on ppc we don't prevent gcc to omit frame pointer but do prevent strict aliasing
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ * )
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -fno-omit-frame-pointer"
+ OPENJDK_BUILD_CFLAGS_JDK="${OPENJDK_BUILD_CFLAGS_JDK} -fno-strict-aliasing"
+ ;;
+ esac
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -DSPARC_WORKS"
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS $OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -DTRACING -DMACRO_MEMSYS_OPS -DBREAKPTS"
+ if test "x$OPENJDK_BUILD_CPU_ARCH" = xx86; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -DcpuIntel -Di586 -D$OPENJDK_BUILD_CPU_LEGACY_LIB"
+ fi
+
+ OPENJDK_BUILD_CFLAGS_JDK="$OPENJDK_BUILD_CFLAGS_JDK -xc99=%none -xCC -errshort=tags -Xa -v -mt -W0,-noglobal"
+ OPENJDK_BUILD_CXXFLAGS_JDK="$OPENJDK_BUILD_CXXFLAGS_JDK -errtags=yes +w -mt -features=no%except -DCC_NOEX -norunpath -xnolib"
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_REENTRANT -D__STDC_FORMAT_MACROS"
+ OPENJDK_BUILD_CFLAGS_JDK="$OPENJDK_BUILD_CFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
+ OPENJDK_BUILD_CXXFLAGS_JDK="$OPENJDK_BUILD_CXXFLAGS_JDK -D_GNU_SOURCE -D_REENTRANT -D_LARGEFILE64_SOURCE -DSTDC"
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS $OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
+ -MD -Zc:wchar_t- -W3 -wd4800 \
+ -DWIN32_LEAN_AND_MEAN \
+ -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE \
+ -D_WINSOCK_DEPRECATED_NO_WARNINGS \
+ -DWIN32 -DIAL"
+ if test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_AMD64_ -Damd64"
+ else
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_X86_ -Dx86"
+ fi
+ # If building with Visual Studio 2010, we can still use _STATIC_CPPLIB to
+ # avoid bundling msvcpNNN.dll. Doesn't work with newer versions of visual
+ # studio.
+ if test "x$TOOLCHAIN_VERSION" = "x2010"; then
+ STATIC_CPPLIB_FLAGS="-D_STATIC_CPPLIB -D_DISABLE_DEPRECATE_STATIC_CPPLIB"
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK $STATIC_CPPLIB_FLAGS"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS $STATIC_CPPLIB_FLAGS"
+ fi
+ fi
+
+ ###############################################################################
+
+ # Adjust flags according to debug level.
+ case $DEBUG_LEVEL in
+ fastdebug | slowdebug )
+ OPENJDK_BUILD_CFLAGS_JDK="$OPENJDK_BUILD_CFLAGS_JDK $CFLAGS_DEBUG_SYMBOLS $CFLAGS_DEBUG_OPTIONS"
+ OPENJDK_BUILD_CXXFLAGS_JDK="$OPENJDK_BUILD_CXXFLAGS_JDK $CXXFLAGS_DEBUG_SYMBOLS $CXXFLAGS_DEBUG_OPTIONS"
+ ;;
+ release )
+ ;;
+ * )
+ as_fn_error $? "Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL" "$LINENO" 5
+ ;;
+ esac
+
+ # Set some common defines. These works for all compilers, but assume
+ # -D is universally accepted.
+
+ # Setup endianness
+ if test "x$OPENJDK_BUILD_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_BUILD_OS" = xsolaris; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN="
+ else
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_LITTLE_ENDIAN"
+ fi
+ else
+ # Same goes for _BIG_ENDIAN. Do we really need to set *ENDIAN on Solaris if they
+ # are defined in the system?
+ if test "x$OPENJDK_BUILD_OS" = xsolaris; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN="
+ else
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_BIG_ENDIAN"
+ fi
+ fi
+
+ # Setup target OS define. Use OS target name but in upper case.
+ OPENJDK_BUILD_OS_UPPERCASE=`$ECHO $OPENJDK_BUILD_OS | $TR 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D$OPENJDK_BUILD_OS_UPPERCASE"
+
+ # Setup target CPU
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
+ $OPENJDK_BUILD_ADD_LP64 \
+ -DARCH='\"$OPENJDK_BUILD_CPU_LEGACY\"' -D$OPENJDK_BUILD_CPU_LEGACY"
+
+ # Setup debug/release defines
+ if test "x$DEBUG_LEVEL" = xrelease; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -DNDEBUG"
+ if test "x$OPENJDK_BUILD_OS" = xsolaris; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -DTRIMMED"
+ fi
+ else
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -DDEBUG"
+ fi
+
+ # Set some additional per-OS defines.
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -DLINUX"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -pipe $PICFLAG -fno-rtti -fno-exceptions \
+ -fvisibility=hidden -fno-strict-aliasing -fno-omit-frame-pointer"
+ elif test "x$OPENJDK_BUILD_OS" = xsolaris; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -DSOLARIS"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -template=no%extdef -features=no%split_init \
+ -D_Crun_inline_placement -library=%none $PICFLAG -mt -features=no%except"
+ elif test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE -D_DARWIN_UNLIMITED_SELECT"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_ALLBSD_SOURCE"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -fno-rtti -fno-exceptions -fvisibility=hidden \
+ -mno-omit-leaf-frame-pointer -mstack-alignment=16 -pipe -fno-strict-aliasing \
+ -DMAC_OS_X_VERSION_MAX_ALLOWED=1070 -mmacosx-version-min=10.7.0 \
+ -fno-omit-frame-pointer"
+ elif test "x$OPENJDK_BUILD_OS" = xaix; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -DAIX"
+ # We may need '-qminimaltoc' or '-qpic=large -bbigtoc' if the TOC overflows.
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -qtune=balanced \
+ -qalias=noansi -qstrict -qtls=default -qlanglvl=c99vla \
+ -qlanglvl=noredefmac -qnortti -qnoeh -qignerrno"
+ elif test "x$OPENJDK_BUILD_OS" = xbsd; then
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -D_ALLBSD_SOURCE"
+ elif test "x$OPENJDK_BUILD_OS" = xwindows; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_WINDOWS -DWIN32 -D_JNI_IMPLEMENTATION_"
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -nologo -W3 -MD -MP"
+ fi
+
+ # Set some additional per-CPU defines.
+ if test "x$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU" = xwindows-x86; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -arch:IA32"
+ elif test "x$OPENJDK_BUILD_CPU" = xsparcv9; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -xarch=sparc"
+ elif test "x$OPENJDK_BUILD_CPU" = xppc64; then
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -minsert-sched-nops=regroup_exact -mno-multiple -mno-string"
+ # fixes `relocation truncated to fit' error for gcc 4.1.
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -mminimal-toc"
+ # Use ppc64 instructions, but schedule for power5
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -mcpu=powerpc64 -mtune=power5"
+ elif test "x$OPENJDK_BUILD_OS" = xaix; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -qarch=ppc64"
+ fi
+ elif test "x$OPENJDK_BUILD_CPU" = xppc64le; then
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -minsert-sched-nops=regroup_exact -mno-multiple -mno-string"
+ # Little endian machine uses ELFv2 ABI.
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -DABI_ELFv2"
+ # Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI.
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -mcpu=power8 -mtune=power8"
+ fi
+ elif test "x$OPENJDK_BUILD_CPU" = xs390x; then
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -mbackchain -march=z10"
+ fi
+ fi
+
+ if test "x$OPENJDK_BUILD_CPU_ENDIAN" = xlittle; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -DVM_LITTLE_ENDIAN"
+ fi
+
+ if test "x$OPENJDK_BUILD_CPU_BITS" = x64; then
+ if test "x$OPENJDK_BUILD_OS" != xsolaris && test "x$OPENJDK_BUILD_OS" != xaix; then
+ # Solaris does not have _LP64=1 in the old build.
+ # xlc on AIX defines _LP64=1 by default and issues a warning if we redefine it.
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -D_LP64=1"
+ fi
+ fi
+
+ # Set OPENJDK_BUILD_JVM_CFLAGS warning handling
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -Wpointer-arith -Wsign-compare -Wunused-function \
+ -Wunused-value -Woverloaded-virtual"
+
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ # Need to assign to a variable since m4 is blocked from modifying parts in [].
+ REFERENCE_VERSION=4.8
+
+ if [[ "$REFERENCE_VERSION" =~ (.*\.){4} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to 4.8, only four parts (W.X.Y.Z) is supported" "$LINENO" 5
+ fi
+
+ if [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ; then
+ as_fn_error $? "Internal error: Cannot compare to 4.8, only parts < 99999 is supported" "$LINENO" 5
+ fi
+
+ # Version comparison method inspired by http://stackoverflow.com/a/24067243
+ COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", $1, $2, $3, $4) }' <<< "$REFERENCE_VERSION"`
+
+ if test $OPENJDK_BUILD_COMPARABLE_ACTUAL_VERSION -ge $COMPARABLE_REFERENCE_VERSION ; then
+ :
+
+ # These flags either do not work or give spurious warnings prior to gcc 4.8.
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -Wno-format-zero-length -Wtype-limits -Wuninitialized"
+
+
+ else
+ :
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ fi
+ if ! [[ " $JVM_VARIANTS " =~ " zero " ]] && ! [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
+ # Non-zero builds have stricter warnings
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -Wreturn-type -Wundef -Wformat=2"
+ else
+ if test "x$TOOLCHAIN_TYPE" = xclang; then
+ # Some versions of llvm do not like -Wundef
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -Wno-undef"
+ fi
+ fi
+ elif test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -Wno-deprecated -Wpointer-arith \
+ -Wsign-compare -Wundef -Wunused-function -Wformat=2"
+ fi
+
+ # Additional macosx handling
+ if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ # Setting these parameters makes it an error to link to macosx APIs that are
+ # newer than the given OS version and makes the linked binaries compatible
+ # even if built on a newer version of the OS.
+ # The expected format is X.Y.Z
+ MACOSX_VERSION_MIN=10.7.0
+
+
+ # The macro takes the version with no dots, ex: 1070
+ # Let the flags variables get resolved in make for easier override on make
+ # command line.
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"
+ fi
+
+ # Setup some hard coded includes
+ OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
+ -I\$(SUPPORT_OUTPUTDIR)/modules_include/java.base \
+ -I${JDK_TOPDIR}/src/java.base/share/native/include \
+ -I${JDK_TOPDIR}/src/java.base/$OPENJDK_BUILD_OS/native/include \
+ -I${JDK_TOPDIR}/src/java.base/$OPENJDK_BUILD_OS_TYPE/native/include \
+ -I${JDK_TOPDIR}/src/java.base/share/native/libjava \
+ -I${JDK_TOPDIR}/src/java.base/$OPENJDK_BUILD_OS_TYPE/native/libjava"
+
+ # The shared libraries are compiled using the picflag.
+ OPENJDK_BUILD_CFLAGS_JDKLIB="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
+ $OPENJDK_BUILD_CFLAGS_JDK $OPENJDK_BUILD_EXTRA_CFLAGS_JDK $PICFLAG $OPENJDK_BUILD_CFLAGS_JDKLIB_EXTRA"
+ OPENJDK_BUILD_CXXFLAGS_JDKLIB="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
+ $OPENJDK_BUILD_CXXFLAGS_JDK $OPENJDK_BUILD_EXTRA_CXXFLAGS_JDK $PICFLAG $OPENJDK_BUILD_CXXFLAGS_JDKLIB_EXTRA"
+
+ # Executable flags
+ OPENJDK_BUILD_CFLAGS_JDKEXE="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK $OPENJDK_BUILD_CFLAGS_JDK $OPENJDK_BUILD_EXTRA_CFLAGS_JDK"
+ OPENJDK_BUILD_CXXFLAGS_JDKEXE="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK $OPENJDK_BUILD_CXXFLAGS_JDK $OPENJDK_BUILD_EXTRA_CXXFLAGS_JDK"
+
+
+
+
+
+
+ # Setup LDFLAGS et al.
+ #
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ LDFLAGS_MICROSOFT="-nologo -opt:ref"
+ OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK $LDFLAGS_MICROSOFT -incremental:no"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_MICROSOFT -opt:icf,8 -subsystem:windows -base:0x8000000"
+ if test "x$OPENJDK_BUILD_CPU_BITS" = "x32"; then
+ LDFLAGS_SAFESH="-safeseh"
+ OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK $LDFLAGS_SAFESH"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_SAFESH"
+ # NOTE: Old build added -machine. Probably not needed.
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -machine:I386"
+ else
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -machine:AMD64"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -mno-omit-leaf-frame-pointer -mstack-alignment=16 -stdlib=libstdc++ -fPIC"
+ if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ # FIXME: We should really generalize SET_SHARED_LIBRARY_ORIGIN instead.
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ # If this is a --hash-style=gnu system, use --hash-style=both, why?
+ # We have previously set HAS_GNU_HASH if this is the case
+ if test -n "$HAS_GNU_HASH"; then
+ OPENJDK_BUILD_LDFLAGS_HASH_STYLE="-Wl,--hash-style=both"
+ OPENJDK_BUILD_LDFLAGS_JDK="${OPENJDK_BUILD_LDFLAGS_JDK} $OPENJDK_BUILD_LDFLAGS_HASH_STYLE"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $OPENJDK_BUILD_LDFLAGS_HASH_STYLE"
+ fi
+ if test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -Wl,-rpath,@loader_path/. -Wl,-rpath,@loader_path/.."
+ fi
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ # And since we now know that the linker is gnu, then add -z defs, to forbid
+ # undefined symbols in object files.
+ LDFLAGS_NO_UNDEF_SYM="-Wl,-z,defs"
+ OPENJDK_BUILD_LDFLAGS_JDK="${OPENJDK_BUILD_LDFLAGS_JDK} $LDFLAGS_NO_UNDEF_SYM"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_NO_UNDEF_SYM"
+ LDFLAGS_NO_EXEC_STACK="-Wl,-z,noexecstack"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_NO_EXEC_STACK"
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -march=i586"
+ fi
+ case $DEBUG_LEVEL in
+ release )
+ # tell linker to optimize libraries.
+ # Should this be supplied to the OSS linker as well?
+ LDFLAGS_DEBUGLEVEL_release="-Wl,-O1"
+ OPENJDK_BUILD_LDFLAGS_JDK="${OPENJDK_BUILD_LDFLAGS_JDK} $LDFLAGS_DEBUGLEVEL_release"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_DEBUGLEVEL_release"
+ if test "x$HAS_LINKER_RELRO" = "xtrue"; then
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LINKER_RELRO_FLAG"
+ fi
+ ;;
+ slowdebug )
+ # Hotspot always let the linker optimize
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -Wl,-O1"
+ if test "x$HAS_LINKER_NOW" = "xtrue"; then
+ # do relocations at load
+ OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK $LINKER_NOW_FLAG"
+ OPENJDK_BUILD_LDFLAGS_CXX_JDK="$OPENJDK_BUILD_LDFLAGS_CXX_JDK $LINKER_NOW_FLAG"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LINKER_NOW_FLAG"
+ fi
+ if test "x$HAS_LINKER_RELRO" = "xtrue"; then
+ # mark relocations read only
+ OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK $LINKER_RELRO_FLAG"
+ OPENJDK_BUILD_LDFLAGS_CXX_JDK="$OPENJDK_BUILD_LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LINKER_RELRO_FLAG"
+ fi
+ ;;
+ fastdebug )
+ # Hotspot always let the linker optimize
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -Wl,-O1"
+ if test "x$HAS_LINKER_RELRO" = "xtrue"; then
+ # mark relocations read only
+ OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK $LINKER_RELRO_FLAG"
+ OPENJDK_BUILD_LDFLAGS_CXX_JDK="$OPENJDK_BUILD_LDFLAGS_CXX_JDK $LINKER_RELRO_FLAG"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LINKER_RELRO_FLAG"
+ fi
+ ;;
+ * )
+ as_fn_error $? "Unrecognized \$DEBUG_LEVEL: $DEBUG_LEVEL" "$LINENO" 5
+ ;;
+ esac
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ LDFLAGS_SOLSTUDIO="-Wl,-z,defs"
+ OPENJDK_BUILD_LDFLAGS_JDK="$OPENJDK_BUILD_LDFLAGS_JDK $LDFLAGS_SOLSTUDIO -ztext"
+ LDFLAGS_CXX_SOLSTUDIO="-norunpath"
+ OPENJDK_BUILD_LDFLAGS_CXX_JDK="$OPENJDK_BUILD_LDFLAGS_CXX_JDK $LDFLAGS_CXX_SOLSTUDIO -xnolib"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_SOLSTUDIO -library=%none -mt $LDFLAGS_CXX_SOLSTUDIO -z noversion"
+ if test "x$OPENJDK_BUILD_CPU_ARCH" = "xsparc"; then
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS -xarch=sparc"
+ fi
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ LDFLAGS_XLC="-b64 -brtl -bnolibpath -bexpall -bernotok"
+ OPENJDK_BUILD_LDFLAGS_JDK="${OPENJDK_BUILD_LDFLAGS_JDK} $LDFLAGS_XLC"
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $LDFLAGS_XLC"
+ fi
+
+ # Customize LDFLAGS for executables
+
+ OPENJDK_BUILD_LDFLAGS_JDKEXE="${OPENJDK_BUILD_LDFLAGS_JDK}"
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ if test "x$OPENJDK_BUILD_CPU_BITS" = "x64"; then
+ LDFLAGS_STACK_SIZE=1048576
+ else
+ LDFLAGS_STACK_SIZE=327680
+ fi
+ OPENJDK_BUILD_LDFLAGS_JDKEXE="${OPENJDK_BUILD_LDFLAGS_JDKEXE} /STACK:$LDFLAGS_STACK_SIZE"
+ elif test "x$OPENJDK_BUILD_OS" = xlinux; then
+ OPENJDK_BUILD_LDFLAGS_JDKEXE="$OPENJDK_BUILD_LDFLAGS_JDKEXE -Wl,--allow-shlib-undefined"
+ fi
+
+ OPENJDK_BUILD_LDFLAGS_JDKEXE="${OPENJDK_BUILD_LDFLAGS_JDKEXE} ${OPENJDK_BUILD_EXTRA_LDFLAGS_JDK}"
+
+ # Customize LDFLAGS for libs
+ OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDK}"
+
+ OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} ${SHARED_LIBRARY_FLAGS}"
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ OPENJDK_BUILD_JAVA_BASE_LDFLAGS="${OPENJDK_BUILD_JAVA_BASE_LDFLAGS} \
+ -libpath:${OUTPUT_ROOT}/support/modules_libs/java.base"
+ OPENJDK_BUILD_JDKLIB_LIBS=""
+ else
+ OPENJDK_BUILD_JAVA_BASE_LDFLAGS="${OPENJDK_BUILD_JAVA_BASE_LDFLAGS} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base"
+
+ if test "xBUILD" = "xTARGET"; then
+ # On some platforms (mac) the linker warns about non existing -L dirs.
+ # For any of the variants server, client or minimal, the dir matches the
+ # variant name. The "main" variant should be used for linking. For the
+ # rest, the dir is just server.
+ if [[ " $JVM_VARIANTS " =~ " server " ]] || [[ " $JVM_VARIANTS " =~ " client " ]] \
+ || [[ " $JVM_VARIANTS " =~ " minimal " ]] ; then
+ OPENJDK_BUILD_JAVA_BASE_LDFLAGS="${OPENJDK_BUILD_JAVA_BASE_LDFLAGS} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/$JVM_VARIANT_MAIN"
+ else
+ OPENJDK_BUILD_JAVA_BASE_LDFLAGS="${OPENJDK_BUILD_JAVA_BASE_LDFLAGS} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/server"
+ fi
+ elif test "xBUILD" = "xBUILD"; then
+ # When building a buildjdk, it's always only the server variant
+ OPENJDK_BUILD_JAVA_BASE_LDFLAGS="${OPENJDK_BUILD_JAVA_BASE_LDFLAGS} \
+ -L\$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/server"
+ fi
+
+ OPENJDK_BUILD_JDKLIB_LIBS="-ljava -ljvm"
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ OPENJDK_BUILD_JDKLIB_LIBS="$OPENJDK_BUILD_JDKLIB_LIBS -lc"
+ fi
+
+ fi
+
+OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} ${OPENJDK_BUILD_JAVA_BASE_LDFLAGS}"
+
+ # Set OPENJDK_BUILD_JVM_LIBS (per os)
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS -lm -ldl -lpthread"
+ elif test "x$OPENJDK_BUILD_OS" = xsolaris; then
+ # FIXME: This hard-coded path is not really proper.
+ if test "x$OPENJDK_BUILD_CPU" = xx86_64; then
+ OPENJDK_BUILD_SOLARIS_LIBM_LIBS="/usr/lib/amd64/libm.so.1"
+ elif test "x$OPENJDK_BUILD_CPU" = xsparcv9; then
+ OPENJDK_BUILD_SOLARIS_LIBM_LIBS="/usr/lib/sparcv9/libm.so.1"
+ fi
+ OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS -lsocket -lsched -ldl $SOLARIS_LIBM_LIBS -lCrun \
+ -lthread -ldoor -lc -ldemangle -lnsl -lkstat -lrt"
+ elif test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS -lm"
+ elif test "x$OPENJDK_BUILD_OS" = xaix; then
+ OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS -Wl,-lC_r -lm -ldl -lpthread"
+ elif test "x$OPENJDK_BUILD_OS" = xbsd; then
+ OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS -lm"
+ elif test "x$OPENJDK_BUILD_OS" = xwindows; then
+ OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS kernel32.lib user32.lib gdi32.lib winspool.lib \
+ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib \
+ wsock32.lib winmm.lib version.lib psapi.lib"
+ fi
+
+ # Set OPENJDK_BUILD_JVM_ASFLAGS
+ if test "x$OPENJDK_BUILD_OS" = xlinux; then
+ if test "x$OPENJDK_BUILD_CPU" = xx86; then
+ OPENJDK_BUILD_JVM_ASFLAGS="$OPENJDK_BUILD_JVM_ASFLAGS -march=i586"
+ fi
+ elif test "x$OPENJDK_BUILD_OS" = xmacosx; then
+ OPENJDK_BUILD_JVM_ASFLAGS="$OPENJDK_BUILD_JVM_ASFLAGS -x assembler-with-cpp -mno-omit-leaf-frame-pointer -mstack-alignment=16"
+ fi
+
+ OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} ${OPENJDK_BUILD_EXTRA_LDFLAGS_JDK}"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Tests are only ever compiled for TARGET
+ # Flags for compiling test libraries
+ CFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK $PICFLAG $CFLAGS_JDKLIB_EXTRA"
+ CXXFLAGS_TESTLIB="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK $PICFLAG $CXXFLAGS_JDKLIB_EXTRA"
+
+ # Flags for compiling test executables
+ CFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CFLAGS_JDK"
+ CXXFLAGS_TESTEXE="$COMMON_CCXXFLAGS_JDK $CXXFLAGS_JDK"
+
+
+
+
+
+
+ LDFLAGS_TESTLIB="$LDFLAGS_JDKLIB"
+ LDFLAGS_TESTEXE="$LDFLAGS_JDKEXE $JAVA_BASE_LDFLAGS"
+
+
+
+
+
+
+ # Check that the compiler supports -mX (or -qX on AIX) flags
+ # Set COMPILER_SUPPORTS_TARGET_BITS_FLAG to 'true' if it does
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"" >&5
+$as_echo_n "checking if the C compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"... " >&6; }
+ supports=yes
+
+ saved_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int i;
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ supports=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ CFLAGS="$saved_cflags"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ C_COMP_SUPPORTS="yes"
+ else
+ :
+ C_COMP_SUPPORTS="no"
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"" >&5
+$as_echo_n "checking if the C++ compiler supports \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"... " >&6; }
+ supports=yes
+
+ saved_cxxflags="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAG ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int i;
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+ supports=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ CXXFLAGS="$saved_cxxflags"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ CXX_COMP_SUPPORTS="yes"
+ else
+ :
+ CXX_COMP_SUPPORTS="no"
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if both compilers support \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"" >&5
+$as_echo_n "checking if both compilers support \"${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}\"... " >&6; }
+ supports=no
+ if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ COMPILER_SUPPORTS_TARGET_BITS_FLAG=true
+ else
+ :
+ COMPILER_SUPPORTS_TARGET_BITS_FLAG=false
+ fi
+
+
+
+
+
+
+
+
+ # Check whether --enable-warnings-as-errors was given.
+if test "${enable_warnings_as_errors+set}" = set; then :
+ enableval=$enable_warnings_as_errors;
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if native warnings are errors" >&5
+$as_echo_n "checking if native warnings are errors... " >&6; }
+ if test "x$enable_warnings_as_errors" = "xyes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (explicitly set)" >&5
+$as_echo "yes (explicitly set)" >&6; }
+ WARNINGS_AS_ERRORS=true
+ elif test "x$enable_warnings_as_errors" = "xno"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ WARNINGS_AS_ERRORS=false
+ elif test "x$enable_warnings_as_errors" = "x"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (default)" >&5
+$as_echo "yes (default)" >&6; }
+ WARNINGS_AS_ERRORS=true
+ else
+ as_fn_error $? "--enable-warnings-as-errors accepts no argument" "$LINENO" 5
+ fi
+
+
+
+ case "${TOOLCHAIN_TYPE}" in
+ microsoft)
+ DISABLE_WARNING_PREFIX="-wd"
+ CFLAGS_WARNINGS_ARE_ERRORS="-WX"
+ ;;
+ solstudio)
+ DISABLE_WARNING_PREFIX="-erroff="
+ CFLAGS_WARNINGS_ARE_ERRORS="-errtags -errwarn=%all"
+ ;;
+ gcc)
+ # Prior to gcc 4.4, a -Wno-X where X is unknown for that version of gcc will cause an error
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C compiler supports \"-Wno-this-is-a-warning-that-do-not-exist\"" >&5
+$as_echo_n "checking if the C compiler supports \"-Wno-this-is-a-warning-that-do-not-exist\"... " >&6; }
+ supports=yes
+
+ saved_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS -Wno-this-is-a-warning-that-do-not-exist"
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int i;
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ supports=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ CFLAGS="$saved_cflags"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ C_COMP_SUPPORTS="yes"
+ else
+ :
+ C_COMP_SUPPORTS="no"
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"-Wno-this-is-a-warning-that-do-not-exist\"" >&5
+$as_echo_n "checking if the C++ compiler supports \"-Wno-this-is-a-warning-that-do-not-exist\"... " >&6; }
+ supports=yes
+
+ saved_cxxflags="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAG -Wno-this-is-a-warning-that-do-not-exist"
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int i;
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+ supports=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ CXXFLAGS="$saved_cxxflags"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ CXX_COMP_SUPPORTS="yes"
+ else
+ :
+ CXX_COMP_SUPPORTS="no"
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if both compilers support \"-Wno-this-is-a-warning-that-do-not-exist\"" >&5
+$as_echo_n "checking if both compilers support \"-Wno-this-is-a-warning-that-do-not-exist\"... " >&6; }
+ supports=no
+ if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ GCC_CAN_DISABLE_WARNINGS=true
+ else
+ :
+ GCC_CAN_DISABLE_WARNINGS=false
+
+ fi
+
+
+
+
+
+
+ if test "x$GCC_CAN_DISABLE_WARNINGS" = "xtrue"; then
+ DISABLE_WARNING_PREFIX="-Wno-"
+ else
+ DISABLE_WARNING_PREFIX=
+ fi
+ CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
+ # Repeate the check for the BUILD_CC and BUILD_CXX. Need to also reset
+ # CFLAGS since any target specific flags will likely not work with the
+ # build compiler
+ CC_OLD="$CC"
+ CXX_OLD="$CXX"
+ CC="$BUILD_CC"
+ CXX="$BUILD_CXX"
+ CFLAGS_OLD="$CFLAGS"
+ CFLAGS=""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C compiler supports \"-Wno-this-is-a-warning-that-do-not-exist\"" >&5
+$as_echo_n "checking if the C compiler supports \"-Wno-this-is-a-warning-that-do-not-exist\"... " >&6; }
+ supports=yes
+
+ saved_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS -Wno-this-is-a-warning-that-do-not-exist"
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int i;
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ supports=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ CFLAGS="$saved_cflags"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ C_COMP_SUPPORTS="yes"
+ else
+ :
+ C_COMP_SUPPORTS="no"
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Execute function body
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the C++ compiler supports \"-Wno-this-is-a-warning-that-do-not-exist\"" >&5
+$as_echo_n "checking if the C++ compiler supports \"-Wno-this-is-a-warning-that-do-not-exist\"... " >&6; }
+ supports=yes
+
+ saved_cxxflags="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAG -Wno-this-is-a-warning-that-do-not-exist"
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int i;
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+ supports=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ CXXFLAGS="$saved_cxxflags"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ CXX_COMP_SUPPORTS="yes"
+ else
+ :
+ CXX_COMP_SUPPORTS="no"
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if both compilers support \"-Wno-this-is-a-warning-that-do-not-exist\"" >&5
+$as_echo_n "checking if both compilers support \"-Wno-this-is-a-warning-that-do-not-exist\"... " >&6; }
+ supports=no
+ if test "x$C_COMP_SUPPORTS" = "xyes" -a "x$CXX_COMP_SUPPORTS" = "xyes"; then supports=yes; fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $supports" >&5
+$as_echo "$supports" >&6; }
+ if test "x$supports" = "xyes" ; then
+ :
+ BUILD_CC_CAN_DISABLE_WARNINGS=true
+ else
+ :
+ BUILD_CC_CAN_DISABLE_WARNINGS=false
+
+ fi
+
+
+
+
+
+
+ if test "x$BUILD_CC_CAN_DISABLE_WARNINGS" = "xtrue"; then
+ BUILD_CC_DISABLE_WARNING_PREFIX="-Wno-"
+ else
+ BUILD_CC_DISABLE_WARNING_PREFIX=
+ fi
+ CC="$CC_OLD"
+ CXX="$CXX_OLD"
+ CFLAGS="$CFLAGS_OLD"
+ ;;
+ clang)
+ DISABLE_WARNING_PREFIX="-Wno-"
+ CFLAGS_WARNINGS_ARE_ERRORS="-Werror"
+ ;;
+ xlc)
+ DISABLE_WARNING_PREFIX="-qsuppress="
+ CFLAGS_WARNINGS_ARE_ERRORS="-qhalt=w"
+ ;;
+ esac
+
+
+
+
+
+# Setup debug symbols (need objcopy from the toolchain for that)
+
+ #
+ # NATIVE_DEBUG_SYMBOLS
+ # This must be done after the toolchain is setup, since we're looking at objcopy.
+ #
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking what type of native debug symbols to use" >&5
+$as_echo_n "checking what type of native debug symbols to use... " >&6; }
+
+# Check whether --with-native-debug-symbols was given.
+if test "${with_native_debug_symbols+set}" = set; then :
+ withval=$with_native_debug_symbols;
+ if test "x$OPENJDK_TARGET_OS" = xaix; then
+ if test "x$withval" = xexternal || test "x$withval" = xzipped; then
+ as_fn_error $? "AIX only supports the parameters 'none' and 'internal' for --with-native-debug-symbols" "$LINENO" 5
+ fi
+ fi
+
+else
+
+ if test "x$OPENJDK_TARGET_OS" = xaix; then
+ # AIX doesn't support 'zipped' so use 'internal' as default
+ with_native_debug_symbols="internal"
+ else
+ if test "x$STATIC_BUILD" = xtrue; then
+ with_native_debug_symbols="none"
+ else
+ with_native_debug_symbols="zipped"
+ fi
+ fi
+
+fi
+
+ NATIVE_DEBUG_SYMBOLS=$with_native_debug_symbols
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NATIVE_DEBUG_SYMBOLS" >&5
+$as_echo "$NATIVE_DEBUG_SYMBOLS" >&6; }
+
+ if test "x$NATIVE_DEBUG_SYMBOLS" = xzipped; then
+
+ if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
+ if test "x$OBJCOPY" = x; then
+ # enabling of enable-debug-symbols and can't find objcopy
+ # this is an error
+ as_fn_error $? "Unable to find objcopy, cannot enable native debug symbols" "$LINENO" 5
+ fi
+ fi
+
+ COMPILE_WITH_DEBUG_SYMBOLS=true
+ COPY_DEBUG_SYMBOLS=true
+ ZIP_EXTERNAL_DEBUG_SYMBOLS=true
+ elif test "x$NATIVE_DEBUG_SYMBOLS" = xnone; then
+ COMPILE_WITH_DEBUG_SYMBOLS=false
+ COPY_DEBUG_SYMBOLS=false
+ ZIP_EXTERNAL_DEBUG_SYMBOLS=false
+ elif test "x$NATIVE_DEBUG_SYMBOLS" = xinternal; then
+ COMPILE_WITH_DEBUG_SYMBOLS=true
+ COPY_DEBUG_SYMBOLS=false
+ ZIP_EXTERNAL_DEBUG_SYMBOLS=false
+ elif test "x$NATIVE_DEBUG_SYMBOLS" = xexternal; then
+
+ if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
+ if test "x$OBJCOPY" = x; then
+ # enabling of enable-debug-symbols and can't find objcopy
+ # this is an error
+ as_fn_error $? "Unable to find objcopy, cannot enable native debug symbols" "$LINENO" 5
+ fi
+ fi
+
+ COMPILE_WITH_DEBUG_SYMBOLS=true
+ COPY_DEBUG_SYMBOLS=true
+ ZIP_EXTERNAL_DEBUG_SYMBOLS=false
+ else
+ as_fn_error $? "Allowed native debug symbols are: none, internal, external, zipped" "$LINENO" 5
+ fi
+
+ # --enable-debug-symbols is deprecated.
+ # Please use --with-native-debug-symbols=[internal,external,zipped] .
+
+ # Check whether --enable-debug-symbols was given.
+if test "${enable_debug_symbols+set}" = set; then :
+ enableval=$enable_debug_symbols;
+fi
+
+ if test "x$enable_debug_symbols" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --enable-debug-symbols is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --enable-debug-symbols is deprecated and will be ignored." >&2;}
+
+ if test "xPlease use --with-native-debug-symbols=[internal,external,zipped] ." != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please use --with-native-debug-symbols=[internal,external,zipped] ." >&5
+$as_echo "$as_me: WARNING: Please use --with-native-debug-symbols=[internal,external,zipped] ." >&2;}
+ fi
+
+ fi
+
+
+ # --enable-zip-debug-info is deprecated.
+ # Please use --with-native-debug-symbols=zipped .
+
+ # Check whether --enable-zip-debug-info was given.
+if test "${enable_zip_debug_info+set}" = set; then :
+ enableval=$enable_zip_debug_info;
+fi
+
+ if test "x$enable_zip_debug_info" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --enable-zip-debug-info is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --enable-zip-debug-info is deprecated and will be ignored." >&2;}
+
+ if test "xPlease use --with-native-debug-symbols=zipped ." != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please use --with-native-debug-symbols=zipped ." >&5
+$as_echo "$as_me: WARNING: Please use --with-native-debug-symbols=zipped ." >&2;}
+ fi
+
+ fi
+
+
+
+
+
+
+
+ # Check whether --enable-native-coverage was given.
+if test "${enable_native_coverage+set}" = set; then :
+ enableval=$enable_native_coverage;
+fi
+
+ GCOV_ENABLED="false"
+ if test "x$enable_native_coverage" = "xyes"; then
+ if test "x$TOOLCHAIN_TYPE" = "xgcc"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if native coverage is enabled" >&5
+$as_echo_n "checking if native coverage is enabled... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ GCOV_CFLAGS="-fprofile-arcs -ftest-coverage -fno-inline"
+ GCOV_LDFLAGS="-fprofile-arcs"
+ JVM_CFLAGS="$JVM_CFLAGS $GCOV_CFLAGS"
+ JVM_LDFLAGS="$JVM_LDFLAGS $GCOV_LDFLAGS"
+ CFLAGS_JDKLIB="$CFLAGS_JDKLIB $GCOV_CFLAGS"
+ CFLAGS_JDKEXE="$CFLAGS_JDKEXE $GCOV_CFLAGS"
+ CXXFLAGS_JDKLIB="$CXXFLAGS_JDKLIB $GCOV_CFLAGS"
+ CXXFLAGS_JDKEXE="$CXXFLAGS_JDKEXE $GCOV_CFLAGS"
+ LDFLAGS_JDKLIB="$LDFLAGS_JDKLIB $GCOV_LDFLAGS"
+ LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE $GCOV_LDFLAGS"
+ GCOV_ENABLED="true"
+ else
+ as_fn_error $? "--enable-native-coverage only works with toolchain type gcc" "$LINENO" 5
+ fi
+ elif test "x$enable_native_coverage" = "xno"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if native coverage is enabled" >&5
+$as_echo_n "checking if native coverage is enabled... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ elif test "x$enable_native_coverage" != "x"; then
+ as_fn_error $? "--enable-native-coverage can only be assigned \"yes\" or \"no\"" "$LINENO" 5
+ fi
+
+
+
+
+# Need toolchain to setup dtrace
+
+ # Test for dtrace dependencies
+ # Check whether --enable-dtrace was given.
+if test "${enable_dtrace+set}" = set; then :
+ enableval=$enable_dtrace;
+fi
+
+
+ DTRACE_DEP_MISSING=false
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dtrace tool" >&5
+$as_echo_n "checking for dtrace tool... " >&6; }
+ if test "x$DTRACE" != "x" && test -x "$DTRACE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DTRACE" >&5
+$as_echo "$DTRACE" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found, cannot build dtrace" >&5
+$as_echo "not found, cannot build dtrace" >&6; }
+ DTRACE_DEP_MISSING=true
+ fi
+
+ for ac_header in sys/sdt.h
+do :
+ ac_fn_cxx_check_header_mongrel "$LINENO" "sys/sdt.h" "ac_cv_header_sys_sdt_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sdt_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_SYS_SDT_H 1
+_ACEOF
+ DTRACE_HEADERS_OK=yes
+else
+ DTRACE_HEADERS_OK=no
+fi
+
+done
+
+ if test "x$DTRACE_HEADERS_OK" != "xyes"; then
+ DTRACE_DEP_MISSING=true
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if dtrace should be built" >&5
+$as_echo_n "checking if dtrace should be built... " >&6; }
+ if test "x$enable_dtrace" = "xyes"; then
+ if test "x$DTRACE_DEP_MISSING" = "xtrue"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, missing dependencies" >&5
+$as_echo "no, missing dependencies" >&6; }
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # dtrace is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=dtrace
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ as_fn_error $? "Cannot enable dtrace with missing dependencies. See above. $HELP_MSG" "$LINENO" 5
+ else
+ INCLUDE_DTRACE=true
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, forced" >&5
+$as_echo "yes, forced" >&6; }
+ fi
+ elif test "x$enable_dtrace" = "xno"; then
+ INCLUDE_DTRACE=false
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, forced" >&5
+$as_echo "no, forced" >&6; }
+ elif test "x$enable_dtrace" = "xauto" || test "x$enable_dtrace" = "x"; then
+ if test "x$DTRACE_DEP_MISSING" = "xtrue"; then
+ INCLUDE_DTRACE=false
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, missing dependencies" >&5
+$as_echo "no, missing dependencies" >&6; }
+ else
+ INCLUDE_DTRACE=true
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, dependencies present" >&5
+$as_echo "yes, dependencies present" >&6; }
+ fi
+ else
+ as_fn_error $? "Invalid value for --enable-dtrace: $enable_dtrace" "$LINENO" 5
+ fi
+
+
+ # Check whether --enable-aot was given.
+if test "${enable_aot+set}" = set; then :
+ enableval=$enable_aot;
+fi
+
+
+ if test "x$enable_aot" = "x" || test "x$enable_aot" = "xauto"; then
+ ENABLE_AOT="true"
+ elif test "x$enable_aot" = "xyes"; then
+ ENABLE_AOT="true"
+ elif test "x$enable_aot" = "xno"; then
+ ENABLE_AOT="false"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if aot should be enabled" >&5
+$as_echo_n "checking if aot should be enabled... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, forced" >&5
+$as_echo "no, forced" >&6; }
+ else
+ as_fn_error $? "Invalid value for --enable-aot: $enable_aot" "$LINENO" 5
+ fi
+
+ if test "x$ENABLE_AOT" = "xtrue"; then
+ # Only enable AOT on linux-X64.
+ if test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-x86_64"; then
+ if test -e "$HOTSPOT_TOPDIR/src/jdk.aot"; then
+ if test -e "$HOTSPOT_TOPDIR/src/jdk.internal.vm.compiler"; then
+ ENABLE_AOT="true"
+ else
+ ENABLE_AOT="false"
+ if test "x$enable_aot" = "xyes"; then
+ as_fn_error $? "Cannot build AOT without hotspot/src/jdk.internal.vm.compiler sources. Remove --enable-aot." "$LINENO" 5
+ fi
+ fi
+ else
+ ENABLE_AOT="false"
+ if test "x$enable_aot" = "xyes"; then
+ as_fn_error $? "Cannot build AOT without hotspot/src/jdk.aot sources. Remove --enable-aot." "$LINENO" 5
+ fi
+ fi
+ else
+ ENABLE_AOT="false"
+ if test "x$enable_aot" = "xyes"; then
+ as_fn_error $? "AOT is currently only supported on Linux-x86_64. Remove --enable-aot." "$LINENO" 5
+ fi
+ fi
+ fi
+
+
+
+
+ # Check whether --enable-hotspot-gtest was given.
+if test "${enable_hotspot_gtest+set}" = set; then :
+ enableval=$enable_hotspot_gtest;
+fi
+
+
+ if test -e "$HOTSPOT_TOPDIR/test/native"; then
+ GTEST_DIR_EXISTS="true"
+ else
+ GTEST_DIR_EXISTS="false"
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Hotspot gtest unit tests should be built" >&5
+$as_echo_n "checking if Hotspot gtest unit tests should be built... " >&6; }
+ if test "x$enable_hotspot_gtest" = "xyes"; then
+ if test "x$GTEST_DIR_EXISTS" = "xtrue"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, forced" >&5
+$as_echo "yes, forced" >&6; }
+ BUILD_GTEST="true"
+ else
+ as_fn_error $? "Cannot build gtest without the test source" "$LINENO" 5
+ fi
+ elif test "x$enable_hotspot_gtest" = "xno"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, forced" >&5
+$as_echo "no, forced" >&6; }
+ BUILD_GTEST="false"
+ elif test "x$enable_hotspot_gtest" = "x"; then
+ if test "x$GTEST_DIR_EXISTS" = "xtrue"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ BUILD_GTEST="true"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ BUILD_GTEST="false"
+ fi
+ else
+ as_fn_error $? "--enable-gtest must be either yes or no" "$LINENO" 5
+ fi
+
+
+
+
+###############################################################################
+#
+# Check dependencies for external and internal libraries.
+#
+###############################################################################
+
+# After we have toolchain, we can compile fixpath. It's needed by the lib checks.
+
+ # When using cygwin or msys, we need a wrapper binary that renames
+ # /cygdrive/c/ arguments into c:/ arguments and peeks into
+ # @files and rewrites these too! This wrapper binary is
+ # called fixpath.
+ FIXPATH=
+ if test "x$OPENJDK_BUILD_OS" = xwindows; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fixpath can be created" >&5
+$as_echo_n "checking if fixpath can be created... " >&6; }
+ FIXPATH_SRC="$SRC_ROOT/common/src/fixpath.c"
+ FIXPATH_BIN="$CONFIGURESUPPORT_OUTPUTDIR/bin/fixpath.exe"
+ FIXPATH_DIR="$CONFIGURESUPPORT_OUTPUTDIR/fixpath"
+ if test "x$OPENJDK_BUILD_OS_ENV" = xwindows.cygwin; then
+ # Important to keep the .exe suffix on Cygwin for Hotspot makefiles
+ FIXPATH="$FIXPATH_BIN -c"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = xwindows.msys; then
+ # Take all collected prefixes and turn them into a -m/c/foo@/c/bar@... command line
+ # @ was chosen as separator to minimize risk of other tools messing around with it
+ all_unique_prefixes=`echo "${all_fixpath_prefixes[@]}" \
+ | tr ' ' '\n' | $GREP '^/./' | $SORT | $UNIQ`
+ fixpath_argument_list=`echo $all_unique_prefixes | tr ' ' '@'`
+ FIXPATH="$FIXPATH_BIN -m$fixpath_argument_list"
+ fi
+ FIXPATH_SRC_W="$FIXPATH_SRC"
+ FIXPATH_BIN_W="$FIXPATH_BIN"
+
+ unix_path="$FIXPATH_SRC_W"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ windows_path=`$CYGPATH -m "$unix_path"`
+ FIXPATH_SRC_W="$windows_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ windows_path=`cmd //c echo $unix_path`
+ FIXPATH_SRC_W="$windows_path"
+ fi
+
+
+ unix_path="$FIXPATH_BIN_W"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ windows_path=`$CYGPATH -m "$unix_path"`
+ FIXPATH_BIN_W="$windows_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ windows_path=`cmd //c echo $unix_path`
+ FIXPATH_BIN_W="$windows_path"
+ fi
+
+ $RM -rf $FIXPATH_BIN $FIXPATH_DIR
+ $MKDIR -p $FIXPATH_DIR $CONFIGURESUPPORT_OUTPUTDIR/bin
+ cd $FIXPATH_DIR
+ $CC $FIXPATH_SRC_W -Fe$FIXPATH_BIN_W > $FIXPATH_DIR/fixpath1.log 2>&1
+ cd $CURDIR
+
+ if test ! -x $FIXPATH_BIN; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ cat $FIXPATH_DIR/fixpath1.log
+ as_fn_error $? "Could not create $FIXPATH_BIN" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fixpath.exe works" >&5
+$as_echo_n "checking if fixpath.exe works... " >&6; }
+ cd $FIXPATH_DIR
+ $FIXPATH $CC $FIXPATH_SRC -Fe$FIXPATH_DIR/fixpath2.exe \
+ > $FIXPATH_DIR/fixpath2.log 2>&1
+ cd $CURDIR
+ if test ! -x $FIXPATH_DIR/fixpath2.exe; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ cat $FIXPATH_DIR/fixpath2.log
+ as_fn_error $? "fixpath did not work!" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+ FIXPATH_DETACH_FLAG="--detach"
+ fi
+
+
+
+
+
+
+ # Check if X11 is needed
+ if test "x$OPENJDK_TARGET_OS" = xwindows || test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # No X11 support on windows or macosx
+ NEEDS_LIB_X11=false
+ else
+ # All other instances need X11, even if building headless only, libawt still
+ # needs X11 headers.
+ NEEDS_LIB_X11=true
+ fi
+
+ # Check if cups is needed
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # Windows have a separate print system
+ NEEDS_LIB_CUPS=false
+ else
+ NEEDS_LIB_CUPS=true
+ fi
+
+ # A custom hook may have set this already
+ if test "x$NEEDS_LIB_FREETYPE" = "x"; then
+ NEEDS_LIB_FREETYPE=true
+ fi
+
+ # Check if alsa is needed
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ NEEDS_LIB_ALSA=true
+ else
+ NEEDS_LIB_ALSA=false
+ fi
+
+ # Check if ffi is needed
+ if [[ " $JVM_VARIANTS " =~ " zero " ]] || [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
+ NEEDS_LIB_FFI=true
+ else
+ NEEDS_LIB_FFI=false
+ fi
+
+
+ # statically link libstdc++ before C++ ABI is stablized on Linux unless
+ # dynamic build is configured on command line.
+
+# Check whether --with-stdc++lib was given.
+if test "${with_stdc__lib+set}" = set; then :
+ withval=$with_stdc__lib;
+ if test "x$with_stdc__lib" != xdynamic && test "x$with_stdc__lib" != xstatic \
+ && test "x$with_stdc__lib" != xdefault; then
+ as_fn_error $? "Bad parameter value --with-stdc++lib=$with_stdc__lib!" "$LINENO" 5
+ fi
+
+else
+ with_stdc__lib=default
+
+fi
+
+
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ # Test if stdc++ can be linked statically.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if static link of stdc++ is possible" >&5
+$as_echo_n "checking if static link of stdc++ is possible... " >&6; }
+ STATIC_STDCXX_FLAGS="-static-libstdc++ -static-libgcc"
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ OLD_LIBS="$LIBS"
+ LIBS="$STATIC_STDCXX_FLAGS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ has_static_libstdcxx=yes
+else
+ has_static_libstdcxx=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$OLD_LIBS"
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $has_static_libstdcxx" >&5
+$as_echo "$has_static_libstdcxx" >&6; }
+
+ if test "x$with_stdc__lib" = xstatic && test "x$has_static_libstdcxx" = xno; then
+ as_fn_error $? "Static linking of libstdc++ was not possible!" "$LINENO" 5
+ fi
+
+ # If dynamic was requested, it's available since it would fail above otherwise.
+ # If dynamic wasn't requested, go with static unless it isn't available.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libstdc++" >&5
+$as_echo_n "checking how to link with libstdc++... " >&6; }
+ if test "x$with_stdc__lib" = xdynamic || test "x$has_static_libstdcxx" = xno \
+ || [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: dynamic" >&5
+$as_echo "dynamic" >&6; }
+ else
+ LIBCXX="$LIBCXX $STATIC_STDCXX_FLAGS"
+ JVM_LDFLAGS="$JVM_LDFLAGS $STATIC_STDCXX_FLAGS"
+ # Ideally, we should test stdc++ for the BUILD toolchain separately. For now
+ # just use the same setting as for the TARGET toolchain.
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $STATIC_STDCXX_FLAGS"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: static" >&5
+$as_echo "static" >&6; }
+ fi
+ fi
+
+ # libCrun is the c++ runtime-library with SunStudio (roughly the equivalent of gcc's libstdc++.so)
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio && test "x$LIBCXX" = x; then
+ LIBCXX="${SYSROOT}/usr/lib${OPENJDK_TARGET_CPU_ISADIR}/libCrun.so.1"
+ fi
+
+
+
+ # Setup Windows runtime dlls
+ if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
+
+
+# Check whether --with-msvcr-dll was given.
+if test "${with_msvcr_dll+set}" = set; then :
+ withval=$with_msvcr_dll;
+fi
+
+
+ if test "x$with_msvcr_dll" != x; then
+ # If given explicitly by user, do not probe. If not present, fail directly.
+
+ DLL_NAME="$MSVCR_NAME"
+ POSSIBLE_MSVC_DLL="$with_msvcr_dll"
+ METHOD="--with-msvcr-dll"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ MSVC_DLL="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ as_fn_error $? "Could not find a proper $MSVCR_NAME as specified by --with-msvcr-dll" "$LINENO" 5
+ fi
+ MSVCR_DLL="$MSVC_DLL"
+ elif test "x$DEVKIT_MSVCR_DLL" != x; then
+
+ DLL_NAME="$MSVCR_NAME"
+ POSSIBLE_MSVC_DLL="$DEVKIT_MSVCR_DLL"
+ METHOD="devkit"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ MSVC_DLL="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ as_fn_error $? "Could not find a proper $MSVCR_NAME as specified by devkit" "$LINENO" 5
+ fi
+ MSVCR_DLL="$MSVC_DLL"
+ else
+
+ DLL_NAME="${MSVCR_NAME}"
+ MSVC_DLL=
+
+ if test "x$MSVC_DLL" = x; then
+ # Probe: Using well-known location from Visual Studio 10.0
+ if test "x$VCINSTALLDIR" != x; then
+ CYGWIN_VC_INSTALL_DIR="$VCINSTALLDIR"
+
+ windows_path="$CYGWIN_VC_INSTALL_DIR"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ CYGWIN_VC_INSTALL_DIR="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ CYGWIN_VC_INSTALL_DIR="$unix_path"
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/x64/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME"
+ else
+ POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/x86/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME"
+ fi
+ $ECHO "POSSIBLE_MSVC_DLL $POSSIBLEMSVC_DLL"
+
+ DLL_NAME="$DLL_NAME"
+ POSSIBLE_MSVC_DLL="$POSSIBLE_MSVC_DLL"
+ METHOD="well-known location in VCINSTALLDIR"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ MSVC_DLL="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ # Probe: Check in the Boot JDK directory.
+ POSSIBLE_MSVC_DLL="$BOOT_JDK/bin/$DLL_NAME"
+
+ DLL_NAME="$DLL_NAME"
+ POSSIBLE_MSVC_DLL="$POSSIBLE_MSVC_DLL"
+ METHOD="well-known location in Boot JDK"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ MSVC_DLL="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ # Probe: Look in the Windows system32 directory
+ CYGWIN_SYSTEMROOT="$SYSTEMROOT"
+
+ windows_path="$CYGWIN_SYSTEMROOT"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ CYGWIN_SYSTEMROOT="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ CYGWIN_SYSTEMROOT="$unix_path"
+ fi
+
+ POSSIBLE_MSVC_DLL="$CYGWIN_SYSTEMROOT/system32/$DLL_NAME"
+
+ DLL_NAME="$DLL_NAME"
+ POSSIBLE_MSVC_DLL="$POSSIBLE_MSVC_DLL"
+ METHOD="well-known location in SYSTEMROOT"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ MSVC_DLL="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ # Probe: If Visual Studio Express is installed, there is usually one with the debugger
+ if test "x$VS100COMNTOOLS" != x; then
+ CYGWIN_VS_TOOLS_DIR="$VS100COMNTOOLS/.."
+
+ windows_path="$CYGWIN_VS_TOOLS_DIR"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ CYGWIN_VS_TOOLS_DIR="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ CYGWIN_VS_TOOLS_DIR="$unix_path"
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VS_TOOLS_DIR" -name $DLL_NAME \
+ | $GREP -i /x64/ | $HEAD --lines 1`
+ else
+ POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VS_TOOLS_DIR" -name $DLL_NAME \
+ | $GREP -i /x86/ | $HEAD --lines 1`
+ fi
+
+ DLL_NAME="$DLL_NAME"
+ POSSIBLE_MSVC_DLL="$POSSIBLE_MSVC_DLL"
+ METHOD="search of VS100COMNTOOLS"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ MSVC_DLL="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ # Probe: Search wildly in the VCINSTALLDIR. We've probably lost by now.
+ # (This was the original behaviour; kept since it might turn something up)
+ if test "x$CYGWIN_VC_INSTALL_DIR" != x; then
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
+ | $GREP x64 | $HEAD --lines 1`
+ else
+ POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
+ | $GREP x86 | $GREP -v ia64 | $GREP -v x64 | $HEAD --lines 1`
+ if test "x$POSSIBLE_MSVC_DLL" = x; then
+ # We're grasping at straws now...
+ POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
+ | $HEAD --lines 1`
+ fi
+ fi
+
+
+ DLL_NAME="$DLL_NAME"
+ POSSIBLE_MSVC_DLL="$POSSIBLE_MSVC_DLL"
+ METHOD="search of VCINSTALLDIR"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ MSVC_DLL="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ as_fn_error $? "Could not find $DLL_NAME. Please specify using --with-msvcr-dll." "$LINENO" 5
+ fi
+
+ MSVCR_DLL="$MSVC_DLL"
+ fi
+
+
+
+# Check whether --with-msvcp-dll was given.
+if test "${with_msvcp_dll+set}" = set; then :
+ withval=$with_msvcp_dll;
+fi
+
+
+ if test "x$MSVCP_NAME" != "x"; then
+ if test "x$with_msvcp_dll" != x; then
+ # If given explicitly by user, do not probe. If not present, fail directly.
+
+ DLL_NAME="$MSVCP_NAME"
+ POSSIBLE_MSVC_DLL="$with_msvcp_dll"
+ METHOD="--with-msvcp-dll"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ MSVC_DLL="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ as_fn_error $? "Could not find a proper $MSVCP_NAME as specified by --with-msvcp-dll" "$LINENO" 5
+ fi
+ MSVCP_DLL="$MSVC_DLL"
+ elif test "x$DEVKIT_MSVCP_DLL" != x; then
+
+ DLL_NAME="$MSVCP_NAME"
+ POSSIBLE_MSVC_DLL="$DEVKIT_MSVCP_DLL"
+ METHOD="devkit"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ MSVC_DLL="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ as_fn_error $? "Could not find a proper $MSVCP_NAME as specified by devkit" "$LINENO" 5
+ fi
+ MSVCP_DLL="$MSVC_DLL"
+ else
+
+ DLL_NAME="${MSVCP_NAME}"
+ MSVC_DLL=
+
+ if test "x$MSVC_DLL" = x; then
+ # Probe: Using well-known location from Visual Studio 10.0
+ if test "x$VCINSTALLDIR" != x; then
+ CYGWIN_VC_INSTALL_DIR="$VCINSTALLDIR"
+
+ windows_path="$CYGWIN_VC_INSTALL_DIR"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ CYGWIN_VC_INSTALL_DIR="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ CYGWIN_VC_INSTALL_DIR="$unix_path"
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/x64/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME"
+ else
+ POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/x86/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME"
+ fi
+ $ECHO "POSSIBLE_MSVC_DLL $POSSIBLEMSVC_DLL"
+
+ DLL_NAME="$DLL_NAME"
+ POSSIBLE_MSVC_DLL="$POSSIBLE_MSVC_DLL"
+ METHOD="well-known location in VCINSTALLDIR"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ MSVC_DLL="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ # Probe: Check in the Boot JDK directory.
+ POSSIBLE_MSVC_DLL="$BOOT_JDK/bin/$DLL_NAME"
+
+ DLL_NAME="$DLL_NAME"
+ POSSIBLE_MSVC_DLL="$POSSIBLE_MSVC_DLL"
+ METHOD="well-known location in Boot JDK"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ MSVC_DLL="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ # Probe: Look in the Windows system32 directory
+ CYGWIN_SYSTEMROOT="$SYSTEMROOT"
+
+ windows_path="$CYGWIN_SYSTEMROOT"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ CYGWIN_SYSTEMROOT="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ CYGWIN_SYSTEMROOT="$unix_path"
+ fi
+
+ POSSIBLE_MSVC_DLL="$CYGWIN_SYSTEMROOT/system32/$DLL_NAME"
+
+ DLL_NAME="$DLL_NAME"
+ POSSIBLE_MSVC_DLL="$POSSIBLE_MSVC_DLL"
+ METHOD="well-known location in SYSTEMROOT"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ MSVC_DLL="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ # Probe: If Visual Studio Express is installed, there is usually one with the debugger
+ if test "x$VS100COMNTOOLS" != x; then
+ CYGWIN_VS_TOOLS_DIR="$VS100COMNTOOLS/.."
+
+ windows_path="$CYGWIN_VS_TOOLS_DIR"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ CYGWIN_VS_TOOLS_DIR="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ CYGWIN_VS_TOOLS_DIR="$unix_path"
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VS_TOOLS_DIR" -name $DLL_NAME \
+ | $GREP -i /x64/ | $HEAD --lines 1`
+ else
+ POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VS_TOOLS_DIR" -name $DLL_NAME \
+ | $GREP -i /x86/ | $HEAD --lines 1`
+ fi
+
+ DLL_NAME="$DLL_NAME"
+ POSSIBLE_MSVC_DLL="$POSSIBLE_MSVC_DLL"
+ METHOD="search of VS100COMNTOOLS"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ MSVC_DLL="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ # Probe: Search wildly in the VCINSTALLDIR. We've probably lost by now.
+ # (This was the original behaviour; kept since it might turn something up)
+ if test "x$CYGWIN_VC_INSTALL_DIR" != x; then
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
+ | $GREP x64 | $HEAD --lines 1`
+ else
+ POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
+ | $GREP x86 | $GREP -v ia64 | $GREP -v x64 | $HEAD --lines 1`
+ if test "x$POSSIBLE_MSVC_DLL" = x; then
+ # We're grasping at straws now...
+ POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
+ | $HEAD --lines 1`
+ fi
+ fi
+
+
+ DLL_NAME="$DLL_NAME"
+ POSSIBLE_MSVC_DLL="$POSSIBLE_MSVC_DLL"
+ METHOD="search of VCINSTALLDIR"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&5
+$as_echo "$as_me: Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD" >&6;}
+
+ # Need to check if the found msvcr is correct architecture
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking found $DLL_NAME architecture" >&5
+$as_echo_n "checking found $DLL_NAME architecture... " >&6; }
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$MSVC_DLL" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$MSVC_DLL"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of MSVC_DLL" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$MSVC_DLL"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ MSVC_DLL="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting MSVC_DLL to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting MSVC_DLL to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$MSVC_DLL"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of MSVC_DLL, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of MSVC_DLL, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ MSVC_DLL="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ MSVC_DLL="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSVC_DLL" >&5
+$as_echo "$MSVC_DLL" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: incorrect, ignoring" >&5
+$as_echo "incorrect, ignoring" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&5
+$as_echo "$as_me: The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE" >&6;}
+ fi
+ fi
+
+ fi
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $DLL_NAME" >&5
+$as_echo_n "checking for $DLL_NAME... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ as_fn_error $? "Could not find $DLL_NAME. Please specify using --with-msvcr-dll." "$LINENO" 5
+ fi
+
+ MSVCP_DLL="$MSVC_DLL"
+ fi
+
+ fi
+
+ fi
+
+
+ if test "x$NEEDS_LIB_X11" = xfalse; then
+ if (test "x${with_x}" != x && test "x${with_x}" != xno); then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: X11 is not used, so --with-x is ignored" >&5
+$as_echo "$as_me: WARNING: X11 is not used, so --with-x is ignored" >&2;}
+ fi
+ X_CFLAGS=
+ X_LIBS=
+ else
+
+ if test "x${with_x}" = xno; then
+ as_fn_error $? "It is not possible to disable the use of X11. Remove the --without-x option." "$LINENO" 5
+ fi
+
+ if test "x${with_x}" != x && test "x${with_x}" != xyes; then
+ # The user has specified a X11 base directory. Use it for includes and
+ # libraries, unless explicitly overridden.
+ if test "x$x_includes" = xNONE; then
+ x_includes="${with_x}/include"
+ fi
+ if test "x$x_libraries" = xNONE; then
+ x_libraries="${with_x}/lib"
+ fi
+ else
+ # Check if the user has specified sysroot, but not --with-x, --x-includes or --x-libraries.
+ # Make a simple check for the libraries at the sysroot, and setup --x-includes and
+ # --x-libraries for the sysroot, if that seems to be correct.
+ if test "x$SYSROOT" != "x"; then
+ if test "x$x_includes" = xNONE; then
+ if test -f "$SYSROOT/usr/X11R6/include/X11/Xlib.h"; then
+ x_includes="$SYSROOT/usr/X11R6/include"
+ elif test -f "$SYSROOT/usr/include/X11/Xlib.h"; then
+ x_includes="$SYSROOT/usr/include"
+ fi
+ fi
+ if test "x$x_libraries" = xNONE; then
+ if test -f "$SYSROOT/usr/X11R6/lib/libX11.so"; then
+ x_libraries="$SYSROOT/usr/X11R6/lib"
+ elif test -f "$SYSROOT/usr/lib64/libX11.so" && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ x_libraries="$SYSROOT/usr/lib64"
+ elif test -f "$SYSROOT/usr/lib/libX11.so"; then
+ x_libraries="$SYSROOT/usr/lib"
+ fi
+ fi
+ fi
+ fi
+
+ # Now let autoconf do it's magic
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
+$as_echo_n "checking for X... " >&6; }
+
+
+# Check whether --with-x was given.
+if test "${with_x+set}" = set; then :
+ withval=$with_x;
+fi
+
+# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
+if test "x$with_x" = xno; then
+ # The user explicitly disabled X.
+ have_x=disabled
+else
+ case $x_includes,$x_libraries in #(
+ *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #(
+ *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # One or both of the vars are not set, and there is no cached value.
+ac_x_includes=no ac_x_libraries=no
+rm -f -r conftest.dir
+if mkdir conftest.dir; then
+ cd conftest.dir
+ cat >Imakefile <<'_ACEOF'
+incroot:
+ @echo incroot='${INCROOT}'
+usrlibdir:
+ @echo usrlibdir='${USRLIBDIR}'
+libdir:
+ @echo libdir='${LIBDIR}'
+_ACEOF
+ if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
+ # GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+ for ac_var in incroot usrlibdir libdir; do
+ eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
+ done
+ # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+ for ac_extension in a so sl dylib la dll; do
+ if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
+ test -f "$ac_im_libdir/libX11.$ac_extension"; then
+ ac_im_usrlibdir=$ac_im_libdir; break
+ fi
+ done
+ # Screen out bogus values from the imake configuration. They are
+ # bogus both because they are the default anyway, and because
+ # using them would break gcc on systems where it needs fixed includes.
+ case $ac_im_incroot in
+ /usr/include) ac_x_includes= ;;
+ *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+ esac
+ case $ac_im_usrlibdir in
+ /usr/lib | /usr/lib64 | /lib | /lib64) ;;
+ *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+ esac
+ fi
+ cd ..
+ rm -f -r conftest.dir
+fi
+
+# Standard set of common directories for X headers.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+ac_x_header_dirs='
+/usr/X11/include
+/usr/X11R7/include
+/usr/X11R6/include
+/usr/X11R5/include
+/usr/X11R4/include
+
+/usr/include/X11
+/usr/include/X11R7
+/usr/include/X11R6
+/usr/include/X11R5
+/usr/include/X11R4
+
+/usr/local/X11/include
+/usr/local/X11R7/include
+/usr/local/X11R6/include
+/usr/local/X11R5/include
+/usr/local/X11R4/include
+
+/usr/local/include/X11
+/usr/local/include/X11R7
+/usr/local/include/X11R6
+/usr/local/include/X11R5
+/usr/local/include/X11R4
+
+/usr/X386/include
+/usr/x386/include
+/usr/XFree86/include/X11
+
+/usr/include
+/usr/local/include
+/usr/unsupported/include
+/usr/athena/include
+/usr/local/x11r5/include
+/usr/lpp/Xamples/include
+
+/usr/openwin/include
+/usr/openwin/share/include'
+
+if test "$ac_x_includes" = no; then
+ # Guess where to find include files, by looking for Xlib.h.
+ # First, try using that file with no special directory specified.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <X11/Xlib.h>
+_ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+ # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+ for ac_dir in $ac_x_header_dirs; do
+ if test -r "$ac_dir/X11/Xlib.h"; then
+ ac_x_includes=$ac_dir
+ break
+ fi
+done
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+fi # $ac_x_includes = no
+
+if test "$ac_x_libraries" = no; then
+ # Check for the libraries.
+ # See if we find them without any special options.
+ # Don't add to $LIBS permanently.
+ ac_save_LIBS=$LIBS
+ LIBS="-lX11 $LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <X11/Xlib.h>
+int
+main ()
+{
+XrmInitialize ()
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ LIBS=$ac_save_LIBS
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+ LIBS=$ac_save_LIBS
+for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+do
+ # Don't even attempt the hair of trying to link an X program!
+ for ac_extension in a so sl dylib la dll; do
+ if test -r "$ac_dir/libX11.$ac_extension"; then
+ ac_x_libraries=$ac_dir
+ break 2
+ fi
+ done
+done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = no
+
+case $ac_x_includes,$ac_x_libraries in #(
+ no,* | *,no | *\'*)
+ # Didn't find X, or a directory has "'" in its name.
+ ac_cv_have_x="have_x=no";; #(
+ *)
+ # Record where we found X for the cache.
+ ac_cv_have_x="have_x=yes\
+ ac_x_includes='$ac_x_includes'\
+ ac_x_libraries='$ac_x_libraries'"
+esac
+fi
+;; #(
+ *) have_x=yes;;
+ esac
+ eval "$ac_cv_have_x"
+fi # $with_x != no
+
+if test "$have_x" != yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5
+$as_echo "$have_x" >&6; }
+ no_x=yes
+else
+ # If each of the values was on the command line, it overrides each guess.
+ test "x$x_includes" = xNONE && x_includes=$ac_x_includes
+ test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
+ # Update the cache value to reflect the command line values.
+ ac_cv_have_x="have_x=yes\
+ ac_x_includes='$x_includes'\
+ ac_x_libraries='$x_libraries'"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5
+$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
+fi
+
+ if test "$no_x" = yes; then
+ # Not all programs may use this symbol, but it does not hurt to define it.
+
+$as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h
+
+ X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
+else
+ if test -n "$x_includes"; then
+ X_CFLAGS="$X_CFLAGS -I$x_includes"
+ fi
+
+ # It would also be nice to do this for all -L options, not just this one.
+ if test -n "$x_libraries"; then
+ X_LIBS="$X_LIBS -L$x_libraries"
+ # For Solaris; some versions of Sun CC require a space after -R and
+ # others require no space. Words are not sufficient . . . .
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5
+$as_echo_n "checking whether -R must be followed by a space... " >&6; }
+ ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
+ ac_xsave_cxx_werror_flag=$ac_cxx_werror_flag
+ ac_cxx_werror_flag=yes
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ X_LIBS="$X_LIBS -R$x_libraries"
+else
+ LIBS="$ac_xsave_LIBS -R $x_libraries"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ X_LIBS="$X_LIBS -R $x_libraries"
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5
+$as_echo "neither works" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ ac_cxx_werror_flag=$ac_xsave_cxx_werror_flag
+ LIBS=$ac_xsave_LIBS
+ fi
+
+ # Check for system-dependent libraries X programs must link with.
+ # Do this before checking for the system-independent R6 libraries
+ # (-lICE), since we may need -lsocket or whatever for X linking.
+
+ if test "$ISC" = yes; then
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
+ else
+ # Martyn Johnson says this is needed for Ultrix, if the X
+ # libraries were built with DECnet support. And Karl Berry says
+ # the Alpha needs dnet_stub (dnet does not exist).
+ ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char XOpenDisplay ();
+int
+main ()
+{
+return XOpenDisplay ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
+if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ ac_cv_lib_dnet_dnet_ntoa=yes
+else
+ ac_cv_lib_dnet_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then :
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+fi
+
+ if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
+if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet_stub $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ ac_cv_lib_dnet_stub_dnet_ntoa=yes
+else
+ ac_cv_lib_dnet_stub_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then :
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
+fi
+
+ fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$ac_xsave_LIBS"
+
+ # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
+ # to get the SysV transport functions.
+ # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
+ # needs -lnsl.
+ # The nsl library prevents programs from opening the X display
+ # on Irix 5.2, according to T.E. Dickey.
+ # The functions gethostbyname, getservbyname, and inet_addr are
+ # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
+ ac_fn_cxx_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
+if test "x$ac_cv_func_gethostbyname" = xyes; then :
+
+fi
+
+ if test $ac_cv_func_gethostbyname = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
+if ${ac_cv_lib_nsl_gethostbyname+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ ac_cv_lib_nsl_gethostbyname=yes
+else
+ ac_cv_lib_nsl_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then :
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+fi
+
+ if test $ac_cv_lib_nsl_gethostbyname = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5
+$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
+if ${ac_cv_lib_bsd_gethostbyname+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ ac_cv_lib_bsd_gethostbyname=yes
+else
+ ac_cv_lib_bsd_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5
+$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then :
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+fi
+
+ fi
+ fi
+
+ # lieder@skyler.mavd.honeywell.com says without -lsocket,
+ # socket/setsockopt and other routines are undefined under SCO ODT
+ # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary
+ # on later versions), says Simon Leinen: it contains gethostby*
+ # variants that don't use the name server (or something). -lsocket
+ # must be given before -lnsl if both are needed. We assume that
+ # if connect needs -lnsl, so does gethostbyname.
+ ac_fn_cxx_check_func "$LINENO" "connect" "ac_cv_func_connect"
+if test "x$ac_cv_func_connect" = xyes; then :
+
+fi
+
+ if test $ac_cv_func_connect = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5
+$as_echo_n "checking for connect in -lsocket... " >&6; }
+if ${ac_cv_lib_socket_connect+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char connect ();
+int
+main ()
+{
+return connect ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ ac_cv_lib_socket_connect=yes
+else
+ ac_cv_lib_socket_connect=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5
+$as_echo "$ac_cv_lib_socket_connect" >&6; }
+if test "x$ac_cv_lib_socket_connect" = xyes; then :
+ X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+fi
+
+ fi
+
+ # Guillermo Gomez says -lposix is necessary on A/UX.
+ ac_fn_cxx_check_func "$LINENO" "remove" "ac_cv_func_remove"
+if test "x$ac_cv_func_remove" = xyes; then :
+
+fi
+
+ if test $ac_cv_func_remove = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5
+$as_echo_n "checking for remove in -lposix... " >&6; }
+if ${ac_cv_lib_posix_remove+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char remove ();
+int
+main ()
+{
+return remove ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ ac_cv_lib_posix_remove=yes
+else
+ ac_cv_lib_posix_remove=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5
+$as_echo "$ac_cv_lib_posix_remove" >&6; }
+if test "x$ac_cv_lib_posix_remove" = xyes; then :
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+fi
+
+ fi
+
+ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+ ac_fn_cxx_check_func "$LINENO" "shmat" "ac_cv_func_shmat"
+if test "x$ac_cv_func_shmat" = xyes; then :
+
+fi
+
+ if test $ac_cv_func_shmat = no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5
+$as_echo_n "checking for shmat in -lipc... " >&6; }
+if ${ac_cv_lib_ipc_shmat+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lipc $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shmat ();
+int
+main ()
+{
+return shmat ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ ac_cv_lib_ipc_shmat=yes
+else
+ ac_cv_lib_ipc_shmat=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5
+$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
+if test "x$ac_cv_lib_ipc_shmat" = xyes; then :
+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+fi
+
+ fi
+ fi
+
+ # Check for libraries that X11R6 Xt/Xaw programs need.
+ ac_save_LDFLAGS=$LDFLAGS
+ test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
+ # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+ # check for ICE first), but we must link in the order -lSM -lICE or
+ # we get undefined symbols. So assume we have SM if we have ICE.
+ # These have to be linked with before -lX11, unlike the other
+ # libraries we check for below, so use a different variable.
+ # John Interrante, Karl Berry
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5
+$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
+if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lICE $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char IceConnectionNumber ();
+int
+main ()
+{
+return IceConnectionNumber ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ ac_cv_lib_ICE_IceConnectionNumber=yes
+else
+ ac_cv_lib_ICE_IceConnectionNumber=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then :
+ X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+fi
+
+ LDFLAGS=$ac_save_LDFLAGS
+
+fi
+
+
+ # AC_PATH_XTRA creates X_LIBS and sometimes adds -R flags. When cross compiling
+ # this doesn't make sense so we remove it.
+ if test "x$COMPILE_TYPE" = xcross; then
+ X_LIBS=`$ECHO $X_LIBS | $SED 's/-R \{0,1\}[^ ]*//g'`
+ fi
+
+ if test "x$no_x" = xyes; then
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # x11 is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=x11
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ as_fn_error $? "Could not find X11 libraries. $HELP_MSG" "$LINENO" 5
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ OPENWIN_HOME="/usr/openwin"
+ X_CFLAGS="-I$SYSROOT$OPENWIN_HOME/include -I$SYSROOT$OPENWIN_HOME/include/X11/extensions"
+ X_LIBS="-L$SYSROOT$OPENWIN_HOME/lib$OPENJDK_TARGET_CPU_ISADIR \
+ -R$OPENWIN_HOME/lib$OPENJDK_TARGET_CPU_ISADIR"
+ fi
+
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ OLD_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $SYSROOT_CFLAGS $X_CFLAGS"
+
+ # Need to include Xlib.h and Xutil.h to avoid "present but cannot be compiled" warnings on Solaris 10
+ for ac_header in X11/extensions/shape.h X11/extensions/Xrender.h X11/extensions/XTest.h X11/Intrinsic.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "
+ # include <X11/Xlib.h>
+ # include <X11/Xutil.h>
+
+
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ X11_HEADERS_OK=yes
+else
+ X11_HEADERS_OK=no; break
+fi
+
+done
+
+
+ if test "x$X11_HEADERS_OK" = xno; then
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # x11 is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=x11
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ as_fn_error $? "Could not find all X11 headers (shape.h Xrender.h XTest.h Intrinsic.h). $HELP_MSG" "$LINENO" 5
+ fi
+
+ # If XLinearGradient isn't available in Xrender.h, signal that it needs to be
+ # defined in libawt_xawt.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if XlinearGradient is defined in Xrender.h" >&5
+$as_echo_n "checking if XlinearGradient is defined in Xrender.h... " >&6; }
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <X11/extensions/Xrender.h>
+int
+main ()
+{
+XLinearGradient x;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ X_CFLAGS="$X_CFLAGS -DSOLARIS10_NO_XRENDER_STRUCTS"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+ CFLAGS="$OLD_CFLAGS"
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ fi # NEEDS_LIB_X11
+
+
+
+
+
+
+# Check whether --with-cups was given.
+if test "${with_cups+set}" = set; then :
+ withval=$with_cups;
+fi
+
+
+# Check whether --with-cups-include was given.
+if test "${with_cups_include+set}" = set; then :
+ withval=$with_cups_include;
+fi
+
+
+ if test "x$NEEDS_LIB_CUPS" = xfalse; then
+ if (test "x${with_cups}" != x && test "x${with_cups}" != xno) || \
+ (test "x${with_cups_include}" != x && test "x${with_cups_include}" != xno); then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cups not used, so --with-cups[-*] is ignored" >&5
+$as_echo "$as_me: WARNING: cups not used, so --with-cups[-*] is ignored" >&2;}
+ fi
+ CUPS_CFLAGS=
+ else
+ CUPS_FOUND=no
+
+ if test "x${with_cups}" = xno || test "x${with_cups_include}" = xno; then
+ as_fn_error $? "It is not possible to disable the use of cups. Remove the --without-cups option." "$LINENO" 5
+ fi
+
+ if test "x${with_cups}" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cups headers" >&5
+$as_echo_n "checking for cups headers... " >&6; }
+ if test -s "${with_cups}/include/cups/cups.h"; then
+ CUPS_CFLAGS="-I${with_cups}/include"
+ CUPS_FOUND=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUPS_FOUND" >&5
+$as_echo "$CUPS_FOUND" >&6; }
+ else
+ as_fn_error $? "Can't find 'include/cups/cups.h' under ${with_cups} given with the --with-cups option." "$LINENO" 5
+ fi
+ fi
+ if test "x${with_cups_include}" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cups headers" >&5
+$as_echo_n "checking for cups headers... " >&6; }
+ if test -s "${with_cups_include}/cups/cups.h"; then
+ CUPS_CFLAGS="-I${with_cups_include}"
+ CUPS_FOUND=yes
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CUPS_FOUND" >&5
+$as_echo "$CUPS_FOUND" >&6; }
+ else
+ as_fn_error $? "Can't find 'cups/cups.h' under ${with_cups_include} given with the --with-cups-include option." "$LINENO" 5
+ fi
+ fi
+ if test "x$CUPS_FOUND" = xno; then
+ # Are the cups headers installed in the default /usr/include location?
+ for ac_header in cups/cups.h cups/ppd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+ CUPS_FOUND=yes
+ CUPS_CFLAGS=
+ DEFAULT_CUPS=yes
+
+fi
+
+done
+
+ fi
+ if test "x$CUPS_FOUND" = xno; then
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # cups is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=cups
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ as_fn_error $? "Could not find cups! $HELP_MSG " "$LINENO" 5
+ fi
+ fi
+
+
+
+
+
+# Check whether --with-freetype was given.
+if test "${with_freetype+set}" = set; then :
+ withval=$with_freetype;
+fi
+
+
+# Check whether --with-freetype-include was given.
+if test "${with_freetype_include+set}" = set; then :
+ withval=$with_freetype_include;
+fi
+
+
+# Check whether --with-freetype-lib was given.
+if test "${with_freetype_lib+set}" = set; then :
+ withval=$with_freetype_lib;
+fi
+
+
+# Check whether --with-freetype-src was given.
+if test "${with_freetype_src+set}" = set; then :
+ withval=$with_freetype_src;
+fi
+
+ # Check whether --enable-freetype-bundling was given.
+if test "${enable_freetype_bundling+set}" = set; then :
+ enableval=$enable_freetype_bundling;
+fi
+
+
+# Check whether --with-freetype-license was given.
+if test "${with_freetype_license+set}" = set; then :
+ withval=$with_freetype_license;
+fi
+
+
+ # Need to specify explicitly since it needs to be overridden on some versions of macosx
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_CFLAGS=
+ FREETYPE_LIBS=
+ FREETYPE_BUNDLE_LIB_PATH=
+
+ if test "x$NEEDS_LIB_FREETYPE" = xfalse; then
+ if (test "x$with_freetype" != x && test "x$with_freetype" != xno) || \
+ (test "x$with_freetype_include" != x && test "x$with_freetype_include" != xno) || \
+ (test "x$with_freetype_lib" != x && test "x$with_freetype_lib" != xno) || \
+ (test "x$with_freetype_src" != x && test "x$with_freetype_src" != xno); then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: freetype not used, so --with-freetype[-*] is ignored" >&5
+$as_echo "$as_me: WARNING: freetype not used, so --with-freetype[-*] is ignored" >&2;}
+ fi
+ if (test "x$enable_freetype_bundling" != x && test "x$enable_freetype_bundling" != xno); then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: freetype not used, so --enable-freetype-bundling is ignored" >&5
+$as_echo "$as_me: WARNING: freetype not used, so --enable-freetype-bundling is ignored" >&2;}
+ fi
+ else
+ # freetype is needed to build; go get it!
+
+ BUNDLE_FREETYPE="$enable_freetype_bundling"
+
+ if test "x$with_freetype_src" != x; then
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # Try to build freetype if --with-freetype-src was given on Windows
+
+ FREETYPE_SRC_PATH="$with_freetype_src"
+ BUILD_FREETYPE=yes
+
+ # Check if the freetype sources are acessible..
+ if ! test -d $FREETYPE_SRC_PATH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-freetype-src specified, but can not find path \"$FREETYPE_SRC_PATH\" - ignoring --with-freetype-src" >&5
+$as_echo "$as_me: WARNING: --with-freetype-src specified, but can not find path \"$FREETYPE_SRC_PATH\" - ignoring --with-freetype-src" >&2;}
+ BUILD_FREETYPE=no
+ fi
+ # ..and contain a vc2010 project file
+ vcxproj_path="$FREETYPE_SRC_PATH/builds/windows/vc2010/freetype.vcxproj"
+ if test "x$BUILD_FREETYPE" = xyes && ! test -s $vcxproj_path; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Can not find project file $vcxproj_path (you may try a newer freetype version) - ignoring --with-freetype-src" >&5
+$as_echo "$as_me: WARNING: Can not find project file $vcxproj_path (you may try a newer freetype version) - ignoring --with-freetype-src" >&2;}
+ BUILD_FREETYPE=no
+ fi
+ # Now check if configure found a version of 'msbuild.exe'
+ if test "x$BUILD_FREETYPE" = xyes && test "x$MSBUILD" == x ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Can not find an msbuild.exe executable (you may try to install .NET 4.0) - ignoring --with-freetype-src" >&5
+$as_echo "$as_me: WARNING: Can not find an msbuild.exe executable (you may try to install .NET 4.0) - ignoring --with-freetype-src" >&2;}
+ BUILD_FREETYPE=no
+ fi
+
+ # Ready to go..
+ if test "x$BUILD_FREETYPE" = xyes; then
+ # msbuild requires trailing slashes for output directories
+ freetype_lib_path="$FREETYPE_SRC_PATH/lib$OPENJDK_TARGET_CPU_BITS/"
+ freetype_lib_path_unix="$freetype_lib_path"
+ freetype_obj_path="$FREETYPE_SRC_PATH/obj$OPENJDK_TARGET_CPU_BITS/"
+
+ unix_path="$vcxproj_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ windows_path=`$CYGPATH -m "$unix_path"`
+ vcxproj_path="$windows_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ windows_path=`cmd //c echo $unix_path`
+ vcxproj_path="$windows_path"
+ fi
+
+
+ unix_path="$freetype_lib_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ windows_path=`$CYGPATH -m "$unix_path"`
+ freetype_lib_path="$windows_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ windows_path=`cmd //c echo $unix_path`
+ freetype_lib_path="$windows_path"
+ fi
+
+
+ unix_path="$freetype_obj_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ windows_path=`$CYGPATH -m "$unix_path"`
+ freetype_obj_path="$windows_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ windows_path=`cmd //c echo $unix_path`
+ freetype_obj_path="$windows_path"
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ freetype_platform=x64
+ else
+ freetype_platform=win32
+ fi
+
+ # The original freetype project file is for VS 2010 (i.e. 'v100'),
+ # so we have to adapt the toolset if building with any other toolsed (i.e. SDK).
+ # Currently 'PLATFORM_TOOLSET' is set in 'TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT'/
+ # 'TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT' in toolchain_windows.m4
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Trying to compile freetype sources with PlatformToolset=$PLATFORM_TOOLSET to $freetype_lib_path_unix ..." >&5
+$as_echo "$as_me: Trying to compile freetype sources with PlatformToolset=$PLATFORM_TOOLSET to $freetype_lib_path_unix ..." >&6;}
+
+ # First we try to build the freetype.dll
+ $ECHO -e "@echo off\n"\
+ "$MSBUILD $vcxproj_path "\
+ "/p:PlatformToolset=$PLATFORM_TOOLSET "\
+ "/p:Configuration=\"Release Multithreaded\" "\
+ "/p:Platform=$freetype_platform "\
+ "/p:ConfigurationType=DynamicLibrary "\
+ "/p:TargetName=freetype "\
+ "/p:OutDir=\"$freetype_lib_path\" "\
+ "/p:IntDir=\"$freetype_obj_path\" > freetype.log" > freetype.bat
+ cmd /c freetype.bat
+
+ if test -s "$freetype_lib_path_unix/freetype.dll"; then
+ # If that succeeds we also build freetype.lib
+ $ECHO -e "@echo off\n"\
+ "$MSBUILD $vcxproj_path "\
+ "/p:PlatformToolset=$PLATFORM_TOOLSET "\
+ "/p:Configuration=\"Release Multithreaded\" "\
+ "/p:Platform=$freetype_platform "\
+ "/p:ConfigurationType=StaticLibrary "\
+ "/p:TargetName=freetype "\
+ "/p:OutDir=\"$freetype_lib_path\" "\
+ "/p:IntDir=\"$freetype_obj_path\" >> freetype.log" > freetype.bat
+ cmd /c freetype.bat
+
+ if test -s "$freetype_lib_path_unix/freetype.lib"; then
+ # Once we build both, lib and dll, set freetype lib and include path appropriately
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_SRC_PATH/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$freetype_lib_path_unix"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compiling freetype sources succeeded! (see freetype.log for build results)" >&5
+$as_echo "$as_me: Compiling freetype sources succeeded! (see freetype.log for build results)" >&6;}
+ else
+ BUILD_FREETYPE=no
+ fi
+ else
+ BUILD_FREETYPE=no
+ fi
+ fi
+
+ if test "x$BUILD_FREETYPE" = xyes; then
+ # Okay, we built it. Check that it works.
+
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ METHOD="--with-freetype-src"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
+$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
+$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
+$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
+$as_echo_n "checking for freetype includes... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
+$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
+$as_echo_n "checking for freetype libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
+$as_echo "$FREETYPE_LIB_PATH" >&6; }
+ fi
+
+ if test "x$FOUND_FREETYPE" != xyes; then
+ as_fn_error $? "Can not use the built freetype at location given by --with-freetype-src" "$LINENO" 5
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: User specified --with-freetype-src but building freetype failed. (see freetype.log for build results)" >&5
+$as_echo "$as_me: User specified --with-freetype-src but building freetype failed. (see freetype.log for build results)" >&6;}
+ as_fn_error $? "Consider building freetype manually and using --with-freetype instead." "$LINENO" 5
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-freetype-src is currently only supported on Windows - ignoring" >&5
+$as_echo "$as_me: WARNING: --with-freetype-src is currently only supported on Windows - ignoring" >&2;}
+ fi
+ fi
+
+ if test "x$with_freetype" != x || test "x$with_freetype_include" != x || test "x$with_freetype_lib" != x; then
+ # User has specified settings
+
+ if test "x$BUNDLE_FREETYPE" = x; then
+ # If not specified, default is to bundle freetype
+ BUNDLE_FREETYPE=yes
+ fi
+
+ if test "x$with_freetype" != x; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$with_freetype/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$with_freetype/lib"
+ fi
+
+ # Allow --with-freetype-lib and --with-freetype-include to override
+ if test "x$with_freetype_include" != x; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$with_freetype_include"
+ fi
+ if test "x$with_freetype_lib" != x; then
+ POTENTIAL_FREETYPE_LIB_PATH="$with_freetype_lib"
+ fi
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x && test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ # Okay, we got it. Check that it works.
+
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ METHOD="--with-freetype"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
+$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
+$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
+$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
+$as_echo_n "checking for freetype includes... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
+$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
+$as_echo_n "checking for freetype libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
+$as_echo "$FREETYPE_LIB_PATH" >&6; }
+ fi
+
+ if test "x$FOUND_FREETYPE" != xyes; then
+ as_fn_error $? "Can not find or use freetype at location given by --with-freetype" "$LINENO" 5
+ fi
+ else
+ # User specified only one of lib or include. This is an error.
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" = x ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: User specified --with-freetype-lib but not --with-freetype-include" >&5
+$as_echo "$as_me: User specified --with-freetype-lib but not --with-freetype-include" >&6;}
+ as_fn_error $? "Need both freetype lib and include paths. Consider using --with-freetype instead." "$LINENO" 5
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: User specified --with-freetype-include but not --with-freetype-lib" >&5
+$as_echo "$as_me: User specified --with-freetype-include but not --with-freetype-lib" >&6;}
+ as_fn_error $? "Need both freetype lib and include paths. Consider using --with-freetype instead." "$LINENO" 5
+ fi
+ fi
+ else
+ # User did not specify settings, but we need freetype. Try to locate it.
+
+ if test "x$BUNDLE_FREETYPE" = x; then
+ # If not specified, default is to bundle freetype only on windows
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ BUNDLE_FREETYPE=yes
+ else
+ BUNDLE_FREETYPE=no
+ fi
+ fi
+
+ # If we have a sysroot, assume that's where we are supposed to look and skip pkg-config.
+ if test "x$SYSROOT" = x; then
+ if test "x$FOUND_FREETYPE" != xyes; then
+ # Check modules using pkg-config, but only if we have it (ugly output results otherwise)
+ if test "x$PKG_CONFIG" != x; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FREETYPE" >&5
+$as_echo_n "checking for FREETYPE... " >&6; }
+
+if test -n "$FREETYPE_CFLAGS"; then
+ pkg_cv_FREETYPE_CFLAGS="$FREETYPE_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "freetype2") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_FREETYPE_CFLAGS=`$PKG_CONFIG --cflags "freetype2" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$FREETYPE_LIBS"; then
+ pkg_cv_FREETYPE_LIBS="$FREETYPE_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"freetype2\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "freetype2") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_FREETYPE_LIBS=`$PKG_CONFIG --libs "freetype2" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ FREETYPE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "freetype2" 2>&1`
+ else
+ FREETYPE_PKG_ERRORS=`$PKG_CONFIG --print-errors "freetype2" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$FREETYPE_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ FOUND_FREETYPE=no
+elif test $pkg_failed = untried; then
+ FOUND_FREETYPE=no
+else
+ FREETYPE_CFLAGS=$pkg_cv_FREETYPE_CFLAGS
+ FREETYPE_LIBS=$pkg_cv_FREETYPE_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ FOUND_FREETYPE=yes
+fi
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # On solaris, pkg_check adds -lz to freetype libs, which isn't necessary for us.
+ FREETYPE_LIBS=`$ECHO $FREETYPE_LIBS | $SED 's/-lz//g'`
+ # 64-bit libs for Solaris x86 are installed in the amd64 subdirectory, change lib to lib/amd64
+ if test "x$OPENJDK_TARGET_OS" = xsolaris && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ FREETYPE_LIBS=`$ECHO $FREETYPE_LIBS | $SED 's?/lib?/lib/amd64?g'`
+ fi
+ # PKG_CHECK_MODULES will set FREETYPE_CFLAGS and _LIBS, but we don't get a lib path for bundling.
+ if test "x$BUNDLE_FREETYPE" = xyes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype using pkg-config, but ignoring since we can not bundle that" >&5
+$as_echo "$as_me: Found freetype using pkg-config, but ignoring since we can not bundle that" >&6;}
+ FOUND_FREETYPE=no
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype" >&5
+$as_echo_n "checking for freetype... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (using pkg-config)" >&5
+$as_echo "yes (using pkg-config)" >&6; }
+ fi
+ fi
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" != xyes; then
+ # Check in well-known locations
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ FREETYPE_BASE_DIR="$PROGRAMFILES/GnuWin32"
+
+ windows_path="$FREETYPE_BASE_DIR"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ FREETYPE_BASE_DIR="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ FREETYPE_BASE_DIR="$unix_path"
+ fi
+
+
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_BASE_DIR/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$FREETYPE_BASE_DIR/lib"
+ METHOD="well-known location"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
+$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
+$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
+$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
+$as_echo_n "checking for freetype includes... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
+$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
+$as_echo_n "checking for freetype libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
+$as_echo "$FREETYPE_LIB_PATH" >&6; }
+ fi
+
+ if test "x$FOUND_FREETYPE" != xyes; then
+ FREETYPE_BASE_DIR="$ProgramW6432/GnuWin32"
+
+ windows_path="$FREETYPE_BASE_DIR"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ FREETYPE_BASE_DIR="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ FREETYPE_BASE_DIR="$unix_path"
+ fi
+
+
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_BASE_DIR/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$FREETYPE_BASE_DIR/lib"
+ METHOD="well-known location"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
+$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
+$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
+$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
+$as_echo_n "checking for freetype includes... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
+$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
+$as_echo_n "checking for freetype libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
+$as_echo "$FREETYPE_LIB_PATH" >&6; }
+ fi
+
+ fi
+ if test "x$FOUND_FREETYPE" != xyes; then
+ FREETYPE_BASE_DIR="$HOME/freetype"
+
+ windows_path="$FREETYPE_BASE_DIR"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ FREETYPE_BASE_DIR="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ FREETYPE_BASE_DIR="$unix_path"
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_BASE_DIR/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$FREETYPE_BASE_DIR/lib64"
+ METHOD="well-known location"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
+$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
+$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
+$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
+$as_echo_n "checking for freetype includes... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
+$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
+$as_echo_n "checking for freetype libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
+$as_echo "$FREETYPE_LIB_PATH" >&6; }
+ fi
+
+ else
+
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_BASE_DIR/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$FREETYPE_BASE_DIR/lib32"
+ METHOD="well-known location"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
+$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
+$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
+$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
+$as_echo_n "checking for freetype includes... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
+$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
+$as_echo_n "checking for freetype libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
+$as_echo "$FREETYPE_LIB_PATH" >&6; }
+ fi
+
+ fi
+ if test "x$FOUND_FREETYPE" != xyes && test -d $FREETYPE_BASE_DIR \
+ && test -s "$FREETYPE_BASE_DIR/builds/windows/vc2010/freetype.vcxproj" && test "x$MSBUILD" != x; then
+ # Source is available, as a last resort try to build freetype in default location
+
+ FREETYPE_SRC_PATH="$FREETYPE_BASE_DIR"
+ BUILD_FREETYPE=yes
+
+ # Check if the freetype sources are acessible..
+ if ! test -d $FREETYPE_SRC_PATH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-freetype-src specified, but can not find path \"$FREETYPE_SRC_PATH\" - ignoring --with-freetype-src" >&5
+$as_echo "$as_me: WARNING: --with-freetype-src specified, but can not find path \"$FREETYPE_SRC_PATH\" - ignoring --with-freetype-src" >&2;}
+ BUILD_FREETYPE=no
+ fi
+ # ..and contain a vc2010 project file
+ vcxproj_path="$FREETYPE_SRC_PATH/builds/windows/vc2010/freetype.vcxproj"
+ if test "x$BUILD_FREETYPE" = xyes && ! test -s $vcxproj_path; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Can not find project file $vcxproj_path (you may try a newer freetype version) - ignoring --with-freetype-src" >&5
+$as_echo "$as_me: WARNING: Can not find project file $vcxproj_path (you may try a newer freetype version) - ignoring --with-freetype-src" >&2;}
+ BUILD_FREETYPE=no
+ fi
+ # Now check if configure found a version of 'msbuild.exe'
+ if test "x$BUILD_FREETYPE" = xyes && test "x$MSBUILD" == x ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Can not find an msbuild.exe executable (you may try to install .NET 4.0) - ignoring --with-freetype-src" >&5
+$as_echo "$as_me: WARNING: Can not find an msbuild.exe executable (you may try to install .NET 4.0) - ignoring --with-freetype-src" >&2;}
+ BUILD_FREETYPE=no
+ fi
+
+ # Ready to go..
+ if test "x$BUILD_FREETYPE" = xyes; then
+ # msbuild requires trailing slashes for output directories
+ freetype_lib_path="$FREETYPE_SRC_PATH/lib$OPENJDK_TARGET_CPU_BITS/"
+ freetype_lib_path_unix="$freetype_lib_path"
+ freetype_obj_path="$FREETYPE_SRC_PATH/obj$OPENJDK_TARGET_CPU_BITS/"
+
+ unix_path="$vcxproj_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ windows_path=`$CYGPATH -m "$unix_path"`
+ vcxproj_path="$windows_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ windows_path=`cmd //c echo $unix_path`
+ vcxproj_path="$windows_path"
+ fi
+
+
+ unix_path="$freetype_lib_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ windows_path=`$CYGPATH -m "$unix_path"`
+ freetype_lib_path="$windows_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ windows_path=`cmd //c echo $unix_path`
+ freetype_lib_path="$windows_path"
+ fi
+
+
+ unix_path="$freetype_obj_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ windows_path=`$CYGPATH -m "$unix_path"`
+ freetype_obj_path="$windows_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ windows_path=`cmd //c echo $unix_path`
+ freetype_obj_path="$windows_path"
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ freetype_platform=x64
+ else
+ freetype_platform=win32
+ fi
+
+ # The original freetype project file is for VS 2010 (i.e. 'v100'),
+ # so we have to adapt the toolset if building with any other toolsed (i.e. SDK).
+ # Currently 'PLATFORM_TOOLSET' is set in 'TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT'/
+ # 'TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT' in toolchain_windows.m4
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Trying to compile freetype sources with PlatformToolset=$PLATFORM_TOOLSET to $freetype_lib_path_unix ..." >&5
+$as_echo "$as_me: Trying to compile freetype sources with PlatformToolset=$PLATFORM_TOOLSET to $freetype_lib_path_unix ..." >&6;}
+
+ # First we try to build the freetype.dll
+ $ECHO -e "@echo off\n"\
+ "$MSBUILD $vcxproj_path "\
+ "/p:PlatformToolset=$PLATFORM_TOOLSET "\
+ "/p:Configuration=\"Release Multithreaded\" "\
+ "/p:Platform=$freetype_platform "\
+ "/p:ConfigurationType=DynamicLibrary "\
+ "/p:TargetName=freetype "\
+ "/p:OutDir=\"$freetype_lib_path\" "\
+ "/p:IntDir=\"$freetype_obj_path\" > freetype.log" > freetype.bat
+ cmd /c freetype.bat
+
+ if test -s "$freetype_lib_path_unix/freetype.dll"; then
+ # If that succeeds we also build freetype.lib
+ $ECHO -e "@echo off\n"\
+ "$MSBUILD $vcxproj_path "\
+ "/p:PlatformToolset=$PLATFORM_TOOLSET "\
+ "/p:Configuration=\"Release Multithreaded\" "\
+ "/p:Platform=$freetype_platform "\
+ "/p:ConfigurationType=StaticLibrary "\
+ "/p:TargetName=freetype "\
+ "/p:OutDir=\"$freetype_lib_path\" "\
+ "/p:IntDir=\"$freetype_obj_path\" >> freetype.log" > freetype.bat
+ cmd /c freetype.bat
+
+ if test -s "$freetype_lib_path_unix/freetype.lib"; then
+ # Once we build both, lib and dll, set freetype lib and include path appropriately
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_SRC_PATH/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$freetype_lib_path_unix"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compiling freetype sources succeeded! (see freetype.log for build results)" >&5
+$as_echo "$as_me: Compiling freetype sources succeeded! (see freetype.log for build results)" >&6;}
+ else
+ BUILD_FREETYPE=no
+ fi
+ else
+ BUILD_FREETYPE=no
+ fi
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_BASE_DIR/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$FREETYPE_BASE_DIR/lib64"
+ METHOD="well-known location"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
+$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
+$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
+$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
+$as_echo_n "checking for freetype includes... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
+$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
+$as_echo_n "checking for freetype libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
+$as_echo "$FREETYPE_LIB_PATH" >&6; }
+ fi
+
+ else
+
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_BASE_DIR/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$FREETYPE_BASE_DIR/lib32"
+ METHOD="well-known location"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
+$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
+$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
+$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
+$as_echo_n "checking for freetype includes... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
+$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
+$as_echo_n "checking for freetype libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
+$as_echo "$FREETYPE_LIB_PATH" >&6; }
+ fi
+
+ fi
+ fi
+ fi
+ else
+ FREETYPE_BASE_DIR="$SYSROOT/usr"
+
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_BASE_DIR/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$FREETYPE_BASE_DIR/lib"
+ METHOD="well-known location"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
+$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
+$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
+$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
+$as_echo_n "checking for freetype includes... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
+$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
+$as_echo_n "checking for freetype libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
+$as_echo "$FREETYPE_LIB_PATH" >&6; }
+ fi
+
+
+ if test "x$FOUND_FREETYPE" != xyes; then
+ FREETYPE_BASE_DIR="$SYSROOT/usr/X11"
+
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_BASE_DIR/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$FREETYPE_BASE_DIR/lib"
+ METHOD="well-known location"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
+$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
+$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
+$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
+$as_echo_n "checking for freetype includes... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
+$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
+$as_echo_n "checking for freetype libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
+$as_echo "$FREETYPE_LIB_PATH" >&6; }
+ fi
+
+ fi
+ if test "x$FOUND_FREETYPE" != xyes; then
+ FREETYPE_BASE_DIR="$SYSROOT/usr/local"
+
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_BASE_DIR/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$FREETYPE_BASE_DIR/lib"
+ METHOD="well-known location"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
+$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
+$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
+$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
+$as_echo_n "checking for freetype includes... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
+$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
+$as_echo_n "checking for freetype libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
+$as_echo "$FREETYPE_LIB_PATH" >&6; }
+ fi
+
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ if test "x$FOUND_FREETYPE" != xyes; then
+ # Due to changes in OSX 10.11 XQuartz now installs to /opt/X11
+ FREETYPE_BASE_DIR="$SYSROOT/opt/X11"
+
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_BASE_DIR/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$FREETYPE_BASE_DIR/lib"
+ METHOD="well-known location"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
+$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
+$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
+$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
+$as_echo_n "checking for freetype includes... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
+$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
+$as_echo_n "checking for freetype libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
+$as_echo "$FREETYPE_LIB_PATH" >&6; }
+ fi
+
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" != xyes; then
+ FREETYPE_BASE_DIR="$SYSROOT/usr"
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_BASE_DIR/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$FREETYPE_BASE_DIR/lib/x86_64-linux-gnu"
+ METHOD="well-known location"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
+$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
+$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
+$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
+$as_echo_n "checking for freetype includes... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
+$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
+$as_echo_n "checking for freetype libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
+$as_echo "$FREETYPE_LIB_PATH" >&6; }
+ fi
+
+ else
+
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_BASE_DIR/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$FREETYPE_BASE_DIR/lib/i386-linux-gnu"
+ METHOD="well-known location"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
+$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
+$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
+$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
+$as_echo_n "checking for freetype includes... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
+$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
+$as_echo_n "checking for freetype libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
+$as_echo "$FREETYPE_LIB_PATH" >&6; }
+ fi
+
+ if test "x$FOUND_FREETYPE" != xyes; then
+
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_BASE_DIR/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$FREETYPE_BASE_DIR/lib32"
+ METHOD="well-known location"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&5
+$as_echo "$as_me: Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD" >&6;}
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Compensating for missing symlink by using version 6 explicitly" >&5
+$as_echo "$as_me: Compensating for missing symlink by using version 6 explicitly" >&6;}
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&5
+$as_echo "$as_me: Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location." >&6;}
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&5
+$as_echo "$as_me: Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead" >&6;}
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ # Only process if variable expands to non-empty
+
+ if test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of POTENTIAL_FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting POTENTIAL_FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$POTENTIAL_FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of POTENTIAL_FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ POTENTIAL_FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype includes" >&5
+$as_echo_n "checking for freetype includes... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_INCLUDE_PATH" >&5
+$as_echo "$FREETYPE_INCLUDE_PATH" >&6; }
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype libraries" >&5
+$as_echo_n "checking for freetype libraries... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FREETYPE_LIB_PATH" >&5
+$as_echo "$FREETYPE_LIB_PATH" >&6; }
+ fi
+
+ fi
+ fi
+ fi
+ fi
+ fi # end check in well-known locations
+
+ if test "x$FOUND_FREETYPE" != xyes; then
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # freetype is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=freetype
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ as_fn_error $? "Could not find freetype! $HELP_MSG " "$LINENO" 5
+ fi
+ fi # end user specified settings
+
+ # Set FREETYPE_CFLAGS, _LIBS and _LIB_PATH from include and lib dir.
+ if test "x$FREETYPE_CFLAGS" = x; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FREETYPE_INCLUDE_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$FREETYPE_INCLUDE_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of FREETYPE_INCLUDE_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$FREETYPE_INCLUDE_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ FREETYPE_INCLUDE_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FREETYPE_INCLUDE_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting FREETYPE_INCLUDE_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$FREETYPE_INCLUDE_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of FREETYPE_INCLUDE_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ FREETYPE_INCLUDE_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ FREETYPE_INCLUDE_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ if test -d $FREETYPE_INCLUDE_PATH/freetype2/freetype; then
+ FREETYPE_CFLAGS="-I$FREETYPE_INCLUDE_PATH/freetype2 -I$FREETYPE_INCLUDE_PATH"
+ else
+ FREETYPE_CFLAGS="-I$FREETYPE_INCLUDE_PATH"
+ fi
+ fi
+
+ if test "x$FREETYPE_LIBS" = x; then
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FREETYPE_LIB_PATH" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$FREETYPE_LIB_PATH"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of FREETYPE_LIB_PATH" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$FREETYPE_LIB_PATH"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ FREETYPE_LIB_PATH="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FREETYPE_LIB_PATH to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting FREETYPE_LIB_PATH to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$FREETYPE_LIB_PATH"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of FREETYPE_LIB_PATH, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of FREETYPE_LIB_PATH, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ FREETYPE_LIB_PATH="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ FREETYPE_LIB_PATH="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ FREETYPE_LIBS="$FREETYPE_LIB_PATH/$FREETYPE_BASE_NAME.lib"
+ else
+ FREETYPE_LIBS="-L$FREETYPE_LIB_PATH -l$FREETYPE_BASE_NAME"
+ fi
+ fi
+
+ # Try to compile it
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can compile and link with freetype" >&5
+$as_echo_n "checking if we can compile and link with freetype... " >&6; }
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ PREV_CXXCFLAGS="$CXXFLAGS"
+ PREV_LIBS="$LIBS"
+ PREV_CXX="$CXX"
+ CXXFLAGS="$CXXFLAGS $FREETYPE_CFLAGS"
+ LIBS="$LIBS $FREETYPE_LIBS"
+ CXX="$FIXPATH $CXX"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include<ft2build.h>
+ #include FT_FREETYPE_H
+ int main () {
+ FT_Init_FreeType(NULL);
+ return 0;
+ }
+
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not compile and link with freetype. This might be a 32/64-bit mismatch." >&5
+$as_echo "$as_me: Could not compile and link with freetype. This might be a 32/64-bit mismatch." >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Using FREETYPE_CFLAGS=$FREETYPE_CFLAGS and FREETYPE_LIBS=$FREETYPE_LIBS" >&5
+$as_echo "$as_me: Using FREETYPE_CFLAGS=$FREETYPE_CFLAGS and FREETYPE_LIBS=$FREETYPE_LIBS" >&6;}
+
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # freetype is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=freetype
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+
+ as_fn_error $? "Can not continue without freetype. $HELP_MSG" "$LINENO" 5
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CXXCFLAGS="$PREV_CXXFLAGS"
+ LIBS="$PREV_LIBS"
+ CXX="$PREV_CXX"
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should bundle freetype" >&5
+$as_echo_n "checking if we should bundle freetype... " >&6; }
+ if test "x$BUNDLE_FREETYPE" = xyes; then
+ FREETYPE_BUNDLE_LIB_PATH="$FREETYPE_LIB_PATH"
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BUNDLE_FREETYPE" >&5
+$as_echo "$BUNDLE_FREETYPE" >&6; }
+
+ fi # end freetype needed
+
+ FREETYPE_LICENSE=""
+ if test "x$with_freetype_license" = "xyes"; then
+ as_fn_error $? "--with-freetype-license must have a value" "$LINENO" 5
+ elif test "x$with_freetype_license" != "x"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for freetype license" >&5
+$as_echo_n "checking for freetype license... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_freetype_license" >&5
+$as_echo "$with_freetype_license" >&6; }
+ FREETYPE_LICENSE="$with_freetype_license"
+
+ # Only process if variable expands to non-empty
+
+ if test "x$FREETYPE_LICENSE" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$FREETYPE_LICENSE"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FREETYPE_LICENSE, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of FREETYPE_LICENSE, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of FREETYPE_LICENSE" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ FREETYPE_LICENSE="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FREETYPE_LICENSE to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting FREETYPE_LICENSE to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$FREETYPE_LICENSE"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ FREETYPE_LICENSE="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting FREETYPE_LICENSE to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting FREETYPE_LICENSE to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$FREETYPE_LICENSE"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of FREETYPE_LICENSE, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of FREETYPE_LICENSE, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of FREETYPE_LICENSE, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ FREETYPE_LICENSE="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ FREETYPE_LICENSE="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ if test ! -f "$FREETYPE_LICENSE"; then
+ as_fn_error $? "$FREETYPE_LICENSE cannot be found" "$LINENO" 5
+ fi
+ fi
+
+
+
+
+
+
+
+
+# Check whether --with-alsa was given.
+if test "${with_alsa+set}" = set; then :
+ withval=$with_alsa;
+fi
+
+
+# Check whether --with-alsa-include was given.
+if test "${with_alsa_include+set}" = set; then :
+ withval=$with_alsa_include;
+fi
+
+
+# Check whether --with-alsa-lib was given.
+if test "${with_alsa_lib+set}" = set; then :
+ withval=$with_alsa_lib;
+fi
+
+
+ if test "x$NEEDS_LIB_ALSA" = xfalse; then
+ if (test "x${with_alsa}" != x && test "x${with_alsa}" != xno) || \
+ (test "x${with_alsa_include}" != x && test "x${with_alsa_include}" != xno) || \
+ (test "x${with_alsa_lib}" != x && test "x${with_alsa_lib}" != xno); then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: alsa not used, so --with-alsa[-*] is ignored" >&5
+$as_echo "$as_me: WARNING: alsa not used, so --with-alsa[-*] is ignored" >&2;}
+ fi
+ ALSA_CFLAGS=
+ ALSA_LIBS=
+ else
+ ALSA_FOUND=no
+
+ if test "x${with_alsa}" = xno || test "x${with_alsa_include}" = xno || test "x${with_alsa_lib}" = xno; then
+ as_fn_error $? "It is not possible to disable the use of alsa. Remove the --without-alsa option." "$LINENO" 5
+ fi
+
+ if test "x${with_alsa}" != x; then
+ ALSA_LIBS="-L${with_alsa}/lib -lasound"
+ ALSA_CFLAGS="-I${with_alsa}/include"
+ ALSA_FOUND=yes
+ fi
+ if test "x${with_alsa_include}" != x; then
+ ALSA_CFLAGS="-I${with_alsa_include}"
+ ALSA_FOUND=yes
+ fi
+ if test "x${with_alsa_lib}" != x; then
+ ALSA_LIBS="-L${with_alsa_lib} -lasound"
+ ALSA_FOUND=yes
+ fi
+ # Do not try pkg-config if we have a sysroot set.
+ if test "x$SYSROOT" = x; then
+ if test "x$ALSA_FOUND" = xno; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ALSA" >&5
+$as_echo_n "checking for ALSA... " >&6; }
+
+if test -n "$ALSA_CFLAGS"; then
+ pkg_cv_ALSA_CFLAGS="$ALSA_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"alsa\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "alsa") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_ALSA_CFLAGS=`$PKG_CONFIG --cflags "alsa" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$ALSA_LIBS"; then
+ pkg_cv_ALSA_LIBS="$ALSA_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"alsa\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "alsa") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_ALSA_LIBS=`$PKG_CONFIG --libs "alsa" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ ALSA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "alsa" 2>&1`
+ else
+ ALSA_PKG_ERRORS=`$PKG_CONFIG --print-errors "alsa" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$ALSA_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ ALSA_FOUND=no
+elif test $pkg_failed = untried; then
+ ALSA_FOUND=no
+else
+ ALSA_CFLAGS=$pkg_cv_ALSA_CFLAGS
+ ALSA_LIBS=$pkg_cv_ALSA_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ ALSA_FOUND=yes
+fi
+ fi
+ fi
+ if test "x$ALSA_FOUND" = xno; then
+ for ac_header in alsa/asoundlib.h
+do :
+ ac_fn_cxx_check_header_mongrel "$LINENO" "alsa/asoundlib.h" "ac_cv_header_alsa_asoundlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_alsa_asoundlib_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_ALSA_ASOUNDLIB_H 1
+_ACEOF
+
+ ALSA_FOUND=yes
+ ALSA_CFLAGS=-Iignoreme
+ ALSA_LIBS=-lasound
+ DEFAULT_ALSA=yes
+
+else
+ ALSA_FOUND=no
+
+fi
+
+done
+
+ fi
+ if test "x$ALSA_FOUND" = xno; then
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # alsa is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=alsa
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ as_fn_error $? "Could not find alsa! $HELP_MSG" "$LINENO" 5
+ fi
+ fi
+
+
+
+
+
+
+# Check whether --with-libffi was given.
+if test "${with_libffi+set}" = set; then :
+ withval=$with_libffi;
+fi
+
+
+# Check whether --with-libffi-include was given.
+if test "${with_libffi_include+set}" = set; then :
+ withval=$with_libffi_include;
+fi
+
+
+# Check whether --with-libffi-lib was given.
+if test "${with_libffi_lib+set}" = set; then :
+ withval=$with_libffi_lib;
+fi
+
+ # Check whether --enable-libffi-bundling was given.
+if test "${enable_libffi_bundling+set}" = set; then :
+ enableval=$enable_libffi_bundling;
+fi
+
+
+ if test "x$NEEDS_LIB_FFI" = xfalse; then
+ if (test "x${with_libffi}" != x && test "x${with_libffi}" != xno) || \
+ (test "x${with_libffi_include}" != x && test "x${with_libffi_include}" != xno) || \
+ (test "x${with_libffi_lib}" != x && test "x${with_libffi_lib}" != xno); then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libffi not used, so --with-libffi[-*] is ignored" >&5
+$as_echo "$as_me: WARNING: libffi not used, so --with-libffi[-*] is ignored" >&2;}
+ fi
+ LIBFFI_CFLAGS=
+ LIBFFI_LIBS=
+ else
+ LIBFFI_FOUND=no
+
+ if test "x${with_libffi}" = xno || test "x${with_libffi_include}" = xno || test "x${with_libffi_lib}" = xno; then
+ as_fn_error $? "It is not possible to disable the use of libffi. Remove the --without-libffi option." "$LINENO" 5
+ fi
+
+ if test "x${with_libffi}" != x; then
+ LIBFFI_LIB_PATH="${with_libffi}/lib"
+ LIBFFI_LIBS="-L${with_libffi}/lib -lffi"
+ LIBFFI_CFLAGS="-I${with_libffi}/include"
+ LIBFFI_FOUND=yes
+ fi
+ if test "x${with_libffi_include}" != x; then
+ LIBFFI_CFLAGS="-I${with_libffi_include}"
+ LIBFFI_FOUND=yes
+ fi
+ if test "x${with_libffi_lib}" != x; then
+ LIBFFI_LIB_PATH="${with_libffi_lib}"
+ LIBFFI_LIBS="-L${with_libffi_lib} -lffi"
+ LIBFFI_FOUND=yes
+ fi
+ # Do not try pkg-config if we have a sysroot set.
+ if test "x$SYSROOT" = x; then
+ if test "x$LIBFFI_FOUND" = xno; then
+ # Figure out LIBFFI_CFLAGS and LIBFFI_LIBS
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBFFI" >&5
+$as_echo_n "checking for LIBFFI... " >&6; }
+
+if test -n "$LIBFFI_CFLAGS"; then
+ pkg_cv_LIBFFI_CFLAGS="$LIBFFI_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libffi") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_LIBFFI_CFLAGS=`$PKG_CONFIG --cflags "libffi" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$LIBFFI_LIBS"; then
+ pkg_cv_LIBFFI_LIBS="$LIBFFI_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libffi") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_LIBFFI_LIBS=`$PKG_CONFIG --libs "libffi" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ LIBFFI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libffi" 2>&1`
+ else
+ LIBFFI_PKG_ERRORS=`$PKG_CONFIG --print-errors "libffi" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$LIBFFI_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ LIBFFI_FOUND=no
+elif test $pkg_failed = untried; then
+ LIBFFI_FOUND=no
+else
+ LIBFFI_CFLAGS=$pkg_cv_LIBFFI_CFLAGS
+ LIBFFI_LIBS=$pkg_cv_LIBFFI_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ LIBFFI_FOUND=yes
+fi
+ fi
+ fi
+ if test "x$LIBFFI_FOUND" = xno; then
+ for ac_header in ffi.h
+do :
+ ac_fn_cxx_check_header_mongrel "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default"
+if test "x$ac_cv_header_ffi_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_FFI_H 1
+_ACEOF
+
+ LIBFFI_FOUND=yes
+ LIBFFI_CFLAGS=
+ LIBFFI_LIBS=-lffi
+
+else
+ LIBFFI_FOUND=no
+
+fi
+
+done
+
+ fi
+ if test "x$LIBFFI_FOUND" = xno; then
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # ffi is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=ffi
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ as_fn_error $? "Could not find libffi! $HELP_MSG" "$LINENO" 5
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libffi works" >&5
+$as_echo_n "checking if libffi works... " >&6; }
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ OLD_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $LIBFFI_CFLAGS"
+ OLD_LIBS="$LIBS"
+ LIBS="$LIBS $LIBFFI_LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ffi.h>
+int
+main ()
+{
+
+ ffi_call(NULL, NULL, NULL, NULL);
+ return 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ LIBFFI_WORKS=yes
+else
+ LIBFFI_WORKS=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$OLD_CFLAGS"
+ LIBS="$OLD_LIBS"
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBFFI_WORKS" >&5
+$as_echo "$LIBFFI_WORKS" >&6; }
+
+ if test "x$LIBFFI_WORKS" = xno; then
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # ffi is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=ffi
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ as_fn_error $? "Found libffi but could not link and compile with it. $HELP_MSG" "$LINENO" 5
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libffi should be bundled" >&5
+$as_echo_n "checking if libffi should be bundled... " >&6; }
+ if test "x$enable_libffi_bundling" = "x"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ ENABLE_LIBFFI_BUNDLING=false
+ elif test "x$enable_libffi_bundling" = "xno"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, forced" >&5
+$as_echo "no, forced" >&6; }
+ ENABLE_LIBFFI_BUNDLING=false
+ elif test "x$enable_libffi_bundling" = "xyes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, forced" >&5
+$as_echo "yes, forced" >&6; }
+ ENABLE_LIBFFI_BUNDLING=true
+ else
+ as_fn_error $? "Invalid value for --enable-libffi-bundling" "$LINENO" 5
+ fi
+
+ # Find the libffi.so.X to bundle
+ if test "x${ENABLE_LIBFFI_BUNDLING}" = "xtrue"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libffi lib file location" >&5
+$as_echo_n "checking for libffi lib file location... " >&6; }
+ if test "x${LIBFFI_LIB_PATH}" != x; then
+ if test -e ${LIBFFI_LIB_PATH}/libffi.so.?; then
+ LIBFFI_LIB_FILE="${LIBFFI_LIB_PATH}/libffi.so.?"
+ else
+ as_fn_error $? "Could not locate libffi.so.? for bundling in ${LIBFFI_LIB_PATH}" "$LINENO" 5
+ fi
+ else
+ # If we don't have an explicit path, look in a few obvious places
+ if test "x${OPENJDK_TARGET_CPU}" = "xx86"; then
+ if test -e ${SYSROOT}/usr/lib/libffi.so.? ; then
+ LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/libffi.so.?"
+ elif test -e ${SYSROOT}/usr/lib/i386-linux-gnu/libffi.so.? ; then
+ LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/i386-linux-gnu/libffi.so.?"
+ else
+ as_fn_error $? "Could not locate libffi.so.? for bundling" "$LINENO" 5
+ fi
+ elif test "x${OPENJDK_TARGET_CPU}" = "xx86_64"; then
+ if test -e ${SYSROOT}/usr/lib64/libffi.so.? ; then
+ LIBFFI_LIB_FILE="${SYSROOT}/usr/lib64/libffi.so.?"
+ elif test -e ${SYSROOT}/usr/lib/x86_64-linux-gnu/libffi.so.? ; then
+ LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/x86_64-linux-gnu/libffi.so.?"
+ else
+ as_fn_error $? "Could not locate libffi.so.? for bundling" "$LINENO" 5
+ fi
+ else
+ # Fallback on the default /usr/lib dir
+ if test -e ${SYSROOT}/usr/lib/libffi.so.? ; then
+ LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/libffi.so.?"
+ else
+ as_fn_error $? "Could not locate libffi.so.? for bundling" "$LINENO" 5
+ fi
+ fi
+ fi
+ # Make sure the wildcard is evaluated
+ LIBFFI_LIB_FILE="$(ls ${LIBFFI_LIB_FILE})"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${LIBFFI_LIB_FILE}" >&5
+$as_echo "${LIBFFI_LIB_FILE}" >&6; }
+ fi
+ fi
+
+
+
+
+
+
+
+ if [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
+ # Extract the first word of "llvm-config", so it can be a program name with args.
+set dummy llvm-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LLVM_CONFIG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$LLVM_CONFIG"; then
+ ac_cv_prog_LLVM_CONFIG="$LLVM_CONFIG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_LLVM_CONFIG="llvm-config"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+LLVM_CONFIG=$ac_cv_prog_LLVM_CONFIG
+if test -n "$LLVM_CONFIG"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LLVM_CONFIG" >&5
+$as_echo "$LLVM_CONFIG" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+ if test "x$LLVM_CONFIG" != xllvm-config; then
+ as_fn_error $? "llvm-config not found in $PATH." "$LINENO" 5
+ fi
+
+ llvm_components="jit mcjit engine nativecodegen native"
+ unset LLVM_CFLAGS
+ for flag in $("$LLVM_CONFIG" --cxxflags); do
+ if echo "${flag}" | grep -q '^-[ID]'; then
+ if test "${flag}" != "-D_DEBUG" ; then
+ if test "${LLVM_CFLAGS}" != "" ; then
+ LLVM_CFLAGS="${LLVM_CFLAGS} "
+ fi
+ LLVM_CFLAGS="${LLVM_CFLAGS}${flag}"
+ fi
+ fi
+ done
+ llvm_version=$("${LLVM_CONFIG}" --version | $SED 's/\.//; s/svn.*//')
+ LLVM_CFLAGS="${LLVM_CFLAGS} -DSHARK_LLVM_VERSION=${llvm_version}"
+
+ unset LLVM_LDFLAGS
+ for flag in $("${LLVM_CONFIG}" --ldflags); do
+ if echo "${flag}" | grep -q '^-L'; then
+ if test "${LLVM_LDFLAGS}" != ""; then
+ LLVM_LDFLAGS="${LLVM_LDFLAGS} "
+ fi
+ LLVM_LDFLAGS="${LLVM_LDFLAGS}${flag}"
+ fi
+ done
+
+ unset LLVM_LIBS
+ for flag in $("${LLVM_CONFIG}" --libs ${llvm_components}); do
+ if echo "${flag}" | grep -q '^-l'; then
+ if test "${LLVM_LIBS}" != ""; then
+ LLVM_LIBS="${LLVM_LIBS} "
+ fi
+ LLVM_LIBS="${LLVM_LIBS}${flag}"
+ fi
+ done
+
+ # Due to https://llvm.org/bugs/show_bug.cgi?id=16902, llvm does not
+ # always properly detect -ltinfo
+ LLVM_LIBS="${LLVM_LIBS} -ltinfo"
+
+
+
+
+ fi
+
+
+
+# Check whether --with-libjpeg was given.
+if test "${with_libjpeg+set}" = set; then :
+ withval=$with_libjpeg;
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for which libjpeg to use" >&5
+$as_echo_n "checking for which libjpeg to use... " >&6; }
+ # default is bundled
+ DEFAULT_LIBJPEG=bundled
+ # if user didn't specify, use DEFAULT_LIBJPEG
+ if test "x${with_libjpeg}" = "x"; then
+ with_libjpeg=${DEFAULT_LIBJPEG}
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_libjpeg}" >&5
+$as_echo "${with_libjpeg}" >&6; }
+
+ if test "x${with_libjpeg}" = "xbundled"; then
+ USE_EXTERNAL_LIBJPEG=false
+ elif test "x${with_libjpeg}" = "xsystem"; then
+ ac_fn_cxx_check_header_mongrel "$LINENO" "jpeglib.h" "ac_cv_header_jpeglib_h" "$ac_includes_default"
+if test "x$ac_cv_header_jpeglib_h" = xyes; then :
+
+else
+ as_fn_error $? "--with-libjpeg=system specified, but jpeglib.h not found!" "$LINENO" 5
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jpeg_CreateDecompress in -ljpeg" >&5
+$as_echo_n "checking for jpeg_CreateDecompress in -ljpeg... " >&6; }
+if ${ac_cv_lib_jpeg_jpeg_CreateDecompress+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ljpeg $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char jpeg_CreateDecompress ();
+int
+main ()
+{
+return jpeg_CreateDecompress ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ ac_cv_lib_jpeg_jpeg_CreateDecompress=yes
+else
+ ac_cv_lib_jpeg_jpeg_CreateDecompress=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jpeg_jpeg_CreateDecompress" >&5
+$as_echo "$ac_cv_lib_jpeg_jpeg_CreateDecompress" >&6; }
+if test "x$ac_cv_lib_jpeg_jpeg_CreateDecompress" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBJPEG 1
+_ACEOF
+
+ LIBS="-ljpeg $LIBS"
+
+else
+ as_fn_error $? "--with-libjpeg=system specified, but no libjpeg found" "$LINENO" 5
+fi
+
+
+ USE_EXTERNAL_LIBJPEG=true
+ else
+ as_fn_error $? "Invalid use of --with-libjpeg: ${with_libjpeg}, use 'system' or 'bundled'" "$LINENO" 5
+ fi
+
+
+
+
+
+# Check whether --with-giflib was given.
+if test "${with_giflib+set}" = set; then :
+ withval=$with_giflib;
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for which giflib to use" >&5
+$as_echo_n "checking for which giflib to use... " >&6; }
+ # default is bundled
+ DEFAULT_GIFLIB=bundled
+ # if user didn't specify, use DEFAULT_GIFLIB
+ if test "x${with_giflib}" = "x"; then
+ with_giflib=${DEFAULT_GIFLIB}
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_giflib}" >&5
+$as_echo "${with_giflib}" >&6; }
+
+ if test "x${with_giflib}" = "xbundled"; then
+ USE_EXTERNAL_LIBGIF=false
+ elif test "x${with_giflib}" = "xsystem"; then
+ ac_fn_cxx_check_header_mongrel "$LINENO" "gif_lib.h" "ac_cv_header_gif_lib_h" "$ac_includes_default"
+if test "x$ac_cv_header_gif_lib_h" = xyes; then :
+
+else
+ as_fn_error $? "--with-giflib=system specified, but gif_lib.h not found!" "$LINENO" 5
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DGifGetCode in -lgif" >&5
+$as_echo_n "checking for DGifGetCode in -lgif... " >&6; }
+if ${ac_cv_lib_gif_DGifGetCode+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgif $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char DGifGetCode ();
+int
+main ()
+{
+return DGifGetCode ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ ac_cv_lib_gif_DGifGetCode=yes
+else
+ ac_cv_lib_gif_DGifGetCode=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gif_DGifGetCode" >&5
+$as_echo "$ac_cv_lib_gif_DGifGetCode" >&6; }
+if test "x$ac_cv_lib_gif_DGifGetCode" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBGIF 1
+_ACEOF
+
+ LIBS="-lgif $LIBS"
+
+else
+ as_fn_error $? "--with-giflib=system specified, but no giflib found!" "$LINENO" 5
+fi
+
+
+ USE_EXTERNAL_LIBGIF=true
+ else
+ as_fn_error $? "Invalid value of --with-giflib: ${with_giflib}, use 'system' or 'bundled'" "$LINENO" 5
+ fi
+
+
+
+
+
+# Check whether --with-libpng was given.
+if test "${with_libpng+set}" = set; then :
+ withval=$with_libpng;
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for which libpng to use" >&5
+$as_echo_n "checking for which libpng to use... " >&6; }
+
+ # default is bundled
+ DEFAULT_LIBPNG=bundled
+ # if user didn't specify, use DEFAULT_LIBPNG
+ if test "x${with_libpng}" = "x"; then
+ with_libpng=${DEFAULT_LIBPNG}
+ fi
+
+ if test "x${with_libpng}" = "xbundled"; then
+ USE_EXTERNAL_LIBPNG=false
+ PNG_CFLAGS=""
+ PNG_LIBS=""
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: bundled" >&5
+$as_echo "bundled" >&6; }
+ elif test "x${with_libpng}" = "xsystem"; then
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PNG" >&5
+$as_echo_n "checking for PNG... " >&6; }
+
+if test -n "$PNG_CFLAGS"; then
+ pkg_cv_PNG_CFLAGS="$PNG_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libpng") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_PNG_CFLAGS=`$PKG_CONFIG --cflags "libpng" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$PNG_LIBS"; then
+ pkg_cv_PNG_LIBS="$PNG_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpng\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libpng") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_PNG_LIBS=`$PKG_CONFIG --libs "libpng" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ PNG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libpng" 2>&1`
+ else
+ PNG_PKG_ERRORS=`$PKG_CONFIG --print-errors "libpng" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$PNG_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ LIBPNG_FOUND=no
+elif test $pkg_failed = untried; then
+ LIBPNG_FOUND=no
+else
+ PNG_CFLAGS=$pkg_cv_PNG_CFLAGS
+ PNG_LIBS=$pkg_cv_PNG_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ LIBPNG_FOUND=yes
+fi
+ if test "x${LIBPNG_FOUND}" = "xyes"; then
+ # PKG_CHECK_MODULES will set PNG_CFLAGS and PNG_LIBS
+ USE_EXTERNAL_LIBPNG=true
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: system" >&5
+$as_echo "system" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: system not found" >&5
+$as_echo "system not found" >&6; }
+ as_fn_error $? "--with-libpng=system specified, but no libpng found!" "$LINENO" 5
+ fi
+ else
+ as_fn_error $? "Invalid value of --with-libpng: ${with_libpng}, use 'system' or 'bundled'" "$LINENO" 5
+ fi
+
+
+
+
+
+
+
+# Check whether --with-zlib was given.
+if test "${with_zlib+set}" = set; then :
+ withval=$with_zlib;
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compress in -lz" >&5
+$as_echo_n "checking for compress in -lz... " >&6; }
+if ${ac_cv_lib_z_compress+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lz $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char compress ();
+int
+main ()
+{
+return compress ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ ac_cv_lib_z_compress=yes
+else
+ ac_cv_lib_z_compress=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_compress" >&5
+$as_echo "$ac_cv_lib_z_compress" >&6; }
+if test "x$ac_cv_lib_z_compress" = xyes; then :
+ ZLIB_FOUND=yes
+else
+ ZLIB_FOUND=no
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for which zlib to use" >&5
+$as_echo_n "checking for which zlib to use... " >&6; }
+
+ DEFAULT_ZLIB=system
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On windows default is bundled...on others default is system
+ DEFAULT_ZLIB=bundled
+ fi
+
+ if test "x${ZLIB_FOUND}" != "xyes"; then
+ # If we don't find any system...set default to bundled
+ DEFAULT_ZLIB=bundled
+ fi
+
+ # If user didn't specify, use DEFAULT_ZLIB
+ if test "x${with_zlib}" = "x"; then
+ with_zlib=${DEFAULT_ZLIB}
+ fi
+
+ if test "x${with_zlib}" = "xbundled"; then
+ USE_EXTERNAL_LIBZ=false
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: bundled" >&5
+$as_echo "bundled" >&6; }
+ elif test "x${with_zlib}" = "xsystem"; then
+ if test "x${ZLIB_FOUND}" = "xyes"; then
+ USE_EXTERNAL_LIBZ=true
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: system" >&5
+$as_echo "system" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: system not found" >&5
+$as_echo "system not found" >&6; }
+ as_fn_error $? "--with-zlib=system specified, but no zlib found!" "$LINENO" 5
+ fi
+ else
+ as_fn_error $? "Invalid value for --with-zlib: ${with_zlib}, use 'system' or 'bundled'" "$LINENO" 5
+ fi
+
+
+
+
+
+# Check whether --with-lcms was given.
+if test "${with_lcms+set}" = set; then :
+ withval=$with_lcms;
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for which lcms to use" >&5
+$as_echo_n "checking for which lcms to use... " >&6; }
+
+ DEFAULT_LCMS=bundled
+ # If user didn't specify, use DEFAULT_LCMS
+ if test "x${with_lcms}" = "x"; then
+ with_lcms=${DEFAULT_LCMS}
+ fi
+
+ if test "x${with_lcms}" = "xbundled"; then
+ USE_EXTERNAL_LCMS=false
+ LCMS_CFLAGS=""
+ LCMS_LIBS=""
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: bundled" >&5
+$as_echo "bundled" >&6; }
+ elif test "x${with_lcms}" = "xsystem"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: system" >&5
+$as_echo "system" >&6; }
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LCMS" >&5
+$as_echo_n "checking for LCMS... " >&6; }
+
+if test -n "$LCMS_CFLAGS"; then
+ pkg_cv_LCMS_CFLAGS="$LCMS_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "lcms2") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_LCMS_CFLAGS=`$PKG_CONFIG --cflags "lcms2" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$LCMS_LIBS"; then
+ pkg_cv_LCMS_LIBS="$LCMS_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lcms2\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "lcms2") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_LCMS_LIBS=`$PKG_CONFIG --libs "lcms2" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ LCMS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "lcms2" 2>&1`
+ else
+ LCMS_PKG_ERRORS=`$PKG_CONFIG --print-errors "lcms2" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$LCMS_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ LCMS_FOUND=no
+elif test $pkg_failed = untried; then
+ LCMS_FOUND=no
+else
+ LCMS_CFLAGS=$pkg_cv_LCMS_CFLAGS
+ LCMS_LIBS=$pkg_cv_LCMS_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ LCMS_FOUND=yes
+fi
+ if test "x${LCMS_FOUND}" = "xyes"; then
+ # PKG_CHECK_MODULES will set LCMS_CFLAGS and LCMS_LIBS
+ USE_EXTERNAL_LCMS=true
+ else
+ as_fn_error $? "--with-lcms=system specified, but no lcms found!" "$LINENO" 5
+ fi
+ else
+ as_fn_error $? "Invalid value for --with-lcms: ${with_lcms}, use 'system' or 'bundled'" "$LINENO" 5
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+ # Setup libm (the maths library)
+ if test "x$OPENJDK_TARGET_OS" != "xwindows"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5
+$as_echo_n "checking for cos in -lm... " >&6; }
+if ${ac_cv_lib_m_cos+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char cos ();
+int
+main ()
+{
+return cos ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ ac_cv_lib_m_cos=yes
+else
+ ac_cv_lib_m_cos=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5
+$as_echo "$ac_cv_lib_m_cos" >&6; }
+if test "x$ac_cv_lib_m_cos" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+ LIBS="-lm $LIBS"
+
+else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Maths library was not found" >&5
+$as_echo "$as_me: Maths library was not found" >&6;}
+
+fi
+
+ LIBM="-lm"
+ else
+ LIBM=""
+ fi
+
+
+ # Setup libdl (for dynamic library loading)
+ save_LIBS="$LIBS"
+ LIBS=""
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+ ac_cv_lib_dl_dlopen=yes
+else
+ ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBDL 1
+_ACEOF
+
+ LIBS="-ldl $LIBS"
+
+fi
+
+ LIBDL="$LIBS"
+
+ LIBS="$save_LIBS"
+
+ # Deprecated libraries, keep the flags for backwards compatibility
+ if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
+
+
+# Check whether --with-dxsdk was given.
+if test "${with_dxsdk+set}" = set; then :
+ withval=$with_dxsdk; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-dxsdk is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-dxsdk is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-dxsdk-lib was given.
+if test "${with_dxsdk_lib+set}" = set; then :
+ withval=$with_dxsdk_lib; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-dxsdk-lib is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-dxsdk-lib is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+# Check whether --with-dxsdk-include was given.
+if test "${with_dxsdk_include+set}" = set; then :
+ withval=$with_dxsdk_include; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-dxsdk-include is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-dxsdk-include is deprecated and will be ignored." >&2;}
+fi
+
+
+ fi
+
+ # Control if libzip can use mmap. Available for purposes of overriding.
+ LIBZIP_CAN_USE_MMAP=true
+
+
+
+ if test "$OPENJDK_TARGET_OS" = "solaris" && test "x$BUILD_GTEST" = "xtrue"; then
+ # Find the root of the Solaris Studio installation from the compiler path
+ SOLARIS_STUDIO_DIR="$(dirname $CC)/.."
+ STLPORT_LIB="$SOLARIS_STUDIO_DIR/lib/stlport4$OPENJDK_TARGET_CPU_ISADIR/libstlport.so.1"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libstlport.so.1" >&5
+$as_echo_n "checking for libstlport.so.1... " >&6; }
+ if ! test -f "$STLPORT_LIB" && test "x$OPENJDK_TARGET_CPU_ISADIR" = "x/sparcv9"; then
+ # SS12u3 has libstlport under 'stlport4/v9' instead of 'stlport4/sparcv9'
+ STLPORT_LIB="$SOLARIS_STUDIO_DIR/lib/stlport4/v9/libstlport.so.1"
+ fi
+ if test -f "$STLPORT_LIB"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, $STLPORT_LIB" >&5
+$as_echo "yes, $STLPORT_LIB" >&6; }
+
+ # Only process if variable expands to non-empty
+
+ if test "x$STLPORT_LIB" != x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+ # Input might be given as Windows format, start by converting to
+ # unix format.
+ path="$STLPORT_LIB"
+ new_path=`$CYGPATH -u "$path"`
+
+ # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+ # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+ # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+ # "foo.exe" is OK but "foo" is an error.
+ #
+ # This test is therefore slightly more accurate than "test -f" to check for file precense.
+ # It is also a way to make sure we got the proper file name for the real test later on.
+ test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+ if test "x$test_shortpath" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STLPORT_LIB, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of STLPORT_LIB, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Cannot locate the the path of STLPORT_LIB" "$LINENO" 5
+ fi
+
+ # Call helper function which possibly converts this using DOS-style short mode.
+ # If so, the updated path is stored in $new_path.
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+ path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+ if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+ # Going to short mode and back again did indeed matter. Since short mode is
+ # case insensitive, let's make it lowercase to improve readability.
+ shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Now convert it back to Unix-style (cygpath)
+ input_path=`$CYGPATH -u "$shortmode_path"`
+ new_path="$input_path"
+ fi
+ fi
+
+ test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+ if test "x$test_cygdrive_prefix" = x; then
+ # As a simple fix, exclude /usr/bin since it's not a real path.
+ if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+ # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+ # a path prefixed by /cygdrive for fixpath to work.
+ new_path="$CYGWIN_ROOT_PATH$input_path"
+ fi
+ fi
+
+
+ if test "x$path" != "x$new_path"; then
+ STLPORT_LIB="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting STLPORT_LIB to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting STLPORT_LIB to \"$new_path\"" >&6;}
+ fi
+
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+ path="$STLPORT_LIB"
+ has_colon=`$ECHO $path | $GREP ^.:`
+ new_path="$path"
+ if test "x$has_colon" = x; then
+ # Not in mixed or Windows style, start by that.
+ new_path=`cmd //c echo $path`
+ fi
+
+
+ input_path="$new_path"
+ # Check if we need to convert this using DOS-style short mode. If the path
+ # contains just simple characters, use it. Otherwise (spaces, weird characters),
+ # take no chances and rewrite it.
+ # Note: m4 eats our [], so we need to use [ and ] instead.
+ has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+ if test "x$has_forbidden_chars" != x; then
+ # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+ new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ fi
+
+
+ windows_path="$new_path"
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ unix_path=`$CYGPATH -u "$windows_path"`
+ new_path="$unix_path"
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+ new_path="$unix_path"
+ fi
+
+ if test "x$path" != "x$new_path"; then
+ STLPORT_LIB="$new_path"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting STLPORT_LIB to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting STLPORT_LIB to \"$new_path\"" >&6;}
+ fi
+
+ # Save the first 10 bytes of this path to the storage, so fixpath can work.
+ all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+ else
+ # We're on a unix platform. Hooray! :)
+ path="$STLPORT_LIB"
+ has_space=`$ECHO "$path" | $GREP " "`
+ if test "x$has_space" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: The path of STLPORT_LIB, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of STLPORT_LIB, which resolves as \"$path\", is invalid." >&6;}
+ as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+ fi
+
+ # Use eval to expand a potential ~
+ eval path="$path"
+ if test ! -f "$path" && test ! -d "$path"; then
+ as_fn_error $? "The path of STLPORT_LIB, which resolves as \"$path\", is not found." "$LINENO" 5
+ fi
+
+ if test -d "$path"; then
+ STLPORT_LIB="`cd "$path"; $THEPWDCMD -L`"
+ else
+ dir="`$DIRNAME "$path"`"
+ base="`$BASENAME "$path"`"
+ STLPORT_LIB="`cd "$dir"; $THEPWDCMD -L`/$base"
+ fi
+ fi
+ fi
+
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, not found at $STLPORT_LIB" >&5
+$as_echo "no, not found at $STLPORT_LIB" >&6; }
+ as_fn_error $? "Failed to find libstlport.so.1, cannot build Hotspot gtests" "$LINENO" 5
+ fi
+
+ fi
+
+
+
+# Check whether --with-libelf was given.
+if test "${with_libelf+set}" = set; then :
+ withval=$with_libelf;
+fi
+
+
+# Check whether --with-libelf-include was given.
+if test "${with_libelf_include+set}" = set; then :
+ withval=$with_libelf_include;
+fi
+
+
+# Check whether --with-libelf-lib was given.
+if test "${with_libelf_lib+set}" = set; then :
+ withval=$with_libelf_lib;
+fi
+
+
+ if test "x$ENABLE_AOT" = xfalse; then
+ if (test "x${with_libelf}" != x && test "x${with_libelf}" != xno) || \
+ (test "x${with_libelf_include}" != x && test "x${with_libelf_include}" != xno) || \
+ (test "x${with_libelf_lib}" != x && test "x${with_libelf_lib}" != xno); then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libelf is not used, so --with-libelf[-*] is ignored" >&5
+$as_echo "$as_me: WARNING: libelf is not used, so --with-libelf[-*] is ignored" >&2;}
+ fi
+ LIBELF_CFLAGS=
+ LIBELF_LIBS=
+ else
+ LIBELF_FOUND=no
+
+ if test "x${with_libelf}" = xno || test "x${with_libelf_include}" = xno || test "x${with_libelf_lib}" = xno; then
+ ENABLE_AOT="false"
+ if test "x${enable_aot}" = xyes; then
+ as_fn_error $? "libelf is explicitly disabled, cannot build AOT. Enable libelf or remove --enable-aot to disable AOT." "$LINENO" 5
+ fi
+ else
+ if test "x${with_libelf}" != x; then
+ ELF_LIBS="-L${with_libelf}/lib -lelf"
+ ELF_CFLAGS="-I${with_libelf}/include"
+ LIBELF_FOUND=yes
+ fi
+ if test "x${with_libelf_include}" != x; then
+ ELF_CFLAGS="-I${with_libelf_include}"
+ LIBELF_FOUND=yes
+ fi
+ if test "x${with_libelf_lib}" != x; then
+ ELF_LIBS="-L${with_libelf_lib} -lelf"
+ LIBELF_FOUND=yes
+ fi
+ # Do not try pkg-config if we have a sysroot set.
+ if test "x$SYSROOT" = x; then
+ if test "x$LIBELF_FOUND" = xno; then
+ # Figure out ELF_CFLAGS and ELF_LIBS
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ELF" >&5
+$as_echo_n "checking for ELF... " >&6; }
+
+if test -n "$ELF_CFLAGS"; then
+ pkg_cv_ELF_CFLAGS="$ELF_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libelf\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libelf") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_ELF_CFLAGS=`$PKG_CONFIG --cflags "libelf" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$ELF_LIBS"; then
+ pkg_cv_ELF_LIBS="$ELF_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libelf\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libelf") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_ELF_LIBS=`$PKG_CONFIG --libs "libelf" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ ELF_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libelf" 2>&1`
+ else
+ ELF_PKG_ERRORS=`$PKG_CONFIG --print-errors "libelf" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$ELF_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ LIBELF_FOUND=no
+elif test $pkg_failed = untried; then
+ LIBELF_FOUND=no
+else
+ ELF_CFLAGS=$pkg_cv_ELF_CFLAGS
+ ELF_LIBS=$pkg_cv_ELF_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ LIBELF_FOUND=yes
+fi
+ fi
+ fi
+ if test "x$LIBELF_FOUND" = xno; then
+ for ac_header in libelf.h
+do :
+ ac_fn_cxx_check_header_mongrel "$LINENO" "libelf.h" "ac_cv_header_libelf_h" "$ac_includes_default"
+if test "x$ac_cv_header_libelf_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBELF_H 1
+_ACEOF
+
+ LIBELF_FOUND=yes
+ ELF_CFLAGS=
+ ELF_LIBS=-lelf
+
+else
+ LIBELF_FOUND=no
+
+fi
+
+done
+
+ fi
+ if test "x$LIBELF_FOUND" = xno; then
+ ENABLE_AOT="false"
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # elf is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=elf
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ if test "x${enable_aot}" = xyes; then
+ as_fn_error $? "libelf not found, cannot build AOT. Remove --enable-aot to disable AOT or: $HELP_MSG" "$LINENO" 5
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libelf not found, cannot build AOT. $HELP_MSG" >&5
+$as_echo "$as_me: WARNING: libelf not found, cannot build AOT. $HELP_MSG" >&2;}
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libelf works" >&5
+$as_echo_n "checking if libelf works... " >&6; }
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ OLD_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $ELF_CFLAGS"
+ OLD_LIBS="$LIBS"
+ LIBS="$LIBS $ELF_LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <libelf.h>
+int
+main ()
+{
+
+ elf_version(0);
+ return 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ LIBELF_WORKS=yes
+else
+ LIBELF_WORKS=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ CFLAGS="$OLD_CFLAGS"
+ LIBS="$OLD_LIBS"
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBELF_WORKS" >&5
+$as_echo "$LIBELF_WORKS" >&6; }
+
+ if test "x$LIBELF_WORKS" = xno; then
+ ENABLE_AOT="false"
+
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # elf is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=elf
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+
+ if test "x$enable_aot" = "xyes"; then
+ as_fn_error $? "Found libelf but could not link and compile with it. Remove --enable-aot to disable AOT or: $HELP_MSG" "$LINENO" 5
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Found libelf but could not link and compile with it. $HELP_MSG" >&5
+$as_echo "$as_me: WARNING: Found libelf but could not link and compile with it. $HELP_MSG" >&2;}
+ fi
+ fi
+ fi
+ fi
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Hotspot setup depends on lib checks (AOT needs libelf).
+
+
+ # The user can in some cases supply additional jvm features. For the custom
+ # variant, this defines the entire variant.
+
+# Check whether --with-jvm-features was given.
+if test "${with_jvm_features+set}" = set; then :
+ withval=$with_jvm_features;
+fi
+
+ if test "x$with_jvm_features" != x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking additional JVM features" >&5
+$as_echo_n "checking additional JVM features... " >&6; }
+ JVM_FEATURES=`$ECHO $with_jvm_features | $SED -e 's/,/ /g'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JVM_FEATURES" >&5
+$as_echo "$JVM_FEATURES" >&6; }
+ fi
+
+ # Override hotspot cpu definitions for ARM platforms
+ if test "x$OPENJDK_TARGET_CPU" = xarm; then
+ HOTSPOT_TARGET_CPU=arm_32
+ HOTSPOT_TARGET_CPU_DEFINE="ARM32"
+ JVM_LDFLAGS="$JVM_LDFLAGS -fsigned-char"
+ JVM_CFLAGS="$JVM_CFLAGS -DARM -fsigned-char"
+ elif test "x$OPENJDK_TARGET_CPU" = xaarch64 && test "x$HOTSPOT_TARGET_CPU_PORT" = xarm64; then
+ HOTSPOT_TARGET_CPU=arm_64
+ HOTSPOT_TARGET_CPU_ARCH=arm
+ JVM_LDFLAGS="$JVM_LDFLAGS -fsigned-char"
+ JVM_CFLAGS="$JVM_CFLAGS -DARM -fsigned-char"
+ fi
+
+ # Verify that dependencies are met for explicitly set features.
+ if [[ " $JVM_FEATURES " =~ " jvmti " ]] && ! [[ " $JVM_FEATURES " =~ " services " ]] ; then
+ as_fn_error $? "Specified JVM feature 'jvmti' requires feature 'services'" "$LINENO" 5
+ fi
+
+ if [[ " $JVM_FEATURES " =~ " management " ]] && ! [[ " $JVM_FEATURES " =~ " nmt " ]] ; then
+ as_fn_error $? "Specified JVM feature 'management' requires feature 'nmt'" "$LINENO" 5
+ fi
+
+ if [[ " $JVM_FEATURES " =~ " jvmci " ]] && ! ( [[ " $JVM_FEATURES " =~ " compiler1 " ]] || [[ " $JVM_FEATURES " =~ " compiler2 " ]] ); then
+ as_fn_error $? "Specified JVM feature 'jvmci' requires feature 'compiler2' or 'compiler1'" "$LINENO" 5
+ fi
+
+ if [[ " $JVM_FEATURES " =~ " compiler2 " ]] && ! [[ " $JVM_FEATURES " =~ " all-gcs " ]] ; then
+ as_fn_error $? "Specified JVM feature 'compiler2' requires feature 'all-gcs'" "$LINENO" 5
+ fi
+
+ if [[ " $JVM_FEATURES " =~ " vm-structs " ]] && ! [[ " $JVM_FEATURES " =~ " all-gcs " ]] ; then
+ as_fn_error $? "Specified JVM feature 'vm-structs' requires feature 'all-gcs'" "$LINENO" 5
+ fi
+
+ # Turn on additional features based on other parts of configure
+ if test "x$INCLUDE_DTRACE" = "xtrue"; then
+ JVM_FEATURES="$JVM_FEATURES dtrace"
+ else
+ if [[ " $JVM_FEATURES " =~ " dtrace " ]] ; then
+ as_fn_error $? "To enable dtrace, you must use --enable-dtrace" "$LINENO" 5
+ fi
+ fi
+
+ if test "x$STATIC_BUILD" = "xtrue"; then
+ JVM_FEATURES="$JVM_FEATURES static-build"
+ else
+ if [[ " $JVM_FEATURES " =~ " static-build " ]] ; then
+ as_fn_error $? "To enable static-build, you must use --enable-static-build" "$LINENO" 5
+ fi
+ fi
+
+ if ! [[ " $JVM_VARIANTS " =~ " zero " ]] && ! [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
+ if [[ " $JVM_FEATURES " =~ " zero " ]] ; then
+ as_fn_error $? "To enable zero/zeroshark, you must use --with-jvm-variants=zero/zeroshark" "$LINENO" 5
+ fi
+ fi
+
+ if ! [[ " $JVM_VARIANTS " =~ " zeroshark " ]] ; then
+ if [[ " $JVM_FEATURES " =~ " shark " ]] ; then
+ as_fn_error $? "To enable shark, you must use --with-jvm-variants=zeroshark" "$LINENO" 5
+ fi
+ fi
+
+ # Only enable jvmci on x86_64, sparcv9 and aarch64.
+ if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
+ test "x$OPENJDK_TARGET_CPU" = "xsparcv9" || \
+ test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
+ JVM_FEATURES_jvmci="jvmci"
+ else
+ JVM_FEATURES_jvmci=""
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if jdk.internal.vm.compiler should be built" >&5
+$as_echo_n "checking if jdk.internal.vm.compiler should be built... " >&6; }
+ if [[ " $JVM_FEATURES " =~ " graal " ]] ; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, forced" >&5
+$as_echo "yes, forced" >&6; }
+ if test "x$JVM_FEATURES_jvmci" != "xjvmci" ; then
+ as_fn_error $? "Specified JVM feature 'graal' requires feature 'jvmci'" "$LINENO" 5
+ fi
+ INCLUDE_GRAAL="true"
+ else
+ # By default enable graal build where AOT is available
+ if test "x$ENABLE_AOT" = "xtrue"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ JVM_FEATURES_graal="graal"
+ INCLUDE_GRAAL="true"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ JVM_FEATURES_graal=""
+ INCLUDE_GRAAL="false"
+ fi
+ fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if aot should be enabled" >&5
+$as_echo_n "checking if aot should be enabled... " >&6; }
+ if test "x$ENABLE_AOT" = "xtrue"; then
+ if test "x$enable_aot" = "xyes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, forced" >&5
+$as_echo "yes, forced" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ fi
+ JVM_FEATURES_aot="aot"
+ else
+ if test "x$enable_aot" = "xno"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, forced" >&5
+$as_echo "no, forced" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+ JVM_FEATURES_aot=""
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU" = xarm ; then
+ # Default to use link time optimizations on minimal on arm
+ JVM_FEATURES_link_time_opt="link-time-opt"
+ else
+ JVM_FEATURES_link_time_opt=""
+ fi
+
+ # All variants but minimal (and custom) get these features
+ NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES jvmti fprof vm-structs jni-check services management all-gcs nmt cds"
+
+ # Enable features depending on variant.
+ JVM_FEATURES_server="compiler1 compiler2 $NON_MINIMAL_FEATURES $JVM_FEATURES $JVM_FEATURES_jvmci $JVM_FEATURES_aot $JVM_FEATURES_graal"
+ JVM_FEATURES_client="compiler1 $NON_MINIMAL_FEATURES $JVM_FEATURES $JVM_FEATURES_jvmci"
+ JVM_FEATURES_core="$NON_MINIMAL_FEATURES $JVM_FEATURES"
+ JVM_FEATURES_minimal="compiler1 minimal $JVM_FEATURES $JVM_FEATURES_link_time_opt"
+ JVM_FEATURES_zero="zero $NON_MINIMAL_FEATURES $JVM_FEATURES"
+ JVM_FEATURES_zeroshark="zero shark $NON_MINIMAL_FEATURES $JVM_FEATURES"
+ JVM_FEATURES_custom="$JVM_FEATURES"
+
+
+
+
+
+
+
+
+
+ # Used for verification of Makefiles by check-jvm-feature
+
+
+ # We don't support --with-jvm-interpreter anymore, use zero instead.
+
+
+# Check whether --with-jvm-interpreter was given.
+if test "${with_jvm_interpreter+set}" = set; then :
+ withval=$with_jvm_interpreter; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Option --with-jvm-interpreter is deprecated and will be ignored." >&5
+$as_echo "$as_me: WARNING: Option --with-jvm-interpreter is deprecated and will be ignored." >&2;}
+fi
+
+
+
+
+###############################################################################
+#
+# We need to do some final tweaking, when everything else is done.
+#
+###############################################################################
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if elliptic curve crypto implementation is present" >&5
+$as_echo_n "checking if elliptic curve crypto implementation is present... " >&6; }
+
+ if test -d "${SRC_ROOT}/jdk/src/jdk.crypto.ec/share/native/libsunec/impl"; then
+ ENABLE_INTREE_EC=true
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ else
+ ENABLE_INTREE_EC=false
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+
+
+
+
+ # Check whether --enable-jtreg-failure-handler was given.
+if test "${enable_jtreg_failure_handler+set}" = set; then :
+ enableval=$enable_jtreg_failure_handler;
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if jtreg failure handler should be built" >&5
+$as_echo_n "checking if jtreg failure handler should be built... " >&6; }
+
+ if test "x$enable_jtreg_failure_handler" = "xyes"; then
+ if test "x$JT_HOME" = "x"; then
+ as_fn_error $? "Cannot enable jtreg failure handler without jtreg." "$LINENO" 5
+ else
+ BUILD_FAILURE_HANDLER=true
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, forced" >&5
+$as_echo "yes, forced" >&6; }
+ fi
+ elif test "x$enable_jtreg_failure_handler" = "xno"; then
+ BUILD_FAILURE_HANDLER=false
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, forced" >&5
+$as_echo "no, forced" >&6; }
+ elif test "x$enable_jtreg_failure_handler" = "xauto" \
+ || test "x$enable_jtreg_failure_handler" = "x"; then
+ if test "x$JT_HOME" = "x"; then
+ BUILD_FAILURE_HANDLER=false
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, missing jtreg" >&5
+$as_echo "no, missing jtreg" >&6; }
+ else
+ BUILD_FAILURE_HANDLER=true
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, jtreg present" >&5
+$as_echo "yes, jtreg present" >&6; }
+ fi
+ else
+ as_fn_error $? "Invalid value for --enable-jtreg-failure-handler: $enable_jtreg_failure_handler" "$LINENO" 5
+ fi
+
+
+
+
+ # Check whether --enable-generate-classlist was given.
+if test "${enable_generate_classlist+set}" = set; then :
+ enableval=$enable_generate_classlist;
+fi
+
+
+ # Check if it's likely that it's possible to generate the classlist. Depending
+ # on exact jvm configuration it could be possible anyway.
+ if [[ " $JVM_VARIANTS " =~ " server " ]] || [[ " $JVM_VARIANTS " =~ " client " ]] ; then
+ ENABLE_GENERATE_CLASSLIST_POSSIBLE="true"
+ else
+ ENABLE_GENERATE_CLASSLIST_POSSIBLE="false"
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the CDS classlist generation should be enabled" >&5
+$as_echo_n "checking if the CDS classlist generation should be enabled... " >&6; }
+ if test "x$enable_generate_classlist" = "xyes"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, forced" >&5
+$as_echo "yes, forced" >&6; }
+ ENABLE_GENERATE_CLASSLIST="true"
+ if test "x$ENABLE_GENERATE_CLASSLIST_POSSIBLE" = "xfalse"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Generation of classlist might not be possible with JVM Variants $JVM_VARIANTS" >&5
+$as_echo "$as_me: WARNING: Generation of classlist might not be possible with JVM Variants $JVM_VARIANTS" >&2;}
+ fi
+ elif test "x$enable_generate_classlist" = "xno"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, forced" >&5
+$as_echo "no, forced" >&6; }
+ ENABLE_GENERATE_CLASSLIST="false"
+ elif test "x$enable_generate_classlist" = "x"; then
+ if test "x$ENABLE_GENERATE_CLASSLIST_POSSIBLE" = "xtrue"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ ENABLE_GENERATE_CLASSLIST="true"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ ENABLE_GENERATE_CLASSLIST="false"
+ fi
+ else
+ as_fn_error $? "Invalid value for --enable-generate-classlist: $enable_generate_classlist" "$LINENO" 5
+ fi
+
+
+
+
+###############################################################################
+#
+# Configure parts of the build that only affect the build performance,
+# not the result.
+#
+###############################################################################
+
+
+ # How many cores do we have on this build system?
+
+# Check whether --with-num-cores was given.
+if test "${with_num_cores+set}" = set; then :
+ withval=$with_num_cores;
+fi
+
+ if test "x$with_num_cores" = x; then
+ # The number of cores were not specified, try to probe them.
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for number of cores" >&5
+$as_echo_n "checking for number of cores... " >&6; }
+ NUM_CORES=1
+ FOUND_CORES=no
+
+ if test -f /proc/cpuinfo; then
+ # Looks like a Linux (or cygwin) system
+ NUM_CORES=`cat /proc/cpuinfo | grep -c processor`
+ FOUND_CORES=yes
+ 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
+ elif test -x /usr/sbin/sysctl; then
+ # Looks like a MacOSX system
+ NUM_CORES=`/usr/sbin/sysctl -n hw.ncpu`
+ FOUND_CORES=yes
+ elif test "x$OPENJDK_BUILD_OS" = xaix ; then
+ NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk '{ print $4 }'`
+ FOUND_CORES=yes
+ elif test -n "$NUMBER_OF_PROCESSORS"; then
+ # On windows, look in the env
+ NUM_CORES=$NUMBER_OF_PROCESSORS
+ FOUND_CORES=yes
+ fi
+
+ if test "x$FOUND_CORES" = xyes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NUM_CORES" >&5
+$as_echo "$NUM_CORES" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: could not detect number of cores, defaulting to 1" >&5
+$as_echo "could not detect number of cores, defaulting to 1" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: This will disable all parallelism from build!" >&5
+$as_echo "$as_me: WARNING: This will disable all parallelism from build!" >&2;}
+ fi
+
+ else
+ NUM_CORES=$with_num_cores
+ fi
+
+
+
+ # How much memory do we have on this build system?
+
+# Check whether --with-memory-size was given.
+if test "${with_memory_size+set}" = set; then :
+ withval=$with_memory_size;
+fi
+
+ if test "x$with_memory_size" = x; then
+ # The memory size was not specified, try to probe it.
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for memory size" >&5
+$as_echo_n "checking for memory size... " >&6; }
+ # Default to 1024 MB
+ MEMORY_SIZE=1024
+ FOUND_MEM=no
+
+ 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
+ elif test -x /usr/sbin/prtconf; then
+ # Looks like a Solaris or AIX system
+ MEMORY_SIZE=`/usr/sbin/prtconf 2> /dev/null | grep "^Memory [Ss]ize" | awk '{ print $3 }'`
+ FOUND_MEM=yes
+ elif test -x /usr/sbin/sysctl; then
+ # Looks like a MacOSX system
+ MEMORY_SIZE=`/usr/sbin/sysctl -n hw.memsize`
+ MEMORY_SIZE=`expr $MEMORY_SIZE / 1024 / 1024`
+ FOUND_MEM=yes
+ elif test "x$OPENJDK_BUILD_OS" = xwindows; then
+ # Windows, but without cygwin
+ MEMORY_SIZE=`wmic computersystem get totalphysicalmemory -value | grep = | cut -d "=" -f 2-`
+ MEMORY_SIZE=`expr $MEMORY_SIZE / 1024 / 1024`
+ FOUND_MEM=yes
+ fi
+
+ if test "x$FOUND_MEM" = xyes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MEMORY_SIZE MB" >&5
+$as_echo "$MEMORY_SIZE MB" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: could not detect memory size, defaulting to $MEMORY_SIZE MB" >&5
+$as_echo "could not detect memory size, defaulting to $MEMORY_SIZE MB" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: This might seriously impact build performance!" >&5
+$as_echo "$as_me: WARNING: This might seriously impact build performance!" >&2;}
+ fi
+
+ else
+ MEMORY_SIZE=$with_memory_size
+ fi
+
+
+
+ # Provide a decent default number of parallel jobs for make depending on
+ # number of cores, amount of memory and machine architecture.
+
+# Check whether --with-jobs was given.
+if test "${with_jobs+set}" = set; then :
+ withval=$with_jobs;
+fi
+
+ if test "x$with_jobs" = x; then
+ # Number of jobs was not specified, calculate.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for appropriate number of jobs to run in parallel" >&5
+$as_echo_n "checking for appropriate number of jobs to run in parallel... " >&6; }
+ # Approximate memory in GB.
+ memory_gb=`expr $MEMORY_SIZE / 1024`
+ # Pick the lowest of memory in gb and number of cores.
+ if test "$memory_gb" -lt "$NUM_CORES"; then
+ JOBS="$memory_gb"
+ else
+ JOBS="$NUM_CORES"
+ fi
+ if test "$JOBS" -eq "0"; then
+ JOBS=1
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JOBS" >&5
+$as_echo "$JOBS" >&6; }
+ else
+ JOBS=$with_jobs
+ fi
+
+
+
+ # The number of test jobs will be chosen automatically if TEST_JOBS is 0
+
+# Check whether --with-test-jobs was given.
+if test "${with_test_jobs+set}" = set; then :
+ withval=$with_test_jobs;
+fi
+
+ if test "x$with_test_jobs" = x; then
+ TEST_JOBS=0
+ else
+ TEST_JOBS=$with_test_jobs
+ fi
+
+
+
+# Setup arguments for the boot jdk (after cores and memory have been setup)
+
+ ##############################################################################
+ #
+ # Specify jvm options for anything that is run with the Boot JDK.
+ # Not all JVM:s accept the same arguments on the command line.
+ #
+
+# Check whether --with-boot-jdk-jvmargs was given.
+if test "${with_boot_jdk_jvmargs+set}" = set; then :
+ withval=$with_boot_jdk_jvmargs;
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking flags for boot jdk java command " >&5
+$as_echo_n "checking flags for boot jdk java command ... " >&6; }
+
+ # Disable special log output when a debug build is used as Boot JDK...
+
+ $ECHO "Check if jvm arg is ok: -XX:-PrintVMOptions -XX:-UnlockDiagnosticVMOptions -XX:-LogVMOutput" >&5
+ $ECHO "Command: $JAVA -XX:-PrintVMOptions -XX:-UnlockDiagnosticVMOptions -XX:-LogVMOutput -version" >&5
+ OUTPUT=`$JAVA -XX:-PrintVMOptions -XX:-UnlockDiagnosticVMOptions -XX:-LogVMOutput -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | $GREP -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | $GREP " version \""`
+ if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
+ boot_jdk_jvmargs="$boot_jdk_jvmargs -XX:-PrintVMOptions -XX:-UnlockDiagnosticVMOptions -XX:-LogVMOutput"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+
+ # Force en-US environment
+
+ $ECHO "Check if jvm arg is ok: -Duser.language=en -Duser.country=US" >&5
+ $ECHO "Command: $JAVA -Duser.language=en -Duser.country=US -version" >&5
+ OUTPUT=`$JAVA -Duser.language=en -Duser.country=US -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | $GREP -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | $GREP " version \""`
+ if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
+ boot_jdk_jvmargs="$boot_jdk_jvmargs -Duser.language=en -Duser.country=US"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+
+ # Apply user provided options.
+
+ $ECHO "Check if jvm arg is ok: $with_boot_jdk_jvmargs" >&5
+ $ECHO "Command: $JAVA $with_boot_jdk_jvmargs -version" >&5
+ OUTPUT=`$JAVA $with_boot_jdk_jvmargs -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | $GREP -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | $GREP " version \""`
+ if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
+ boot_jdk_jvmargs="$boot_jdk_jvmargs $with_boot_jdk_jvmargs"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $boot_jdk_jvmargs" >&5
+$as_echo "$boot_jdk_jvmargs" >&6; }
+
+ # For now, general JAVA_FLAGS are the same as the boot jdk jvmargs
+ JAVA_FLAGS=$boot_jdk_jvmargs
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking flags for boot jdk java command for big workloads" >&5
+$as_echo_n "checking flags for boot jdk java command for big workloads... " >&6; }
+
+ # Starting amount of heap memory.
+
+ $ECHO "Check if jvm arg is ok: -Xms64M" >&5
+ $ECHO "Command: $JAVA -Xms64M -version" >&5
+ OUTPUT=`$JAVA -Xms64M -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | $GREP -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | $GREP " version \""`
+ if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
+ boot_jdk_jvmargs_big="$boot_jdk_jvmargs_big -Xms64M"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+ BOOTCYCLE_JVM_ARGS_BIG=-Xms64M
+
+ # Maximum amount of heap memory and stack size.
+ JVM_HEAP_LIMIT_32="1024"
+ # Running a 64 bit JVM allows for and requires a bigger heap
+ JVM_HEAP_LIMIT_64="1600"
+ STACK_SIZE_32=768
+ STACK_SIZE_64=1536
+ JVM_HEAP_LIMIT_GLOBAL=`expr $MEMORY_SIZE / 2`
+ if test "$JVM_HEAP_LIMIT_GLOBAL" -lt "$JVM_HEAP_LIMIT_32"; then
+ JVM_HEAP_LIMIT_32=$JVM_HEAP_LIMIT_GLOBAL
+ fi
+ if test "$JVM_HEAP_LIMIT_GLOBAL" -lt "$JVM_HEAP_LIMIT_64"; then
+ JVM_HEAP_LIMIT_64=$JVM_HEAP_LIMIT_GLOBAL
+ fi
+ if test "$JVM_HEAP_LIMIT_GLOBAL" -lt "512"; then
+ JVM_HEAP_LIMIT_32=512
+ JVM_HEAP_LIMIT_64=512
+ fi
+
+ if test "x$BOOT_JDK_BITS" = "x32"; then
+ STACK_SIZE=$STACK_SIZE_32
+ JVM_MAX_HEAP=$JVM_HEAP_LIMIT_32
+ else
+ STACK_SIZE=$STACK_SIZE_64
+ JVM_MAX_HEAP=$JVM_HEAP_LIMIT_64
+ fi
+
+ $ECHO "Check if jvm arg is ok: -Xmx${JVM_MAX_HEAP}M" >&5
+ $ECHO "Command: $JAVA -Xmx${JVM_MAX_HEAP}M -version" >&5
+ OUTPUT=`$JAVA -Xmx${JVM_MAX_HEAP}M -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | $GREP -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | $GREP " version \""`
+ if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
+ boot_jdk_jvmargs_big="$boot_jdk_jvmargs_big -Xmx${JVM_MAX_HEAP}M"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+
+ $ECHO "Check if jvm arg is ok: -XX:ThreadStackSize=$STACK_SIZE" >&5
+ $ECHO "Command: $JAVA -XX:ThreadStackSize=$STACK_SIZE -version" >&5
+ OUTPUT=`$JAVA -XX:ThreadStackSize=$STACK_SIZE -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | $GREP -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | $GREP " version \""`
+ if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
+ boot_jdk_jvmargs_big="$boot_jdk_jvmargs_big -XX:ThreadStackSize=$STACK_SIZE"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $boot_jdk_jvmargs_big" >&5
+$as_echo "$boot_jdk_jvmargs_big" >&6; }
+
+ JAVA_FLAGS_BIG=$boot_jdk_jvmargs_big
+
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = "x32"; then
+ BOOTCYCLE_MAX_HEAP=$JVM_HEAP_LIMIT_32
+ BOOTCYCLE_STACK_SIZE=$STACK_SIZE_32
+ else
+ BOOTCYCLE_MAX_HEAP=$JVM_HEAP_LIMIT_64
+ BOOTCYCLE_STACK_SIZE=$STACK_SIZE_64
+ fi
+ BOOTCYCLE_JVM_ARGS_BIG="$BOOTCYCLE_JVM_ARGS_BIG -Xmx${BOOTCYCLE_MAX_HEAP}M"
+ BOOTCYCLE_JVM_ARGS_BIG="$BOOTCYCLE_JVM_ARGS_BIG -XX:ThreadStackSize=$BOOTCYCLE_STACK_SIZE"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking flags for bootcycle boot jdk java command for big workloads" >&5
+$as_echo_n "checking flags for bootcycle boot jdk java command for big workloads... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BOOTCYCLE_JVM_ARGS_BIG" >&5
+$as_echo "$BOOTCYCLE_JVM_ARGS_BIG" >&6; }
+
+
+ # By default, the main javac compilations use big
+ JAVA_FLAGS_JAVAC="$JAVA_FLAGS_BIG"
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking flags for boot jdk java command for small workloads" >&5
+$as_echo_n "checking flags for boot jdk java command for small workloads... " >&6; }
+
+ # Use serial gc for small short lived tools if possible
+
+ $ECHO "Check if jvm arg is ok: -XX:+UseSerialGC" >&5
+ $ECHO "Command: $JAVA -XX:+UseSerialGC -version" >&5
+ OUTPUT=`$JAVA -XX:+UseSerialGC -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | $GREP -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | $GREP " version \""`
+ if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
+ boot_jdk_jvmargs_small="$boot_jdk_jvmargs_small -XX:+UseSerialGC"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+
+ $ECHO "Check if jvm arg is ok: -Xms32M" >&5
+ $ECHO "Command: $JAVA -Xms32M -version" >&5
+ OUTPUT=`$JAVA -Xms32M -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | $GREP -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | $GREP " version \""`
+ if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
+ boot_jdk_jvmargs_small="$boot_jdk_jvmargs_small -Xms32M"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+
+ $ECHO "Check if jvm arg is ok: -Xmx512M" >&5
+ $ECHO "Command: $JAVA -Xmx512M -version" >&5
+ OUTPUT=`$JAVA -Xmx512M -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | $GREP -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | $GREP " version \""`
+ if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
+ boot_jdk_jvmargs_small="$boot_jdk_jvmargs_small -Xmx512M"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+
+ $ECHO "Check if jvm arg is ok: -XX:TieredStopAtLevel=1" >&5
+ $ECHO "Command: $JAVA -XX:TieredStopAtLevel=1 -version" >&5
+ OUTPUT=`$JAVA -XX:TieredStopAtLevel=1 -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | $GREP -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | $GREP " version \""`
+ if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
+ boot_jdk_jvmargs_small="$boot_jdk_jvmargs_small -XX:TieredStopAtLevel=1"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $boot_jdk_jvmargs_small" >&5
+$as_echo "$boot_jdk_jvmargs_small" >&6; }
+
+ JAVA_FLAGS_SMALL=$boot_jdk_jvmargs_small
+
+
+ JAVA_TOOL_FLAGS_SMALL=""
+ for f in $JAVA_FLAGS_SMALL; do
+ JAVA_TOOL_FLAGS_SMALL="$JAVA_TOOL_FLAGS_SMALL -J$f"
+ done
+
+
+
+# Setup smart javac (after cores and memory have been setup)
+
+
+# Check whether --with-sjavac-server-java was given.
+if test "${with_sjavac_server_java+set}" = set; then :
+ withval=$with_sjavac_server_java;
+fi
+
+
+ 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
+ as_fn_error $? "Could not execute server java: $SJAVAC_SERVER_JAVA" "$LINENO" 5
+ fi
+ else
+ SJAVAC_SERVER_JAVA="$JAVA"
+ fi
+
+
+ if test "$MEMORY_SIZE" -gt "3000"; then
+
+ $ECHO "Check if jvm arg is ok: -d64" >&5
+ $ECHO "Command: $SJAVAC_SERVER_JAVA -d64 -version" >&5
+ OUTPUT=`$SJAVAC_SERVER_JAVA -d64 -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | $GREP -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | $GREP " version \""`
+ if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
+ SJAVAC_SERVER_JAVA_FLAGS="$SJAVAC_SERVER_JAVA_FLAGS -d64"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+ if test "$JVM_ARG_OK" = true; then
+ JVM_64BIT=true
+ JVM_ARG_OK=false
+ fi
+ fi
+
+ MX_VALUE=`expr $MEMORY_SIZE / 2`
+ if test "$JVM_64BIT" = true; then
+ # Set ms lower than mx since more than one instance of the server might
+ # get launched at the same time before they figure out which instance won.
+ MS_VALUE=512
+ if test "$MX_VALUE" -gt "2048"; then
+ MX_VALUE=2048
+ fi
+ else
+ MS_VALUE=256
+ if test "$MX_VALUE" -gt "1500"; then
+ MX_VALUE=1500
+ fi
+ fi
+ if test "$MX_VALUE" -lt "512"; then
+ MX_VALUE=512
+ fi
+
+ $ECHO "Check if jvm arg is ok: -Xms${MS_VALUE}M -Xmx${MX_VALUE}M" >&5
+ $ECHO "Command: $SJAVAC_SERVER_JAVA -Xms${MS_VALUE}M -Xmx${MX_VALUE}M -version" >&5
+ OUTPUT=`$SJAVAC_SERVER_JAVA -Xms${MS_VALUE}M -Xmx${MX_VALUE}M -version 2>&1`
+ FOUND_WARN=`$ECHO "$OUTPUT" | $GREP -i warn`
+ FOUND_VERSION=`$ECHO $OUTPUT | $GREP " version \""`
+ if test "x$FOUND_VERSION" != x && test "x$FOUND_WARN" = x; then
+ SJAVAC_SERVER_JAVA_FLAGS="$SJAVAC_SERVER_JAVA_FLAGS -Xms${MS_VALUE}M -Xmx${MX_VALUE}M"
+ JVM_ARG_OK=true
+ else
+ $ECHO "Arg failed:" >&5
+ $ECHO "$OUTPUT" >&5
+ JVM_ARG_OK=false
+ fi
+
+
+
+ # Check whether --enable-sjavac was given.
+if test "${enable_sjavac+set}" = set; then :
+ enableval=$enable_sjavac; ENABLE_SJAVAC="${enableval}"
+else
+ ENABLE_SJAVAC="no"
+fi
+
+ if test "x$JVM_ARG_OK" = "xfalse"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not set -Xms${MS_VALUE}M -Xmx${MX_VALUE}M, disabling sjavac" >&5
+$as_echo "$as_me: WARNING: Could not set -Xms${MS_VALUE}M -Xmx${MX_VALUE}M, disabling sjavac" >&2;}
+ ENABLE_SJAVAC="no"
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use sjavac" >&5
+$as_echo_n "checking whether to use sjavac... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ENABLE_SJAVAC" >&5
+$as_echo "$ENABLE_SJAVAC" >&6; }
+
+
+ # Check whether --enable-javac-server was given.
+if test "${enable_javac_server+set}" = set; then :
+ enableval=$enable_javac_server; ENABLE_JAVAC_SERVER="${enableval}"
+else
+ ENABLE_JAVAC_SERVER="yes"
+fi
+
+ if test "x$JVM_ARG_OK" = "xfalse"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not set -Xms${MS_VALUE}M -Xmx${MX_VALUE}M, disabling javac server" >&5
+$as_echo "$as_me: WARNING: Could not set -Xms${MS_VALUE}M -Xmx${MX_VALUE}M, disabling javac server" >&2;}
+ ENABLE_JAVAC_SERVER="no"
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use javac server" >&5
+$as_echo_n "checking whether to use javac server... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ENABLE_JAVAC_SERVER" >&5
+$as_echo "$ENABLE_JAVAC_SERVER" >&6; }
+
+
+ if test "x$ENABLE_JAVAC_SERVER" = "xyes" || test "x$ENABLE_SJAVAC" = "xyes"; then
+ # When using a server javac, the small client instances do not need much
+ # resources.
+ JAVA_FLAGS_JAVAC="$JAVA_FLAGS_SMALL"
+ fi
+
+
+# Setup use of icecc if requested
+
+ # Check whether --enable-icecc was given.
+if test "${enable_icecc+set}" = set; then :
+ enableval=$enable_icecc;
+fi
+
+
+ if test "x${enable_icecc}" = "xyes"; then
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${ICECC_CMD+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in icecc
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ICECC_CMD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ICECC_CMD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ICECC_CMD="$ICECC_CMD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ICECC_CMD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ICECC_CMD=$ac_cv_path_ICECC_CMD
+if test -n "$ICECC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ICECC_CMD" >&5
+$as_echo "$ICECC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ICECC_CMD" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !ICECC_CMD! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!ICECC_CMD!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xICECC_CMD" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of ICECC_CMD from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of ICECC_CMD from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in icecc
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ICECC_CMD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ICECC_CMD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ICECC_CMD="$ICECC_CMD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ICECC_CMD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ICECC_CMD=$ac_cv_path_ICECC_CMD
+if test -n "$ICECC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ICECC_CMD" >&5
+$as_echo "$ICECC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ICECC_CMD" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$ICECC_CMD" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool ICECC_CMD= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool ICECC_CMD= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ICECC_CMD" >&5
+$as_echo_n "checking for ICECC_CMD... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$ICECC_CMD"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool ICECC_CMD=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool ICECC_CMD=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ICECC_CMD+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ICECC_CMD in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ICECC_CMD="$ICECC_CMD" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ICECC_CMD="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ICECC_CMD=$ac_cv_path_ICECC_CMD
+if test -n "$ICECC_CMD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ICECC_CMD" >&5
+$as_echo "$ICECC_CMD" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$ICECC_CMD" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool ICECC_CMD=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool ICECC_CMD=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ICECC_CMD" >&5
+$as_echo_n "checking for ICECC_CMD... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool ICECC_CMD=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$ICECC_CMD" = x; then
+ as_fn_error $? "Could not find required tool for ICECC_CMD" "$LINENO" 5
+ fi
+
+
+ old_path="$PATH"
+
+ # Look for icecc-create-env in some known places
+ PATH="$PATH:/usr/lib/icecc:/usr/lib64/icecc"
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${ICECC_CREATE_ENV+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in icecc-create-env
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ICECC_CREATE_ENV+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ICECC_CREATE_ENV in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ICECC_CREATE_ENV="$ICECC_CREATE_ENV" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ICECC_CREATE_ENV="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ICECC_CREATE_ENV=$ac_cv_path_ICECC_CREATE_ENV
+if test -n "$ICECC_CREATE_ENV"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ICECC_CREATE_ENV" >&5
+$as_echo "$ICECC_CREATE_ENV" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ICECC_CREATE_ENV" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !ICECC_CREATE_ENV! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!ICECC_CREATE_ENV!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xICECC_CREATE_ENV" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of ICECC_CREATE_ENV from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of ICECC_CREATE_ENV from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in icecc-create-env
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ICECC_CREATE_ENV+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ICECC_CREATE_ENV in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ICECC_CREATE_ENV="$ICECC_CREATE_ENV" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ICECC_CREATE_ENV="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ICECC_CREATE_ENV=$ac_cv_path_ICECC_CREATE_ENV
+if test -n "$ICECC_CREATE_ENV"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ICECC_CREATE_ENV" >&5
+$as_echo "$ICECC_CREATE_ENV" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ICECC_CREATE_ENV" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$ICECC_CREATE_ENV" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool ICECC_CREATE_ENV= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool ICECC_CREATE_ENV= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ICECC_CREATE_ENV" >&5
+$as_echo_n "checking for ICECC_CREATE_ENV... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$ICECC_CREATE_ENV"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool ICECC_CREATE_ENV=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool ICECC_CREATE_ENV=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ICECC_CREATE_ENV+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ICECC_CREATE_ENV in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ICECC_CREATE_ENV="$ICECC_CREATE_ENV" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ICECC_CREATE_ENV="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ICECC_CREATE_ENV=$ac_cv_path_ICECC_CREATE_ENV
+if test -n "$ICECC_CREATE_ENV"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ICECC_CREATE_ENV" >&5
+$as_echo "$ICECC_CREATE_ENV" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$ICECC_CREATE_ENV" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool ICECC_CREATE_ENV=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool ICECC_CREATE_ENV=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ICECC_CREATE_ENV" >&5
+$as_echo_n "checking for ICECC_CREATE_ENV... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool ICECC_CREATE_ENV=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$ICECC_CREATE_ENV" = x; then
+ as_fn_error $? "Could not find required tool for ICECC_CREATE_ENV" "$LINENO" 5
+ fi
+
+
+ # Use icecc-create-env to create a minimal compilation environment that can
+ # be sent to the other hosts in the icecream cluster.
+ icecc_create_env_log="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/icecc_create_env.log"
+ ${MKDIR} -p ${CONFIGURESUPPORT_OUTPUTDIR}/icecc
+ # Older versions of icecc does not have the --gcc parameter
+ if ${ICECC_CREATE_ENV} | $GREP -q -e --gcc; then
+ icecc_gcc_arg="--gcc"
+ fi
+ if test "x${TOOLCHAIN_TYPE}" = "xgcc"; then
+
+ ( cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
+ && ${ICECC_CREATE_ENV} ${icecc_gcc_arg} ${CC} ${CXX} > \
+ ${icecc_create_env_log} 2>&1 )
+ if test "$?" != "0"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: icecc-create-env output:" >&5
+$as_echo "$as_me: icecc-create-env output:" >&6;}
+ cat \
+ ${icecc_create_env_log}
+ as_fn_error $? "Failed to create icecc compiler environment" "$LINENO" 5
+ fi
+
+ elif test "x$TOOLCHAIN_TYPE" = "xclang"; then
+ # For clang, the icecc compilerwrapper is needed. It usually resides next
+ # to icecc-create-env.
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${ICECC_WRAPPER+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in compilerwrapper
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ICECC_WRAPPER+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ICECC_WRAPPER in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ICECC_WRAPPER="$ICECC_WRAPPER" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ICECC_WRAPPER="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ICECC_WRAPPER=$ac_cv_path_ICECC_WRAPPER
+if test -n "$ICECC_WRAPPER"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ICECC_WRAPPER" >&5
+$as_echo "$ICECC_WRAPPER" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ICECC_WRAPPER" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !ICECC_WRAPPER! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!ICECC_WRAPPER!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xICECC_WRAPPER" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of ICECC_WRAPPER from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of ICECC_WRAPPER from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in compilerwrapper
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ICECC_WRAPPER+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ICECC_WRAPPER in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ICECC_WRAPPER="$ICECC_WRAPPER" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ICECC_WRAPPER="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ICECC_WRAPPER=$ac_cv_path_ICECC_WRAPPER
+if test -n "$ICECC_WRAPPER"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ICECC_WRAPPER" >&5
+$as_echo "$ICECC_WRAPPER" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ICECC_WRAPPER" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$ICECC_WRAPPER" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool ICECC_WRAPPER= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool ICECC_WRAPPER= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ICECC_WRAPPER" >&5
+$as_echo_n "checking for ICECC_WRAPPER... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$ICECC_WRAPPER"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool ICECC_WRAPPER=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool ICECC_WRAPPER=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_ICECC_WRAPPER+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $ICECC_WRAPPER in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ICECC_WRAPPER="$ICECC_WRAPPER" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_ICECC_WRAPPER="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ICECC_WRAPPER=$ac_cv_path_ICECC_WRAPPER
+if test -n "$ICECC_WRAPPER"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ICECC_WRAPPER" >&5
+$as_echo "$ICECC_WRAPPER" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$ICECC_WRAPPER" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool ICECC_WRAPPER=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool ICECC_WRAPPER=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ICECC_WRAPPER" >&5
+$as_echo_n "checking for ICECC_WRAPPER... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool ICECC_WRAPPER=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$ICECC_WRAPPER" = x; then
+ as_fn_error $? "Could not find required tool for ICECC_WRAPPER" "$LINENO" 5
+ fi
+
+
+
+ ( cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
+ && ${ICECC_CREATE_ENV} --clang ${CC} ${ICECC_WRAPPER} > ${icecc_create_env_log} 2>&1 )
+ if test "$?" != "0"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: icecc-create-env output:" >&5
+$as_echo "$as_me: icecc-create-env output:" >&6;}
+ cat ${icecc_create_env_log}
+ as_fn_error $? "Failed to create icecc compiler environment" "$LINENO" 5
+ fi
+
+ else
+ as_fn_error $? "Can only create icecc compiler packages for toolchain types gcc and clang" "$LINENO" 5
+ fi
+ PATH="$old_path"
+ # The bundle with the compiler gets a name based on checksums. Parse log file
+ # to find it.
+ ICECC_ENV_BUNDLE_BASENAME="`${SED} -n '/^creating/s/creating //p' ${icecc_create_env_log}`"
+ ICECC_ENV_BUNDLE="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/${ICECC_ENV_BUNDLE_BASENAME}"
+ if test ! -f ${ICECC_ENV_BUNDLE}; then
+ as_fn_error $? "icecc-create-env did not produce an environment ${ICECC_ENV_BUNDLE}" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icecc build environment for target compiler" >&5
+$as_echo_n "checking for icecc build environment for target compiler... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ICECC_ENV_BUNDLE}" >&5
+$as_echo "${ICECC_ENV_BUNDLE}" >&6; }
+ ICECC="ICECC_VERSION=${ICECC_ENV_BUNDLE} ICECC_CC=${CC} ICECC_CXX=${CXX} ${ICECC_CMD}"
+
+ if test "x${COMPILE_TYPE}" = "xcross"; then
+ # If cross compiling, create a separate env package for the build compiler
+ # Assume "gcc" or "cc" is gcc and "clang" is clang. Otherwise bail.
+ icecc_create_env_log_build="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/icecc_create_env_build.log"
+ if test "x${BUILD_CC##*/}" = "xgcc" || test "x${BUILD_CC##*/}" = "xcc"; then
+
+ ( cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
+ && ${ICECC_CREATE_ENV} ${icecc_gcc_arg} ${BUILD_CC} ${BUILD_CXX} > \
+ ${icecc_create_env_log_build} 2>&1 )
+ if test "$?" != "0"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: icecc-create-env output:" >&5
+$as_echo "$as_me: icecc-create-env output:" >&6;}
+ cat \
+ ${icecc_create_env_log_build}
+ as_fn_error $? "Failed to create icecc compiler environment" "$LINENO" 5
+ fi
+
+ elif test "x${BUILD_CC##*/}" = "xclang"; then
+
+ ( cd ${CONFIGURESUPPORT_OUTPUTDIR}/icecc \
+ && ${ICECC_CREATE_ENV} --clang ${BUILD_CC} ${ICECC_WRAPPER} > ${icecc_create_env_log_build} 2>&1 )
+ if test "$?" != "0"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: icecc-create-env output:" >&5
+$as_echo "$as_me: icecc-create-env output:" >&6;}
+ cat ${icecc_create_env_log_build}
+ as_fn_error $? "Failed to create icecc compiler environment" "$LINENO" 5
+ fi
+
+ else
+ as_fn_error $? "Cannot create icecc compiler package for ${BUILD_CC}" "$LINENO" 5
+ fi
+ ICECC_ENV_BUNDLE_BASENAME="`${SED} -n '/^creating/s/creating //p' ${icecc_create_env_log_build}`"
+ ICECC_ENV_BUNDLE="${CONFIGURESUPPORT_OUTPUTDIR}/icecc/${ICECC_ENV_BUNDLE_BASENAME}"
+ if test ! -f ${ICECC_ENV_BUNDLE}; then
+ as_fn_error $? "icecc-create-env did not produce an environment ${ICECC_ENV_BUNDLE}" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icecc build environment for build compiler" >&5
+$as_echo_n "checking for icecc build environment for build compiler... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ICECC_ENV_BUNDLE}" >&5
+$as_echo "${ICECC_ENV_BUNDLE}" >&6; }
+ BUILD_ICECC="ICECC_VERSION=${ICECC_ENV_BUNDLE} ICECC_CC=${BUILD_CC} \
+ ICECC_CXX=${BUILD_CXX} ${ICECC_CMD}"
+ else
+ BUILD_ICECC="${ICECC}"
+ fi
+
+
+ fi
+
+
+# Can the C/C++ compiler use precompiled headers?
+
+
+ ###############################################################################
+ #
+ # Can the C/C++ compiler use precompiled headers?
+ #
+ # Check whether --enable-precompiled-headers was given.
+if test "${enable_precompiled_headers+set}" = set; then :
+ enableval=$enable_precompiled_headers; ENABLE_PRECOMPH=${enable_precompiled_headers}
+else
+ ENABLE_PRECOMPH=yes
+fi
+
+
+ USE_PRECOMPILED_HEADER=true
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking If precompiled header is enabled" >&5
+$as_echo_n "checking If precompiled header is enabled... " >&6; }
+ if test "x$ENABLE_PRECOMPH" = xno; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, forced" >&5
+$as_echo "no, forced" >&6; }
+ USE_PRECOMPILED_HEADER=false
+ elif test "x$ICECC" != "x"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, does not work effectively with icecc" >&5
+$as_echo "no, does not work effectively with icecc" >&6; }
+ USE_PRECOMPILED_HEADER=false
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, does not work with Solaris Studio" >&5
+$as_echo "no, does not work with Solaris Studio" >&6; }
+ USE_PRECOMPILED_HEADER=false
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, does not work with xlc" >&5
+$as_echo "no, does not work with xlc" >&6; }
+ USE_PRECOMPILED_HEADER=false
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ fi
+
+ if test "x$ENABLE_PRECOMPH" = xyes; then
+ # Check that the compiler actually supports precomp headers.
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking that precompiled headers work" >&5
+$as_echo_n "checking that precompiled headers work... " >&6; }
+ echo "int alfa();" > conftest.h
+ $CXX -x c++-header conftest.h -o conftest.hpp.gch 2>&5 >&5
+ if test ! -f conftest.hpp.gch; then
+ USE_PRECOMPILED_HEADER=false
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ fi
+ $RM conftest.h conftest.hpp.gch
+ fi
+ fi
+
+
+
+
+# Setup use of ccache, if available
+
+ # Check whether --enable-ccache was given.
+if test "${enable_ccache+set}" = set; then :
+ enableval=$enable_ccache;
+fi
+
+
+ CCACHE_STATUS=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking is ccache enabled" >&5
+$as_echo_n "checking is ccache enabled... " >&6; }
+ if test "x$enable_ccache" = xyes; then
+ if test "x$TOOLCHAIN_TYPE" = "xgcc" -o "x$TOOLCHAIN_TYPE" = "xclang"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ OLD_PATH="$PATH"
+ if test "x$TOOLCHAIN_PATH" != x; then
+ PATH=$TOOLCHAIN_PATH:$PATH
+ fi
+
+
+
+ # Publish this variable in the help.
+
+
+ if [ -z "${CCACHE+x}" ]; then
+ # The variable is not set by user, try to locate tool using the code snippet
+ for ac_prog in ccache
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CCACHE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CCACHE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CCACHE="$CCACHE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CCACHE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CCACHE=$ac_cv_path_CCACHE
+if test -n "$CCACHE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CCACHE" >&5
+$as_echo "$CCACHE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CCACHE" && break
+done
+
+ else
+ # The variable is set, but is it from the command line or the environment?
+
+ # Try to remove the string !CCACHE! from our list.
+ try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!CCACHE!/}
+ if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then
+ # If it failed, the variable was not from the command line. Ignore it,
+ # but warn the user (except for BASH, which is always set by the calling BASH).
+ if test "xCCACHE" != xBASH; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of CCACHE from the environment. Use command line variables instead." >&5
+$as_echo "$as_me: WARNING: Ignoring value of CCACHE from the environment. Use command line variables instead." >&2;}
+ fi
+ # Try to locate tool using the code snippet
+ for ac_prog in ccache
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CCACHE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CCACHE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CCACHE="$CCACHE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CCACHE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CCACHE=$ac_cv_path_CCACHE
+if test -n "$CCACHE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CCACHE" >&5
+$as_echo "$CCACHE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CCACHE" && break
+done
+
+ else
+ # If it succeeded, then it was overridden by the user. We will use it
+ # for the tool.
+
+ # First remove it from the list of overridden variables, so we can test
+ # for unknown variables in the end.
+ CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var"
+
+ # Check if we try to supply an empty value
+ if test "x$CCACHE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool CCACHE= (no value)" >&5
+$as_echo "$as_me: Setting user supplied tool CCACHE= (no value)" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CCACHE" >&5
+$as_echo_n "checking for CCACHE... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+ else
+ # Check if the provided tool contains a complete path.
+ tool_specified="$CCACHE"
+ tool_basename="${tool_specified##*/}"
+ if test "x$tool_basename" = "x$tool_specified"; then
+ # A command without a complete path is provided, search $PATH.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool CCACHE=$tool_basename" >&5
+$as_echo "$as_me: Will search for user supplied tool CCACHE=$tool_basename" >&6;}
+ # Extract the first word of "$tool_basename", so it can be a program name with args.
+set dummy $tool_basename; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CCACHE+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case $CCACHE in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CCACHE="$CCACHE" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_CCACHE="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+CCACHE=$ac_cv_path_CCACHE
+if test -n "$CCACHE"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CCACHE" >&5
+$as_echo "$CCACHE" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ if test "x$CCACHE" = x; then
+ as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5
+ fi
+ else
+ # Otherwise we believe it is a complete path. Use it as it is.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool CCACHE=$tool_specified" >&5
+$as_echo "$as_me: Will use user supplied tool CCACHE=$tool_specified" >&6;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CCACHE" >&5
+$as_echo_n "checking for CCACHE... " >&6; }
+ if test ! -x "$tool_specified"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+ as_fn_error $? "User supplied tool CCACHE=$tool_specified does not exist or is not executable" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5
+$as_echo "$tool_specified" >&6; }
+ fi
+ fi
+ fi
+
+ fi
+
+
+
+ if test "x$CCACHE" = x; then
+ as_fn_error $? "Could not find required tool for CCACHE" "$LINENO" 5
+ fi
+
+
+ PATH="$OLD_PATH"
+ CCACHE_VERSION=`$CCACHE --version | head -n1 | $SED 's/[A-Za-z ]*//'`
+ CCACHE_STATUS="Active ($CCACHE_VERSION)"
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ccache is not supported with toolchain type $TOOLCHAIN_TYPE" >&5
+$as_echo "$as_me: WARNING: ccache is not supported with toolchain type $TOOLCHAIN_TYPE" >&2;}
+ fi
+ elif test "x$enable_ccache" = xno; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, explicitly disabled" >&5
+$as_echo "no, explicitly disabled" >&6; }
+ CCACHE_STATUS="Disabled"
+ elif test "x$enable_ccache" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unknown" >&5
+$as_echo "unknown" >&6; }
+ as_fn_error $? "--enable-ccache does not accept any parameters" "$LINENO" 5
+ fi
+
+
+
+# Check whether --with-ccache-dir was given.
+if test "${with_ccache_dir+set}" = set; then :
+ withval=$with_ccache_dir;
+fi
+
+
+ if test "x$with_ccache_dir" != x; then
+ # When using a non home ccache directory, assume the use is to share ccache files
+ # with other users. Thus change the umask.
+ SET_CCACHE_DIR="CCACHE_DIR=$with_ccache_dir CCACHE_UMASK=002"
+ if test "x$CCACHE" = x; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-ccache-dir has no meaning when ccache is not enabled" >&5
+$as_echo "$as_me: WARNING: --with-ccache-dir has no meaning when ccache is not enabled" >&2;}
+ fi
+ fi
+
+ if test "x$CCACHE" != x; then
+
+ if test "x$CCACHE" != x; then
+ if test "x$OPENJDK_BUILD_OS" = "xmacosx"; then
+ HAS_BAD_CCACHE=`$ECHO $CCACHE_VERSION | \
+ $GREP -e '^1\.' -e '^2\.' -e '^3\.0\.' -e '^3\.1\.'`
+ if test "x$HAS_BAD_CCACHE" != "x"; then
+ as_fn_error $? "On macosx, ccache 3.2 or later is required, found $CCACHE_VERSION" "$LINENO" 5
+ fi
+ fi
+ if test "x$USE_PRECOMPILED_HEADER" = "xtrue"; then
+ HAS_BAD_CCACHE=`$ECHO $CCACHE_VERSION | \
+ $GREP -e '^1.*' -e '^2.*' -e '^3\.0.*' -e '^3\.1\.[0123]$'`
+ if test "x$HAS_BAD_CCACHE" != "x"; then
+ as_fn_error $? "Precompiled headers requires ccache 3.1.4 or later, found $CCACHE_VERSION" "$LINENO" 5
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if C-compiler supports ccache precompiled headers" >&5
+$as_echo_n "checking if C-compiler supports ccache precompiled headers... " >&6; }
+ CCACHE_PRECOMP_FLAG="-fpch-preprocess"
+ PUSHED_FLAGS="$CXXFLAGS"
+ CXXFLAGS="$CCACHE_PRECOMP_FLAG $CXXFLAGS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ CC_KNOWS_CCACHE_TRICK=yes
+else
+ CC_KNOWS_CCACHE_TRICK=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CXXFLAGS="$PUSHED_FLAGS"
+ if test "x$CC_KNOWS_CCACHE_TRICK" = xyes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ CFLAGS_CCACHE="$CCACHE_PRECOMP_FLAG"
+
+ CCACHE_SLOPPINESS=pch_defines,time_macros
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ as_fn_error $? "Cannot use ccache with precompiled headers without compiler support for $CCACHE_PRECOMP_FLAG" "$LINENO" 5
+ fi
+ fi
+
+ CCACHE="CCACHE_COMPRESS=1 $SET_CCACHE_DIR \
+ CCACHE_SLOPPINESS=$CCACHE_SLOPPINESS CCACHE_BASEDIR=$TOPDIR $CCACHE"
+
+ if test "x$SET_CCACHE_DIR" != x; then
+ mkdir -p $CCACHE_DIR > /dev/null 2>&1
+ chmod a+rwxs $CCACHE_DIR > /dev/null 2>&1
+ fi
+ fi
+
+ fi
+
+
+###############################################################################
+#
+# And now the finish...
+#
+###############################################################################
+
+# Check for some common pitfalls
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ file_to_test="$SRC_ROOT/LICENSE"
+ if test `$STAT -c '%a' "$file_to_test"` -lt 400; then
+ as_fn_error $? "Bad file permissions on src files. This is usually caused by cloning the repositories with a non cygwin hg in a directory not created in cygwin." "$LINENO" 5
+ fi
+ fi
+
+
+ # Did user specify any unknown variables?
+
+ if test "x$CONFIGURE_OVERRIDDEN_VARIABLES" != x; then
+ # Replace the separating ! with spaces before presenting for end user.
+ unknown_variables=${CONFIGURE_OVERRIDDEN_VARIABLES//!/ }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: The following variables might be unknown to configure: $unknown_variables" >&5
+$as_echo "$as_me: WARNING: The following variables might be unknown to configure: $unknown_variables" >&2;}
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if build directory is on local disk" >&5
+$as_echo_n "checking if build directory is on local disk... " >&6; }
+
+ # df -l lists only local disks; if the given directory is not found then
+ # a non-zero exit code is given
+ if test "x$DF" = x; then
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # msys does not have df; use Windows "net use" instead.
+ IS_NETWORK_DISK=`net use | grep \`pwd -W | cut -d ":" -f 1 | tr a-z A-Z\`:`
+ if test "x$IS_NETWORK_DISK" = x; then
+ OUTPUT_DIR_IS_LOCAL="yes"
+ else
+ OUTPUT_DIR_IS_LOCAL="no"
+ fi
+ else
+ # No df here, say it's local
+ OUTPUT_DIR_IS_LOCAL="yes"
+ fi
+ else
+ if $DF -l $OUTPUT_ROOT > /dev/null 2>&1; then
+ OUTPUT_DIR_IS_LOCAL="yes"
+ else
+ OUTPUT_DIR_IS_LOCAL="no"
+ fi
+ fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OUTPUT_DIR_IS_LOCAL" >&5
+$as_echo "$OUTPUT_DIR_IS_LOCAL" >&6; }
+
+
+
+ # Check if the user has any old-style ALT_ variables set.
+ FOUND_ALT_VARIABLES=`env | grep ^ALT_`
+
+ # Before generating output files, test if they exist. If they do, this is a reconfigure.
+ # Since we can't properly handle the dependencies for this, warn the user about the situation
+ if test -e $OUTPUT_ROOT/spec.gmk; then
+ IS_RECONFIGURE=yes
+ else
+ IS_RECONFIGURE=no
+ fi
+
+
+# At the end, call the custom hook. (Dummy macro if no custom sources available)
+
+
+# This needs to be done after CUSTOM_LATE_HOOK since we can setup custom features.
+
+ # Keep feature lists sorted and free of duplicates
+ JVM_FEATURES_server="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_server | $SORT -u))"
+ JVM_FEATURES_client="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_client | $SORT -u))"
+ JVM_FEATURES_core="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_core | $SORT -u))"
+ JVM_FEATURES_minimal="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_minimal | $SORT -u))"
+ JVM_FEATURES_zero="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_zero | $SORT -u))"
+ JVM_FEATURES_zeroshark="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_zeroshark | $SORT -u))"
+ JVM_FEATURES_custom="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_custom | $SORT -u))"
+
+ # Validate features
+ for variant in $JVM_VARIANTS; do
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking JVM features for JVM variant '$variant'" >&5
+$as_echo_n "checking JVM features for JVM variant '$variant'... " >&6; }
+ features_var_name=JVM_FEATURES_$variant
+ JVM_FEATURES_TO_TEST=${!features_var_name}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JVM_FEATURES_TO_TEST" >&5
+$as_echo "$JVM_FEATURES_TO_TEST" >&6; }
+ NEEDLE=${VALID_JVM_FEATURES// /$'\n'}
+ STACK=${JVM_FEATURES_TO_TEST// /$'\n'}
+ INVALID_FEATURES=`$GREP -Fvx "${NEEDLE}" <<< "${STACK}"`
+ if test "x$INVALID_FEATURES" != x; then
+ as_fn_error $? "Invalid JVM feature(s): $INVALID_FEATURES" "$LINENO" 5
+ fi
+ done
+
+
+# We're messing a bit with internal autoconf variables to put the config.status
+# in the output directory instead of the current directory.
+CONFIG_STATUS="$CONFIGURESUPPORT_OUTPUTDIR/config.status"
+
+# Create the actual output files. Now the main work of configure is done.
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ if test "x$cache_file" != "x/dev/null"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+ g
+ s/^\n//
+ s/\n/ /g
+ p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by OpenJDK $as_me jdk9, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to <build-dev@openjdk.java.net>.
+OpenJDK home page: <http://openjdk.java.net>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+OpenJDK config.status jdk9
+configured by $0, generated by GNU Autoconf 2.69,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=?*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h | --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "$OUTPUT_ROOT/spec.gmk") CONFIG_FILES="$CONFIG_FILES $OUTPUT_ROOT/spec.gmk:$AUTOCONF_DIR/spec.gmk.in" ;;
+ "$OUTPUT_ROOT/bootcycle-spec.gmk") CONFIG_FILES="$CONFIG_FILES $OUTPUT_ROOT/bootcycle-spec.gmk:$AUTOCONF_DIR/bootcycle-spec.gmk.in" ;;
+ "$OUTPUT_ROOT/buildjdk-spec.gmk") CONFIG_FILES="$CONFIG_FILES $OUTPUT_ROOT/buildjdk-spec.gmk:$AUTOCONF_DIR/buildjdk-spec.gmk.in" ;;
+ "$OUTPUT_ROOT/compare.sh") CONFIG_FILES="$CONFIG_FILES $OUTPUT_ROOT/compare.sh:$AUTOCONF_DIR/compare.sh.in" ;;
+ "$OUTPUT_ROOT/Makefile") CONFIG_FILES="$CONFIG_FILES $OUTPUT_ROOT/Makefile:$AUTOCONF_DIR/Makefile.in" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X " :F $CONFIG_FILES "
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+
+ esac
+
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+# After AC_OUTPUT, we need to do final work
+
+
+ # Try to move config.log (generated by autoconf) to the configure-support directory.
+ if test -e ./config.log; then
+ $MV -f ./config.log "$CONFIGURESUPPORT_OUTPUTDIR/config.log" 2> /dev/null
+ fi
+
+ # Rotate our log file (configure.log)
+ if test -e "$OUTPUT_ROOT/configure.log.old"; then
+ $RM -f "$OUTPUT_ROOT/configure.log.old"
+ fi
+ if test -e "$OUTPUT_ROOT/configure.log"; then
+ $MV -f "$OUTPUT_ROOT/configure.log" "$OUTPUT_ROOT/configure.log.old" 2> /dev/null
+ fi
+
+ # Move configure.log from current directory to the build output root
+ if test -e ./configure.log; then
+ $MV -f ./configure.log "$OUTPUT_ROOT/configure.log" 2> /dev/null
+ fi
+
+ # Make the compare script executable
+ $CHMOD +x $OUTPUT_ROOT/compare.sh
+
+
+# Finally output some useful information to the user
+
+ # Finally output some useful information to the user
+
+ printf "\n"
+ printf "====================================================\n"
+ if test "x$no_create" != "xyes"; then
+ if test "x$IS_RECONFIGURE" != "xyes"; then
+ printf "A new configuration has been successfully created in\n%s\n" "$OUTPUT_ROOT"
+ else
+ printf "The existing configuration has been successfully updated in\n%s\n" "$OUTPUT_ROOT"
+ fi
+ else
+ if test "x$IS_RECONFIGURE" != "xyes"; then
+ printf "A configuration has been successfully checked but not created\n"
+ else
+ printf "The existing configuration has been successfully checked in\n%s\n" "$OUTPUT_ROOT"
+ fi
+ fi
+ if test "x$CONFIGURE_COMMAND_LINE" != x; then
+ printf "using configure arguments '$CONFIGURE_COMMAND_LINE'.\n"
+ else
+ printf "using default settings.\n"
+ fi
+
+ printf "\n"
+ printf "Configuration summary:\n"
+ printf "* Debug level: $DEBUG_LEVEL\n"
+ printf "* HS debug level: $HOTSPOT_DEBUG_LEVEL\n"
+ printf "* JDK variant: $JDK_VARIANT\n"
+ printf "* JVM variants: $JVM_VARIANTS\n"
+ printf "* OpenJDK target: OS: $OPENJDK_TARGET_OS, CPU architecture: $OPENJDK_TARGET_CPU_ARCH, address length: $OPENJDK_TARGET_CPU_BITS\n"
+ printf "* Version string: $VERSION_STRING ($VERSION_SHORT)\n"
+
+ printf "\n"
+ printf "Tools summary:\n"
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ printf "* Environment: $WINDOWS_ENV_VENDOR version $WINDOWS_ENV_VERSION (root at $WINDOWS_ENV_ROOT_PATH)\n"
+ fi
+ printf "* Boot JDK: $BOOT_JDK_VERSION (at $BOOT_JDK)\n"
+ if test "x$TOOLCHAIN_VERSION" != "x"; then
+ print_version=" $TOOLCHAIN_VERSION"
+ fi
+ printf "* Toolchain: $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION$print_version)\n"
+ printf "* C Compiler: Version $CC_VERSION_NUMBER (at $CC)\n"
+ printf "* C++ Compiler: Version $CXX_VERSION_NUMBER (at $CXX)\n"
+
+ printf "\n"
+ printf "Build performance summary:\n"
+ printf "* Cores to use: $JOBS\n"
+ printf "* Memory limit: $MEMORY_SIZE MB\n"
+ if test "x$CCACHE_STATUS" != "x"; then
+ printf "* ccache status: $CCACHE_STATUS\n"
+ fi
+ printf "\n"
+
+ if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xtrue"; then
+ printf "NOTE: You have requested to build more than one version of the JVM, which\n"
+ printf "will result in longer build times.\n"
+ printf "\n"
+ fi
+
+ if test "x$FOUND_ALT_VARIABLES" != "x"; then
+ printf "WARNING: You have old-style ALT_ environment variables set.\n"
+ printf "These are not respected, and will be ignored. It is recommended\n"
+ printf "that you clean your environment. The following variables are set:\n"
+ printf "$FOUND_ALT_VARIABLES\n"
+ printf "\n"
+ fi
+
+ if test "x$OUTPUT_DIR_IS_LOCAL" != "xyes"; then
+ printf "WARNING: Your build output directory is not on a local disk.\n"
+ printf "This will severely degrade build performance!\n"
+ printf "It is recommended that you create an output directory on a local disk,\n"
+ printf "and run the configure script again from that directory.\n"
+ printf "\n"
+ fi
+
+ if test "x$IS_RECONFIGURE" = "xyes" && test "x$no_create" != "xyes"; then
+ printf "WARNING: The result of this configuration has overridden an older\n"
+ printf "configuration. You *should* run 'make clean' to make sure you get a\n"
+ printf "proper build. Failure to do so might result in strange build problems.\n"
+ printf "\n"
+ fi
+
+ if test "x$IS_RECONFIGURE" != "xyes" && test "x$no_create" = "xyes"; then
+ printf "WARNING: The result of this configuration was not saved.\n"
+ printf "You should run without '--no-create | -n' to create the configuration.\n"
+ printf "\n"
+ fi
+
+
+
+ # Locate config.log.
+ if test -e "$CONFIGURESUPPORT_OUTPUTDIR/config.log"; then
+ CONFIG_LOG_PATH="$CONFIGURESUPPORT_OUTPUTDIR"
+ elif test -e "./config.log"; then
+ CONFIG_LOG_PATH="."
+ fi
+
+ if test -e "$CONFIG_LOG_PATH/config.log"; then
+ $GREP '^configure:.*: WARNING:' "$CONFIG_LOG_PATH/config.log" > /dev/null 2>&1
+ if test $? -eq 0; then
+ printf "The following warnings were produced. Repeated here for convenience:\n"
+ # We must quote sed expression (using []) to stop m4 from eating the [].
+ $GREP '^configure:.*: WARNING:' "$CONFIG_LOG_PATH/config.log" | $SED -e 's/^configure:[0-9]*: //'
+ printf "\n"
+ fi
+ fi
+
diff --git a/common/autoconf/help.m4 b/common/autoconf/help.m4
new file mode 100644
index 0000000..1a313e6
--- /dev/null
+++ b/common/autoconf/help.m4
@@ -0,0 +1,315 @@
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+AC_DEFUN_ONCE([HELP_SETUP_DEPENDENCY_HELP],
+[
+ AC_CHECK_PROGS(PKGHANDLER, apt-get yum brew port pkgutil pkgadd)
+])
+
+AC_DEFUN([HELP_MSG_MISSING_DEPENDENCY],
+[
+ # Print a helpful message on how to acquire the necessary build dependency.
+ # $1 is the help tag: freetype, cups, alsa etc
+ MISSING_DEPENDENCY=$1
+
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+ cygwin_help $MISSING_DEPENDENCY
+ elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ msys_help $MISSING_DEPENDENCY
+ else
+ PKGHANDLER_COMMAND=
+
+ case $PKGHANDLER in
+ apt-get)
+ apt_help $MISSING_DEPENDENCY ;;
+ yum)
+ yum_help $MISSING_DEPENDENCY ;;
+ brew)
+ brew_help $MISSING_DEPENDENCY ;;
+ port)
+ port_help $MISSING_DEPENDENCY ;;
+ pkgutil)
+ pkgutil_help $MISSING_DEPENDENCY ;;
+ pkgadd)
+ pkgadd_help $MISSING_DEPENDENCY ;;
+ esac
+
+ if test "x$PKGHANDLER_COMMAND" != x; then
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ fi
+ fi
+])
+
+cygwin_help() {
+ case $1 in
+ unzip)
+ PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P unzip )"
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ ;;
+ zip)
+ PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P zip )"
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ ;;
+ make)
+ PKGHANDLER_COMMAND="( cd <location of cygwin setup.exe> && cmd /c setup -q -P make )"
+ HELP_MSG="You might be able to fix this by running '$PKGHANDLER_COMMAND'."
+ ;;
+ freetype)
+ HELP_MSG="
+The freetype library can now be build during the configure process.
+Download the freetype sources and unpack them into an arbitrary directory:
+
+wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.3.tar.gz
+tar -xzf freetype-2.5.3.tar.gz
+
+Then run configure with '--with-freetype-src=<freetype_src>'. This will
+automatically build the freetype library into '<freetype_src>/lib64' for 64-bit
+builds or into '<freetype_src>/lib32' for 32-bit builds.
+Afterwards you can always use '--with-freetype-include=<freetype_src>/include'
+and '--with-freetype-lib=<freetype_src>/lib[32|64]' for other builds.
+
+Alternatively you can unpack the sources like this to use the default directory:
+
+tar --one-top-level=$HOME/freetype --strip-components=1 -xzf freetype-2.5.3.tar.gz"
+ ;;
+ esac
+}
+
+msys_help() {
+ PKGHANDLER_COMMAND=""
+}
+
+apt_help() {
+ case $1 in
+ reduced)
+ PKGHANDLER_COMMAND="sudo apt-get install gcc-multilib g++-multilib" ;;
+ devkit)
+ PKGHANDLER_COMMAND="sudo apt-get install build-essential" ;;
+ openjdk)
+ PKGHANDLER_COMMAND="sudo apt-get install openjdk-8-jdk" ;;
+ alsa)
+ PKGHANDLER_COMMAND="sudo apt-get install libasound2-dev" ;;
+ cups)
+ PKGHANDLER_COMMAND="sudo apt-get install libcups2-dev" ;;
+ freetype)
+ PKGHANDLER_COMMAND="sudo apt-get install libfreetype6-dev" ;;
+ ffi)
+ PKGHANDLER_COMMAND="sudo apt-get install libffi-dev" ;;
+ x11)
+ PKGHANDLER_COMMAND="sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev" ;;
+ ccache)
+ PKGHANDLER_COMMAND="sudo apt-get install ccache" ;;
+ dtrace)
+ PKGHANDLER_COMMAND="sudo apt-get install systemtap-sdt-dev" ;;
+ elf)
+ PKGHANDLER_COMMAND="sudo apt-get install libelf-dev" ;;
+ esac
+}
+
+yum_help() {
+ case $1 in
+ devkit)
+ PKGHANDLER_COMMAND="sudo yum groupinstall \"Development Tools\"" ;;
+ openjdk)
+ PKGHANDLER_COMMAND="sudo yum install java-1.8.0-openjdk-devel" ;;
+ alsa)
+ PKGHANDLER_COMMAND="sudo yum install alsa-lib-devel" ;;
+ cups)
+ PKGHANDLER_COMMAND="sudo yum install cups-devel" ;;
+ freetype)
+ PKGHANDLER_COMMAND="sudo yum install freetype-devel" ;;
+ x11)
+ PKGHANDLER_COMMAND="sudo yum install libXtst-devel libXt-devel libXrender-devel libXi-devel" ;;
+ ccache)
+ PKGHANDLER_COMMAND="sudo yum install ccache" ;;
+ elf)
+ PKGHANDLER_COMMAND="sudo yum install elfutils-libelf-devel" ;;
+ esac
+}
+
+brew_help() {
+ case $1 in
+ openjdk)
+ PKGHANDLER_COMMAND="brew cask install java" ;;
+ freetype)
+ PKGHANDLER_COMMAND="brew install freetype" ;;
+ ccache)
+ PKGHANDLER_COMMAND="brew install ccache" ;;
+ esac
+}
+
+port_help() {
+ PKGHANDLER_COMMAND=""
+}
+
+pkgutil_help() {
+ PKGHANDLER_COMMAND=""
+}
+
+pkgadd_help() {
+ PKGHANDLER_COMMAND=""
+}
+
+# This function will check if we're called from the "configure" wrapper while
+# printing --help. If so, we will print out additional information that can
+# only be extracted within the autoconf script, and then exit. This must be
+# called at the very beginning in configure.ac.
+AC_DEFUN_ONCE([HELP_PRINT_ADDITIONAL_HELP_AND_EXIT],
+[
+ if test "x$CONFIGURE_PRINT_ADDITIONAL_HELP" != x; then
+
+ # Print available toolchains
+ $PRINTF "The following toolchains are available as arguments to --with-toolchain-type.\n"
+ $PRINTF "Which are valid to use depends on the build platform.\n"
+ for toolchain in $VALID_TOOLCHAINS_all; do
+ # Use indirect variable referencing
+ toolchain_var_name=TOOLCHAIN_DESCRIPTION_$toolchain
+ TOOLCHAIN_DESCRIPTION=${!toolchain_var_name}
+ $PRINTF " %-10s %s\n" $toolchain "$TOOLCHAIN_DESCRIPTION"
+ done
+ $PRINTF "\n"
+
+ # Print available jvm features
+ $PRINTF "The following JVM features are available as arguments to --with-jvm-features.\n"
+ $PRINTF "Which are valid to use depends on the target platform.\n "
+ $PRINTF "%s " $VALID_JVM_FEATURES
+ $PRINTF "\n"
+
+ # And now exit directly
+ exit 0
+ fi
+])
+
+AC_DEFUN_ONCE([HELP_PRINT_SUMMARY_AND_WARNINGS],
+[
+ # Finally output some useful information to the user
+
+ printf "\n"
+ printf "====================================================\n"
+ if test "x$no_create" != "xyes"; then
+ if test "x$IS_RECONFIGURE" != "xyes"; then
+ printf "A new configuration has been successfully created in\n%s\n" "$OUTPUT_ROOT"
+ else
+ printf "The existing configuration has been successfully updated in\n%s\n" "$OUTPUT_ROOT"
+ fi
+ else
+ if test "x$IS_RECONFIGURE" != "xyes"; then
+ printf "A configuration has been successfully checked but not created\n"
+ else
+ printf "The existing configuration has been successfully checked in\n%s\n" "$OUTPUT_ROOT"
+ fi
+ fi
+ if test "x$CONFIGURE_COMMAND_LINE" != x; then
+ printf "using configure arguments '$CONFIGURE_COMMAND_LINE'.\n"
+ else
+ printf "using default settings.\n"
+ fi
+
+ printf "\n"
+ printf "Configuration summary:\n"
+ printf "* Debug level: $DEBUG_LEVEL\n"
+ printf "* HS debug level: $HOTSPOT_DEBUG_LEVEL\n"
+ printf "* JDK variant: $JDK_VARIANT\n"
+ printf "* JVM variants: $JVM_VARIANTS\n"
+ printf "* OpenJDK target: OS: $OPENJDK_TARGET_OS, CPU architecture: $OPENJDK_TARGET_CPU_ARCH, address length: $OPENJDK_TARGET_CPU_BITS\n"
+ printf "* Version string: $VERSION_STRING ($VERSION_SHORT)\n"
+
+ printf "\n"
+ printf "Tools summary:\n"
+ if test "x$OPENJDK_BUILD_OS" = "xwindows"; then
+ printf "* Environment: $WINDOWS_ENV_VENDOR version $WINDOWS_ENV_VERSION (root at $WINDOWS_ENV_ROOT_PATH)\n"
+ fi
+ printf "* Boot JDK: $BOOT_JDK_VERSION (at $BOOT_JDK)\n"
+ if test "x$TOOLCHAIN_VERSION" != "x"; then
+ print_version=" $TOOLCHAIN_VERSION"
+ fi
+ printf "* Toolchain: $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION$print_version)\n"
+ printf "* C Compiler: Version $CC_VERSION_NUMBER (at $CC)\n"
+ printf "* C++ Compiler: Version $CXX_VERSION_NUMBER (at $CXX)\n"
+
+ printf "\n"
+ printf "Build performance summary:\n"
+ printf "* Cores to use: $JOBS\n"
+ printf "* Memory limit: $MEMORY_SIZE MB\n"
+ if test "x$CCACHE_STATUS" != "x"; then
+ printf "* ccache status: $CCACHE_STATUS\n"
+ fi
+ printf "\n"
+
+ if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xtrue"; then
+ printf "NOTE: You have requested to build more than one version of the JVM, which\n"
+ printf "will result in longer build times.\n"
+ printf "\n"
+ fi
+
+ if test "x$FOUND_ALT_VARIABLES" != "x"; then
+ printf "WARNING: You have old-style ALT_ environment variables set.\n"
+ printf "These are not respected, and will be ignored. It is recommended\n"
+ printf "that you clean your environment. The following variables are set:\n"
+ printf "$FOUND_ALT_VARIABLES\n"
+ printf "\n"
+ fi
+
+ if test "x$OUTPUT_DIR_IS_LOCAL" != "xyes"; then
+ printf "WARNING: Your build output directory is not on a local disk.\n"
+ printf "This will severely degrade build performance!\n"
+ printf "It is recommended that you create an output directory on a local disk,\n"
+ printf "and run the configure script again from that directory.\n"
+ printf "\n"
+ fi
+
+ if test "x$IS_RECONFIGURE" = "xyes" && test "x$no_create" != "xyes"; then
+ printf "WARNING: The result of this configuration has overridden an older\n"
+ printf "configuration. You *should* run 'make clean' to make sure you get a\n"
+ printf "proper build. Failure to do so might result in strange build problems.\n"
+ printf "\n"
+ fi
+
+ if test "x$IS_RECONFIGURE" != "xyes" && test "x$no_create" = "xyes"; then
+ printf "WARNING: The result of this configuration was not saved.\n"
+ printf "You should run without '--no-create | -n' to create the configuration.\n"
+ printf "\n"
+ fi
+])
+
+AC_DEFUN_ONCE([HELP_REPEAT_WARNINGS],
+[
+ # Locate config.log.
+ if test -e "$CONFIGURESUPPORT_OUTPUTDIR/config.log"; then
+ CONFIG_LOG_PATH="$CONFIGURESUPPORT_OUTPUTDIR"
+ elif test -e "./config.log"; then
+ CONFIG_LOG_PATH="."
+ fi
+
+ if test -e "$CONFIG_LOG_PATH/config.log"; then
+ $GREP '^configure:.*: WARNING:' "$CONFIG_LOG_PATH/config.log" > /dev/null 2>&1
+ if test $? -eq 0; then
+ printf "The following warnings were produced. Repeated here for convenience:\n"
+ # We must quote sed expression (using []) to stop m4 from eating the [].
+ $GREP '^configure:.*: WARNING:' "$CONFIG_LOG_PATH/config.log" | $SED -e [ 's/^configure:[0-9]*: //' ]
+ printf "\n"
+ fi
+ fi
+])
diff --git a/common/autoconf/hotspot.m4 b/common/autoconf/hotspot.m4
new file mode 100644
index 0000000..acf2a5f
--- /dev/null
+++ b/common/autoconf/hotspot.m4
@@ -0,0 +1,495 @@
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# All valid JVM features, regardless of platform
+VALID_JVM_FEATURES="compiler1 compiler2 zero shark minimal dtrace jvmti jvmci \
+ graal fprof vm-structs jni-check services management all-gcs nmt cds \
+ static-build link-time-opt aot"
+
+# All valid JVM variants
+VALID_JVM_VARIANTS="server client minimal core zero zeroshark custom"
+
+###############################################################################
+# Check if the specified JVM variant should be built. To be used in shell if
+# constructs, like this:
+# if HOTSPOT_CHECK_JVM_VARIANT(server); then
+#
+# Only valid to use after HOTSPOT_SETUP_JVM_VARIANTS has setup variants.
+
+# Definition kept in one line to allow inlining in if statements.
+# Additional [] needed to keep m4 from mangling shell constructs.
+AC_DEFUN([HOTSPOT_CHECK_JVM_VARIANT],
+[ [ [[ " $JVM_VARIANTS " =~ " $1 " ]] ] ])
+
+###############################################################################
+# Check if the specified JVM features are explicitly enabled. To be used in
+# shell if constructs, like this:
+# if HOTSPOT_CHECK_JVM_FEATURE(jvmti); then
+#
+# Only valid to use after HOTSPOT_SETUP_JVM_FEATURES has setup features.
+
+# Definition kept in one line to allow inlining in if statements.
+# Additional [] needed to keep m4 from mangling shell constructs.
+AC_DEFUN([HOTSPOT_CHECK_JVM_FEATURE],
+[ [ [[ " $JVM_FEATURES " =~ " $1 " ]] ] ])
+
+###############################################################################
+# Check which variants of the JVM that we want to build. Available variants are:
+# server: normal interpreter, and a tiered C1/C2 compiler
+# client: normal interpreter, and C1 (no C2 compiler)
+# minimal: reduced form of client with optional features stripped out
+# core: normal interpreter only, no compiler
+# zero: C++ based interpreter only, no compiler
+# zeroshark: C++ based interpreter, and a llvm-based compiler
+# custom: baseline JVM with no default features
+#
+AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_VARIANTS],
+[
+ AC_ARG_WITH([jvm-variants], [AS_HELP_STRING([--with-jvm-variants],
+ [JVM variants (separated by commas) to build (server,client,minimal,core,zero,zeroshark,custom) @<:@server@:>@])])
+
+ SETUP_HOTSPOT_TARGET_CPU_PORT
+
+ if test "x$with_jvm_variants" = x; then
+ with_jvm_variants="server"
+ fi
+ JVM_VARIANTS_OPT="$with_jvm_variants"
+
+ # Has the user listed more than one variant?
+ # Additional [] needed to keep m4 from mangling shell constructs.
+ if [ [[ "$JVM_VARIANTS_OPT" =~ "," ]] ]; then
+ BUILDING_MULTIPLE_JVM_VARIANTS=true
+ else
+ BUILDING_MULTIPLE_JVM_VARIANTS=false
+ fi
+ # Replace the commas with AND for use in the build directory name.
+ JVM_VARIANTS_WITH_AND=`$ECHO "$JVM_VARIANTS_OPT" | $SED -e 's/,/AND/g'`
+
+ AC_MSG_CHECKING([which variants of the JVM to build])
+ # JVM_VARIANTS is a space-separated list.
+ # Also use minimal, not minimal1 (which is kept for backwards compatibility).
+ JVM_VARIANTS=`$ECHO $JVM_VARIANTS_OPT | $SED -e 's/,/ /g' -e 's/minimal1/minimal/'`
+ AC_MSG_RESULT([$JVM_VARIANTS])
+
+ # Check that the selected variants are valid
+
+ # grep filter function inspired by a comment to http://stackoverflow.com/a/1617326
+ # Notice that the original variant failes on SLES 10 and 11
+ NEEDLE=${VALID_JVM_VARIANTS// /$'\n'}
+ STACK=${JVM_VARIANTS// /$'\n'}
+ INVALID_VARIANTS=`$GREP -Fvx "${NEEDLE}" <<< "${STACK}"`
+ if test "x$INVALID_VARIANTS" != x; then
+ AC_MSG_NOTICE([Unknown variant(s) specified: $INVALID_VARIANTS])
+ AC_MSG_ERROR([The available JVM variants are: $VALID_JVM_VARIANTS])
+ fi
+
+ # All "special" variants share the same output directory ("server")
+ VALID_MULTIPLE_JVM_VARIANTS="server client minimal"
+ NEEDLE=${VALID_MULTIPLE_JVM_VARIANTS// /$'\n'}
+ STACK=${JVM_VARIANTS// /$'\n'}
+ INVALID_MULTIPLE_VARIANTS=`$GREP -Fvx "${NEEDLE}" <<< "${STACK}"`
+ if test "x$INVALID_MULTIPLE_VARIANTS" != x && test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = xtrue; then
+ AC_MSG_ERROR([You cannot build multiple variants with anything else than $VALID_MULTIPLE_JVM_VARIANTS.])
+ fi
+
+ # The "main" variant is the one used by other libs to link against during the
+ # build.
+ if test "x$BUILDING_MULTIPLE_JVM_VARIANTS" = "xtrue"; then
+ MAIN_VARIANT_PRIO_ORDER="server client minimal"
+ for variant in $MAIN_VARIANT_PRIO_ORDER; do
+ if HOTSPOT_CHECK_JVM_VARIANT($variant); then
+ JVM_VARIANT_MAIN="$variant"
+ break
+ fi
+ done
+ else
+ JVM_VARIANT_MAIN="$JVM_VARIANTS"
+ fi
+
+ AC_SUBST(JVM_VARIANTS)
+ AC_SUBST(VALID_JVM_VARIANTS)
+ AC_SUBST(JVM_VARIANT_MAIN)
+
+ if HOTSPOT_CHECK_JVM_VARIANT(zero) || HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
+ # zero behaves as a platform and rewrites these values. This is really weird. :(
+ # We are guaranteed that we do not build any other variants when building zero.
+ HOTSPOT_TARGET_CPU=zero
+ HOTSPOT_TARGET_CPU_ARCH=zero
+ fi
+])
+
+###############################################################################
+# Check if dtrace should be enabled and has all prerequisites present.
+#
+AC_DEFUN_ONCE([HOTSPOT_SETUP_DTRACE],
+[
+ # Test for dtrace dependencies
+ AC_ARG_ENABLE([dtrace], [AS_HELP_STRING([--enable-dtrace@<:@=yes/no/auto@:>@],
+ [enable dtrace. Default is auto, where dtrace is enabled if all dependencies
+ are present.])])
+
+ DTRACE_DEP_MISSING=false
+
+ AC_MSG_CHECKING([for dtrace tool])
+ if test "x$DTRACE" != "x" && test -x "$DTRACE"; then
+ AC_MSG_RESULT([$DTRACE])
+ else
+ AC_MSG_RESULT([not found, cannot build dtrace])
+ DTRACE_DEP_MISSING=true
+ fi
+
+ AC_CHECK_HEADERS([sys/sdt.h], [DTRACE_HEADERS_OK=yes],[DTRACE_HEADERS_OK=no])
+ if test "x$DTRACE_HEADERS_OK" != "xyes"; then
+ DTRACE_DEP_MISSING=true
+ fi
+
+ AC_MSG_CHECKING([if dtrace should be built])
+ if test "x$enable_dtrace" = "xyes"; then
+ if test "x$DTRACE_DEP_MISSING" = "xtrue"; then
+ AC_MSG_RESULT([no, missing dependencies])
+ HELP_MSG_MISSING_DEPENDENCY([dtrace])
+ AC_MSG_ERROR([Cannot enable dtrace with missing dependencies. See above. $HELP_MSG])
+ else
+ INCLUDE_DTRACE=true
+ AC_MSG_RESULT([yes, forced])
+ fi
+ elif test "x$enable_dtrace" = "xno"; then
+ INCLUDE_DTRACE=false
+ AC_MSG_RESULT([no, forced])
+ elif test "x$enable_dtrace" = "xauto" || test "x$enable_dtrace" = "x"; then
+ if test "x$DTRACE_DEP_MISSING" = "xtrue"; then
+ INCLUDE_DTRACE=false
+ AC_MSG_RESULT([no, missing dependencies])
+ else
+ INCLUDE_DTRACE=true
+ AC_MSG_RESULT([yes, dependencies present])
+ fi
+ else
+ AC_MSG_ERROR([Invalid value for --enable-dtrace: $enable_dtrace])
+ fi
+])
+
+################################################################################
+# Check if AOT should be enabled
+#
+AC_DEFUN_ONCE([HOTSPOT_ENABLE_DISABLE_AOT],
+[
+ AC_ARG_ENABLE([aot], [AS_HELP_STRING([--enable-aot@<:@=yes/no/auto@:>@],
+ [enable ahead of time compilation feature. Default is auto, where aot is enabled if all dependencies are present.])])
+
+ if test "x$enable_aot" = "x" || test "x$enable_aot" = "xauto"; then
+ ENABLE_AOT="true"
+ elif test "x$enable_aot" = "xyes"; then
+ ENABLE_AOT="true"
+ elif test "x$enable_aot" = "xno"; then
+ ENABLE_AOT="false"
+ AC_MSG_CHECKING([if aot should be enabled])
+ AC_MSG_RESULT([no, forced])
+ else
+ AC_MSG_ERROR([Invalid value for --enable-aot: $enable_aot])
+ fi
+
+ if test "x$ENABLE_AOT" = "xtrue"; then
+ # Only enable AOT on linux-X64.
+ if test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = "xlinux-x86_64"; then
+ if test -e "$HOTSPOT_TOPDIR/src/jdk.aot"; then
+ if test -e "$HOTSPOT_TOPDIR/src/jdk.internal.vm.compiler"; then
+ ENABLE_AOT="true"
+ else
+ ENABLE_AOT="false"
+ if test "x$enable_aot" = "xyes"; then
+ AC_MSG_ERROR([Cannot build AOT without hotspot/src/jdk.internal.vm.compiler sources. Remove --enable-aot.])
+ fi
+ fi
+ else
+ ENABLE_AOT="false"
+ if test "x$enable_aot" = "xyes"; then
+ AC_MSG_ERROR([Cannot build AOT without hotspot/src/jdk.aot sources. Remove --enable-aot.])
+ fi
+ fi
+ else
+ ENABLE_AOT="false"
+ if test "x$enable_aot" = "xyes"; then
+ AC_MSG_ERROR([AOT is currently only supported on Linux-x86_64. Remove --enable-aot.])
+ fi
+ fi
+ fi
+
+ AC_SUBST(ENABLE_AOT)
+])
+
+###############################################################################
+# Set up all JVM features for each JVM variant.
+#
+AC_DEFUN_ONCE([HOTSPOT_SETUP_JVM_FEATURES],
+[
+ # The user can in some cases supply additional jvm features. For the custom
+ # variant, this defines the entire variant.
+ AC_ARG_WITH([jvm-features], [AS_HELP_STRING([--with-jvm-features],
+ [additional JVM features to enable (separated by comma), use '--help' to show possible values @<:@none@:>@])])
+ if test "x$with_jvm_features" != x; then
+ AC_MSG_CHECKING([additional JVM features])
+ JVM_FEATURES=`$ECHO $with_jvm_features | $SED -e 's/,/ /g'`
+ AC_MSG_RESULT([$JVM_FEATURES])
+ fi
+
+ # Override hotspot cpu definitions for ARM platforms
+ if test "x$OPENJDK_TARGET_CPU" = xarm; then
+ HOTSPOT_TARGET_CPU=arm_32
+ HOTSPOT_TARGET_CPU_DEFINE="ARM32"
+ JVM_LDFLAGS="$JVM_LDFLAGS -fsigned-char"
+ JVM_CFLAGS="$JVM_CFLAGS -DARM -fsigned-char"
+ elif test "x$OPENJDK_TARGET_CPU" = xaarch64 && test "x$HOTSPOT_TARGET_CPU_PORT" = xarm64; then
+ HOTSPOT_TARGET_CPU=arm_64
+ HOTSPOT_TARGET_CPU_ARCH=arm
+ JVM_LDFLAGS="$JVM_LDFLAGS -fsigned-char"
+ JVM_CFLAGS="$JVM_CFLAGS -DARM -fsigned-char"
+ fi
+
+ # Verify that dependencies are met for explicitly set features.
+ if HOTSPOT_CHECK_JVM_FEATURE(jvmti) && ! HOTSPOT_CHECK_JVM_FEATURE(services); then
+ AC_MSG_ERROR([Specified JVM feature 'jvmti' requires feature 'services'])
+ fi
+
+ if HOTSPOT_CHECK_JVM_FEATURE(management) && ! HOTSPOT_CHECK_JVM_FEATURE(nmt); then
+ AC_MSG_ERROR([Specified JVM feature 'management' requires feature 'nmt'])
+ fi
+
+ if HOTSPOT_CHECK_JVM_FEATURE(jvmci) && ! (HOTSPOT_CHECK_JVM_FEATURE(compiler1) || HOTSPOT_CHECK_JVM_FEATURE(compiler2)); then
+ AC_MSG_ERROR([Specified JVM feature 'jvmci' requires feature 'compiler2' or 'compiler1'])
+ fi
+
+ if HOTSPOT_CHECK_JVM_FEATURE(compiler2) && ! HOTSPOT_CHECK_JVM_FEATURE(all-gcs); then
+ AC_MSG_ERROR([Specified JVM feature 'compiler2' requires feature 'all-gcs'])
+ fi
+
+ if HOTSPOT_CHECK_JVM_FEATURE(vm-structs) && ! HOTSPOT_CHECK_JVM_FEATURE(all-gcs); then
+ AC_MSG_ERROR([Specified JVM feature 'vm-structs' requires feature 'all-gcs'])
+ fi
+
+ # Turn on additional features based on other parts of configure
+ if test "x$INCLUDE_DTRACE" = "xtrue"; then
+ JVM_FEATURES="$JVM_FEATURES dtrace"
+ else
+ if HOTSPOT_CHECK_JVM_FEATURE(dtrace); then
+ AC_MSG_ERROR([To enable dtrace, you must use --enable-dtrace])
+ fi
+ fi
+
+ if test "x$STATIC_BUILD" = "xtrue"; then
+ JVM_FEATURES="$JVM_FEATURES static-build"
+ else
+ if HOTSPOT_CHECK_JVM_FEATURE(static-build); then
+ AC_MSG_ERROR([To enable static-build, you must use --enable-static-build])
+ fi
+ fi
+
+ if ! HOTSPOT_CHECK_JVM_VARIANT(zero) && ! HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
+ if HOTSPOT_CHECK_JVM_FEATURE(zero); then
+ AC_MSG_ERROR([To enable zero/zeroshark, you must use --with-jvm-variants=zero/zeroshark])
+ fi
+ fi
+
+ if ! HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
+ if HOTSPOT_CHECK_JVM_FEATURE(shark); then
+ AC_MSG_ERROR([To enable shark, you must use --with-jvm-variants=zeroshark])
+ fi
+ fi
+
+ # Only enable jvmci on x86_64, sparcv9 and aarch64.
+ if test "x$OPENJDK_TARGET_CPU" = "xx86_64" || \
+ test "x$OPENJDK_TARGET_CPU" = "xsparcv9" || \
+ test "x$OPENJDK_TARGET_CPU" = "xaarch64" ; then
+ JVM_FEATURES_jvmci="jvmci"
+ else
+ JVM_FEATURES_jvmci=""
+ fi
+
+ AC_MSG_CHECKING([if jdk.internal.vm.compiler should be built])
+ if HOTSPOT_CHECK_JVM_FEATURE(graal); then
+ AC_MSG_RESULT([yes, forced])
+ if test "x$JVM_FEATURES_jvmci" != "xjvmci" ; then
+ AC_MSG_ERROR([Specified JVM feature 'graal' requires feature 'jvmci'])
+ fi
+ INCLUDE_GRAAL="true"
+ else
+ # By default enable graal build where AOT is available
+ if test "x$ENABLE_AOT" = "xtrue"; then
+ AC_MSG_RESULT([yes])
+ JVM_FEATURES_graal="graal"
+ INCLUDE_GRAAL="true"
+ else
+ AC_MSG_RESULT([no])
+ JVM_FEATURES_graal=""
+ INCLUDE_GRAAL="false"
+ fi
+ fi
+
+ AC_SUBST(INCLUDE_GRAAL)
+
+ AC_MSG_CHECKING([if aot should be enabled])
+ if test "x$ENABLE_AOT" = "xtrue"; then
+ if test "x$enable_aot" = "xyes"; then
+ AC_MSG_RESULT([yes, forced])
+ else
+ AC_MSG_RESULT([yes])
+ fi
+ JVM_FEATURES_aot="aot"
+ else
+ if test "x$enable_aot" = "xno"; then
+ AC_MSG_RESULT([no, forced])
+ else
+ AC_MSG_RESULT([no])
+ fi
+ JVM_FEATURES_aot=""
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU" = xarm ; then
+ # Default to use link time optimizations on minimal on arm
+ JVM_FEATURES_link_time_opt="link-time-opt"
+ else
+ JVM_FEATURES_link_time_opt=""
+ fi
+
+ # All variants but minimal (and custom) get these features
+ NON_MINIMAL_FEATURES="$NON_MINIMAL_FEATURES jvmti fprof vm-structs jni-check services management all-gcs nmt cds"
+
+ # Enable features depending on variant.
+ JVM_FEATURES_server="compiler1 compiler2 $NON_MINIMAL_FEATURES $JVM_FEATURES $JVM_FEATURES_jvmci $JVM_FEATURES_aot $JVM_FEATURES_graal"
+ JVM_FEATURES_client="compiler1 $NON_MINIMAL_FEATURES $JVM_FEATURES $JVM_FEATURES_jvmci"
+ JVM_FEATURES_core="$NON_MINIMAL_FEATURES $JVM_FEATURES"
+ JVM_FEATURES_minimal="compiler1 minimal $JVM_FEATURES $JVM_FEATURES_link_time_opt"
+ JVM_FEATURES_zero="zero $NON_MINIMAL_FEATURES $JVM_FEATURES"
+ JVM_FEATURES_zeroshark="zero shark $NON_MINIMAL_FEATURES $JVM_FEATURES"
+ JVM_FEATURES_custom="$JVM_FEATURES"
+
+ AC_SUBST(JVM_FEATURES_server)
+ AC_SUBST(JVM_FEATURES_client)
+ AC_SUBST(JVM_FEATURES_core)
+ AC_SUBST(JVM_FEATURES_minimal)
+ AC_SUBST(JVM_FEATURES_zero)
+ AC_SUBST(JVM_FEATURES_zeroshark)
+ AC_SUBST(JVM_FEATURES_custom)
+
+ # Used for verification of Makefiles by check-jvm-feature
+ AC_SUBST(VALID_JVM_FEATURES)
+
+ # We don't support --with-jvm-interpreter anymore, use zero instead.
+ BASIC_DEPRECATED_ARG_WITH(jvm-interpreter)
+])
+
+###############################################################################
+# Validate JVM features once all setup is complete, including custom setup.
+#
+AC_DEFUN_ONCE([HOTSPOT_VALIDATE_JVM_FEATURES],
+[
+ # Keep feature lists sorted and free of duplicates
+ JVM_FEATURES_server="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_server | $SORT -u))"
+ JVM_FEATURES_client="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_client | $SORT -u))"
+ JVM_FEATURES_core="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_core | $SORT -u))"
+ JVM_FEATURES_minimal="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_minimal | $SORT -u))"
+ JVM_FEATURES_zero="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_zero | $SORT -u))"
+ JVM_FEATURES_zeroshark="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_zeroshark | $SORT -u))"
+ JVM_FEATURES_custom="$($ECHO $($PRINTF '%s\n' $JVM_FEATURES_custom | $SORT -u))"
+
+ # Validate features
+ for variant in $JVM_VARIANTS; do
+ AC_MSG_CHECKING([JVM features for JVM variant '$variant'])
+ features_var_name=JVM_FEATURES_$variant
+ JVM_FEATURES_TO_TEST=${!features_var_name}
+ AC_MSG_RESULT([$JVM_FEATURES_TO_TEST])
+ NEEDLE=${VALID_JVM_FEATURES// /$'\n'}
+ STACK=${JVM_FEATURES_TO_TEST// /$'\n'}
+ INVALID_FEATURES=`$GREP -Fvx "${NEEDLE}" <<< "${STACK}"`
+ if test "x$INVALID_FEATURES" != x; then
+ AC_MSG_ERROR([Invalid JVM feature(s): $INVALID_FEATURES])
+ fi
+ done
+])
+
+################################################################################
+#
+# Specify which sources will be used to build the 64-bit ARM port
+#
+# --with-cpu-port=arm64 will use hotspot/src/cpu/arm
+# --with-cpu-port=aarch64 will use hotspot/src/cpu/aarch64
+#
+AC_DEFUN([SETUP_HOTSPOT_TARGET_CPU_PORT],
+[
+ AC_ARG_WITH(cpu-port, [AS_HELP_STRING([--with-cpu-port],
+ [specify sources to use for Hotspot 64-bit ARM port (arm64,aarch64) @<:@aarch64@:>@ ])])
+
+ if test "x$with_cpu_port" != x; then
+ if test "x$OPENJDK_TARGET_CPU" != xaarch64; then
+ AC_MSG_ERROR([--with-cpu-port only available on aarch64])
+ fi
+ if test "x$with_cpu_port" != xarm64 && \
+ test "x$with_cpu_port" != xaarch64; then
+ AC_MSG_ERROR([--with-cpu-port must specify arm64 or aarch64])
+ fi
+ HOTSPOT_TARGET_CPU_PORT="$with_cpu_port"
+ fi
+])
+
+
+################################################################################
+# Check if gtest should be built
+#
+AC_DEFUN_ONCE([HOTSPOT_ENABLE_DISABLE_GTEST],
+[
+ AC_ARG_ENABLE([hotspot-gtest], [AS_HELP_STRING([--disable-hotspot-gtest],
+ [Disables building of the Hotspot unit tests])])
+
+ if test -e "$HOTSPOT_TOPDIR/test/native"; then
+ GTEST_DIR_EXISTS="true"
+ else
+ GTEST_DIR_EXISTS="false"
+ fi
+
+ AC_MSG_CHECKING([if Hotspot gtest unit tests should be built])
+ if test "x$enable_hotspot_gtest" = "xyes"; then
+ if test "x$GTEST_DIR_EXISTS" = "xtrue"; then
+ AC_MSG_RESULT([yes, forced])
+ BUILD_GTEST="true"
+ else
+ AC_MSG_ERROR([Cannot build gtest without the test source])
+ fi
+ elif test "x$enable_hotspot_gtest" = "xno"; then
+ AC_MSG_RESULT([no, forced])
+ BUILD_GTEST="false"
+ elif test "x$enable_hotspot_gtest" = "x"; then
+ if test "x$GTEST_DIR_EXISTS" = "xtrue"; then
+ AC_MSG_RESULT([yes])
+ BUILD_GTEST="true"
+ else
+ AC_MSG_RESULT([no])
+ BUILD_GTEST="false"
+ fi
+ else
+ AC_MSG_ERROR([--enable-gtest must be either yes or no])
+ fi
+
+ AC_SUBST(BUILD_GTEST)
+])
diff --git a/common/autoconf/jdk-options.m4 b/common/autoconf/jdk-options.m4
new file mode 100644
index 0000000..73e2d74
--- /dev/null
+++ b/common/autoconf/jdk-options.m4
@@ -0,0 +1,532 @@
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+###############################################################################
+# Check which variant of the JDK that we want to build.
+# Currently we have:
+# normal: standard edition
+# 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.
+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) @<:@normal@:>@])])
+
+ if test "x$with_jdk_variant" = xnormal || test "x$with_jdk_variant" = x; then
+ JDK_VARIANT="normal"
+ else
+ AC_MSG_ERROR([The available JDK variants are: normal])
+ fi
+
+ AC_SUBST(JDK_VARIANT)
+
+ AC_MSG_RESULT([$JDK_VARIANT])
+])
+
+###############################################################################
+# Set the debug level
+# release: no debug information, all optimizations, no asserts.
+# optimized: no debug information, all optimizations, no asserts, HotSpot target is 'optimized'.
+# fastdebug: debug information (-g), all optimizations, all asserts
+# slowdebug: debug information (-g), no optimizations, all asserts
+AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_LEVEL],
+[
+ DEBUG_LEVEL="release"
+ AC_MSG_CHECKING([which debug level to use])
+ AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug],
+ [set the debug level to fastdebug (shorthand for --with-debug-level=fastdebug) @<:@disabled@:>@])],
+ [
+ ENABLE_DEBUG="${enableval}"
+ DEBUG_LEVEL="fastdebug"
+ ], [ENABLE_DEBUG="no"])
+
+ AC_ARG_WITH([debug-level], [AS_HELP_STRING([--with-debug-level],
+ [set the debug level (release, fastdebug, slowdebug, optimized) @<:@release@:>@])],
+ [
+ DEBUG_LEVEL="${withval}"
+ if test "x$ENABLE_DEBUG" = xyes; then
+ AC_MSG_ERROR([You cannot use both --enable-debug and --with-debug-level at the same time.])
+ fi
+ ])
+ AC_MSG_RESULT([$DEBUG_LEVEL])
+
+ if test "x$DEBUG_LEVEL" != xrelease && \
+ test "x$DEBUG_LEVEL" != xoptimized && \
+ test "x$DEBUG_LEVEL" != xfastdebug && \
+ test "x$DEBUG_LEVEL" != xslowdebug; then
+ AC_MSG_ERROR([Allowed debug levels are: release, fastdebug, slowdebug and optimized])
+ fi
+
+ # Translate DEBUG_LEVEL to debug level used by Hotspot
+ HOTSPOT_DEBUG_LEVEL="$DEBUG_LEVEL"
+ if test "x$DEBUG_LEVEL" = xrelease; then
+ HOTSPOT_DEBUG_LEVEL="product"
+ elif test "x$DEBUG_LEVEL" = xslowdebug; then
+ HOTSPOT_DEBUG_LEVEL="debug"
+ fi
+
+ if test "x$DEBUG_LEVEL" = xoptimized; then
+ # The debug level 'optimized' is a little special because it is currently only
+ # applicable to the HotSpot build where it means to build a completely
+ # optimized version of the VM without any debugging code (like for the
+ # 'release' debug level which is called 'product' in the HotSpot build) but
+ # with the exception that it can contain additional code which is otherwise
+ # protected by '#ifndef PRODUCT' macros. These 'optimized' builds are used to
+ # test new and/or experimental features which are not intended for customer
+ # shipment. Because these new features need to be tested and benchmarked in
+ # real world scenarios, we want to build the containing JDK at the 'release'
+ # debug level.
+ DEBUG_LEVEL="release"
+ fi
+
+ AC_SUBST(HOTSPOT_DEBUG_LEVEL)
+ AC_SUBST(DEBUG_LEVEL)
+])
+
+###############################################################################
+#
+# Should we build only OpenJDK even if closed sources are present?
+#
+AC_DEFUN_ONCE([JDKOPT_SETUP_OPEN_OR_CUSTOM],
+[
+ AC_ARG_ENABLE([openjdk-only], [AS_HELP_STRING([--enable-openjdk-only],
+ [suppress building custom source even if present @<:@disabled@:>@])],,[enable_openjdk_only="no"])
+
+ AC_MSG_CHECKING([if custom source is suppressed (openjdk-only)])
+ AC_MSG_RESULT([$enable_openjdk_only])
+ if test "x$enable_openjdk_only" = "xyes"; then
+ SUPPRESS_CUSTOM_EXTENSIONS="true"
+ elif test "x$enable_openjdk_only" = "xno"; then
+ SUPPRESS_CUSTOM_EXTENSIONS="false"
+ else
+ AC_MSG_ERROR([Invalid value for --enable-openjdk-only: $enable_openjdk_only])
+ fi
+
+ # custom-make-dir is deprecated. Please use your custom-hook.m4 to override
+ # the IncludeCustomExtension macro.
+ BASIC_DEPRECATED_ARG_WITH(custom-make-dir)
+])
+
+AC_DEFUN_ONCE([JDKOPT_SETUP_JDK_OPTIONS],
+[
+ # Should we build a JDK without a graphical UI?
+ AC_MSG_CHECKING([headless only])
+ AC_ARG_ENABLE([headless-only], [AS_HELP_STRING([--enable-headless-only],
+ [only build headless (no GUI) support @<:@disabled@:>@])])
+
+ if test "x$enable_headless_only" = "xyes"; then
+ ENABLE_HEADLESS_ONLY="true"
+ AC_MSG_RESULT([yes])
+ elif test "x$enable_headless_only" = "xno"; then
+ ENABLE_HEADLESS_ONLY="false"
+ AC_MSG_RESULT([no])
+ elif test "x$enable_headless_only" = "x"; then
+ ENABLE_HEADLESS_ONLY="false"
+ AC_MSG_RESULT([no])
+ else
+ AC_MSG_ERROR([--enable-headless-only can only take yes or no])
+ fi
+
+ AC_SUBST(ENABLE_HEADLESS_ONLY)
+
+ # Should we build the complete docs, or just a lightweight version?
+ AC_ARG_ENABLE([full-docs], [AS_HELP_STRING([--enable-full-docs],
+ [build complete documentation @<:@enabled if all tools found@:>@])])
+
+ # Verify dependencies
+ AC_MSG_CHECKING([for graphviz dot])
+ if test "x$DOT" != "x"; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no, cannot generate full docs])
+ FULL_DOCS_DEP_MISSING=true
+ fi
+
+ AC_MSG_CHECKING([for pandoc])
+ if test "x$PANDOC" != "x"; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no, cannot generate full docs])
+ FULL_DOCS_DEP_MISSING=true
+ fi
+
+ AC_MSG_CHECKING([full docs])
+ if test "x$enable_full_docs" = xyes; then
+ if test "x$FULL_DOCS_DEP_MISSING" = "xtrue"; then
+ AC_MSG_RESULT([no, missing dependencies])
+ HELP_MSG_MISSING_DEPENDENCY([dot])
+ AC_MSG_ERROR([Cannot enable full docs with missing dependencies. See above. $HELP_MSG])
+ else
+ ENABLE_FULL_DOCS=true
+ AC_MSG_RESULT([yes, forced])
+ fi
+ elif test "x$enable_full_docs" = xno; then
+ ENABLE_FULL_DOCS=false
+ AC_MSG_RESULT([no, forced])
+ elif test "x$enable_full_docs" = x; then
+ # Check for prerequisites
+ if test "x$FULL_DOCS_DEP_MISSING" = xtrue; then
+ ENABLE_FULL_DOCS=false
+ AC_MSG_RESULT([no, missing dependencies])
+ else
+ ENABLE_FULL_DOCS=true
+ AC_MSG_RESULT([yes, dependencies present])
+ fi
+ else
+ AC_MSG_ERROR([--enable-full-docs can only take yes or no])
+ fi
+
+ AC_SUBST(ENABLE_FULL_DOCS)
+
+ # Choose cacerts source file
+ AC_ARG_WITH(cacerts-file, [AS_HELP_STRING([--with-cacerts-file],
+ [specify alternative cacerts file])])
+ if test "x$with_cacerts_file" != x; then
+ CACERTS_FILE=$with_cacerts_file
+ fi
+ AC_SUBST(CACERTS_FILE)
+
+ # Enable or disable unlimited crypto
+ AC_ARG_ENABLE(unlimited-crypto, [AS_HELP_STRING([--disable-unlimited-crypto],
+ [Disable unlimited crypto policy @<:@enabled@:>@])],,
+ [enable_unlimited_crypto=yes])
+ if test "x$enable_unlimited_crypto" = "xyes"; then
+ UNLIMITED_CRYPTO=true
+ else
+ UNLIMITED_CRYPTO=false
+ fi
+ AC_SUBST(UNLIMITED_CRYPTO)
+
+ # Should we build the serviceability agent (SA)?
+ INCLUDE_SA=true
+ if HOTSPOT_CHECK_JVM_VARIANT(zero) || HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
+ INCLUDE_SA=false
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xaix ; then
+ INCLUDE_SA=false
+ fi
+ AC_SUBST(INCLUDE_SA)
+
+ # Compress jars
+ COMPRESS_JARS=false
+
+ AC_SUBST(COMPRESS_JARS)
+
+ # Setup default copyright year. Mostly overridden when building close to a new year.
+ AC_ARG_WITH(copyright-year, [AS_HELP_STRING([--with-copyright-year],
+ [Set copyright year value for build @<:@current year@:>@])])
+ if test "x$with_copyright_year" = xyes; then
+ AC_MSG_ERROR([Copyright year must have a value])
+ elif test "x$with_copyright_year" != x; then
+ COPYRIGHT_YEAR="$with_copyright_year"
+ else
+ COPYRIGHT_YEAR=`$DATE +'%Y'`
+ fi
+ AC_SUBST(COPYRIGHT_YEAR)
+])
+
+###############################################################################
+#
+# Enable or disable the elliptic curve crypto implementation
+#
+AC_DEFUN_ONCE([JDKOPT_DETECT_INTREE_EC],
+[
+ AC_MSG_CHECKING([if elliptic curve crypto implementation is present])
+
+ if test -d "${SRC_ROOT}/jdk/src/jdk.crypto.ec/share/native/libsunec/impl"; then
+ ENABLE_INTREE_EC=true
+ AC_MSG_RESULT([yes])
+ else
+ ENABLE_INTREE_EC=false
+ AC_MSG_RESULT([no])
+ fi
+
+ AC_SUBST(ENABLE_INTREE_EC)
+])
+
+AC_DEFUN_ONCE([JDKOPT_SETUP_DEBUG_SYMBOLS],
+[
+ #
+ # NATIVE_DEBUG_SYMBOLS
+ # This must be done after the toolchain is setup, since we're looking at objcopy.
+ #
+ AC_MSG_CHECKING([what type of native debug symbols to use])
+ AC_ARG_WITH([native-debug-symbols],
+ [AS_HELP_STRING([--with-native-debug-symbols],
+ [set the native debug symbol configuration (none, internal, external, zipped) @<:@varying@:>@])],
+ [
+ if test "x$OPENJDK_TARGET_OS" = xaix; then
+ if test "x$withval" = xexternal || test "x$withval" = xzipped; then
+ AC_MSG_ERROR([AIX only supports the parameters 'none' and 'internal' for --with-native-debug-symbols])
+ fi
+ fi
+ ],
+ [
+ if test "x$OPENJDK_TARGET_OS" = xaix; then
+ # AIX doesn't support 'zipped' so use 'internal' as default
+ with_native_debug_symbols="internal"
+ else
+ if test "x$STATIC_BUILD" = xtrue; then
+ with_native_debug_symbols="none"
+ else
+ with_native_debug_symbols="zipped"
+ fi
+ fi
+ ])
+ NATIVE_DEBUG_SYMBOLS=$with_native_debug_symbols
+ AC_MSG_RESULT([$NATIVE_DEBUG_SYMBOLS])
+
+ if test "x$NATIVE_DEBUG_SYMBOLS" = xzipped; then
+
+ if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
+ if test "x$OBJCOPY" = x; then
+ # enabling of enable-debug-symbols and can't find objcopy
+ # this is an error
+ AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols])
+ fi
+ fi
+
+ COMPILE_WITH_DEBUG_SYMBOLS=true
+ COPY_DEBUG_SYMBOLS=true
+ ZIP_EXTERNAL_DEBUG_SYMBOLS=true
+ elif test "x$NATIVE_DEBUG_SYMBOLS" = xnone; then
+ COMPILE_WITH_DEBUG_SYMBOLS=false
+ COPY_DEBUG_SYMBOLS=false
+ ZIP_EXTERNAL_DEBUG_SYMBOLS=false
+ elif test "x$NATIVE_DEBUG_SYMBOLS" = xinternal; then
+ COMPILE_WITH_DEBUG_SYMBOLS=true
+ COPY_DEBUG_SYMBOLS=false
+ ZIP_EXTERNAL_DEBUG_SYMBOLS=false
+ elif test "x$NATIVE_DEBUG_SYMBOLS" = xexternal; then
+
+ if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
+ if test "x$OBJCOPY" = x; then
+ # enabling of enable-debug-symbols and can't find objcopy
+ # this is an error
+ AC_MSG_ERROR([Unable to find objcopy, cannot enable native debug symbols])
+ fi
+ fi
+
+ COMPILE_WITH_DEBUG_SYMBOLS=true
+ COPY_DEBUG_SYMBOLS=true
+ ZIP_EXTERNAL_DEBUG_SYMBOLS=false
+ else
+ AC_MSG_ERROR([Allowed native debug symbols are: none, internal, external, zipped])
+ fi
+
+ # --enable-debug-symbols is deprecated.
+ # Please use --with-native-debug-symbols=[internal,external,zipped] .
+ BASIC_DEPRECATED_ARG_ENABLE(debug-symbols, debug_symbols,
+ [Please use --with-native-debug-symbols=[[internal,external,zipped]] .])
+
+ # --enable-zip-debug-info is deprecated.
+ # Please use --with-native-debug-symbols=zipped .
+ BASIC_DEPRECATED_ARG_ENABLE(zip-debug-info, zip_debug_info,
+ [Please use --with-native-debug-symbols=zipped .])
+
+ AC_SUBST(COMPILE_WITH_DEBUG_SYMBOLS)
+ AC_SUBST(COPY_DEBUG_SYMBOLS)
+ AC_SUBST(ZIP_EXTERNAL_DEBUG_SYMBOLS)
+])
+
+################################################################################
+#
+# Gcov coverage data for hotspot
+#
+AC_DEFUN_ONCE([JDKOPT_SETUP_CODE_COVERAGE],
+[
+ AC_ARG_ENABLE(native-coverage, [AS_HELP_STRING([--enable-native-coverage],
+ [enable native compilation with code coverage data@<:@disabled@:>@])])
+ GCOV_ENABLED="false"
+ if test "x$enable_native_coverage" = "xyes"; then
+ if test "x$TOOLCHAIN_TYPE" = "xgcc"; then
+ AC_MSG_CHECKING([if native coverage is enabled])
+ AC_MSG_RESULT([yes])
+ GCOV_CFLAGS="-fprofile-arcs -ftest-coverage -fno-inline"
+ GCOV_LDFLAGS="-fprofile-arcs"
+ JVM_CFLAGS="$JVM_CFLAGS $GCOV_CFLAGS"
+ JVM_LDFLAGS="$JVM_LDFLAGS $GCOV_LDFLAGS"
+ CFLAGS_JDKLIB="$CFLAGS_JDKLIB $GCOV_CFLAGS"
+ CFLAGS_JDKEXE="$CFLAGS_JDKEXE $GCOV_CFLAGS"
+ CXXFLAGS_JDKLIB="$CXXFLAGS_JDKLIB $GCOV_CFLAGS"
+ CXXFLAGS_JDKEXE="$CXXFLAGS_JDKEXE $GCOV_CFLAGS"
+ LDFLAGS_JDKLIB="$LDFLAGS_JDKLIB $GCOV_LDFLAGS"
+ LDFLAGS_JDKEXE="$LDFLAGS_JDKEXE $GCOV_LDFLAGS"
+ GCOV_ENABLED="true"
+ else
+ AC_MSG_ERROR([--enable-native-coverage only works with toolchain type gcc])
+ fi
+ elif test "x$enable_native_coverage" = "xno"; then
+ AC_MSG_CHECKING([if native coverage is enabled])
+ AC_MSG_RESULT([no])
+ elif test "x$enable_native_coverage" != "x"; then
+ AC_MSG_ERROR([--enable-native-coverage can only be assigned "yes" or "no"])
+ fi
+
+ AC_SUBST(GCOV_ENABLED)
+])
+
+################################################################################
+#
+# Static build support. When enabled will generate static
+# libraries instead of shared libraries for all JDK libs.
+#
+AC_DEFUN_ONCE([JDKOPT_SETUP_STATIC_BUILD],
+[
+ AC_ARG_ENABLE([static-build], [AS_HELP_STRING([--enable-static-build],
+ [enable static library build @<:@disabled@:>@])])
+ STATIC_BUILD=false
+ if test "x$enable_static_build" = "xyes"; then
+ AC_MSG_CHECKING([if static build is enabled])
+ AC_MSG_RESULT([yes])
+ if test "x$OPENJDK_TARGET_OS" != "xmacosx"; then
+ AC_MSG_ERROR([--enable-static-build is only supported for macosx builds])
+ fi
+ STATIC_BUILD_CFLAGS="-DSTATIC_BUILD=1"
+ CFLAGS_JDKLIB_EXTRA="$CFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS"
+ CXXFLAGS_JDKLIB_EXTRA="$CXXFLAGS_JDKLIB_EXTRA $STATIC_BUILD_CFLAGS"
+ STATIC_BUILD=true
+ elif test "x$enable_static_build" = "xno"; then
+ AC_MSG_CHECKING([if static build is enabled])
+ AC_MSG_RESULT([no])
+ elif test "x$enable_static_build" != "x"; then
+ AC_MSG_ERROR([--enable-static-build can only be assigned "yes" or "no"])
+ fi
+
+ AC_SUBST(STATIC_BUILD)
+])
+
+################################################################################
+#
+# jlink options.
+# We always keep packaged modules in JDK image.
+#
+AC_DEFUN_ONCE([JDKOPT_SETUP_JLINK_OPTIONS],
+[
+ AC_ARG_ENABLE([keep-packaged-modules], [AS_HELP_STRING([--disable-keep-packaged-modules],
+ [Do not keep packaged modules in jdk image @<:@enable@:>@])])
+
+ AC_MSG_CHECKING([if packaged modules are kept])
+ if test "x$enable_keep_packaged_modules" = "xyes"; then
+ AC_MSG_RESULT([yes])
+ JLINK_KEEP_PACKAGED_MODULES=true
+ elif test "x$enable_keep_packaged_modules" = "xno"; then
+ AC_MSG_RESULT([no])
+ JLINK_KEEP_PACKAGED_MODULES=false
+ elif test "x$enable_keep_packaged_modules" = "x"; then
+ AC_MSG_RESULT([yes (default)])
+ JLINK_KEEP_PACKAGED_MODULES=true
+ else
+ AC_MSG_RESULT([error])
+ AC_MSG_ERROR([--enable-keep-packaged-modules accepts no argument])
+ fi
+
+ AC_SUBST(JLINK_KEEP_PACKAGED_MODULES)
+])
+
+################################################################################
+#
+# Check if building of the jtreg failure handler should be enabled.
+#
+AC_DEFUN_ONCE([JDKOPT_ENABLE_DISABLE_FAILURE_HANDLER],
+[
+ AC_ARG_ENABLE([jtreg-failure-handler], [AS_HELP_STRING([--enable-jtreg-failure-handler],
+ [forces build of the jtreg failure handler to be enabled, missing dependencies
+ become fatal errors. Default is auto, where the failure handler is built if all
+ dependencies are present and otherwise just disabled.])])
+
+ AC_MSG_CHECKING([if jtreg failure handler should be built])
+
+ if test "x$enable_jtreg_failure_handler" = "xyes"; then
+ if test "x$JT_HOME" = "x"; then
+ AC_MSG_ERROR([Cannot enable jtreg failure handler without jtreg.])
+ else
+ BUILD_FAILURE_HANDLER=true
+ AC_MSG_RESULT([yes, forced])
+ fi
+ elif test "x$enable_jtreg_failure_handler" = "xno"; then
+ BUILD_FAILURE_HANDLER=false
+ AC_MSG_RESULT([no, forced])
+ elif test "x$enable_jtreg_failure_handler" = "xauto" \
+ || test "x$enable_jtreg_failure_handler" = "x"; then
+ if test "x$JT_HOME" = "x"; then
+ BUILD_FAILURE_HANDLER=false
+ AC_MSG_RESULT([no, missing jtreg])
+ else
+ BUILD_FAILURE_HANDLER=true
+ AC_MSG_RESULT([yes, jtreg present])
+ fi
+ else
+ AC_MSG_ERROR([Invalid value for --enable-jtreg-failure-handler: $enable_jtreg_failure_handler])
+ fi
+
+ AC_SUBST(BUILD_FAILURE_HANDLER)
+])
+
+################################################################################
+#
+# Enable or disable generation of the classlist at build time
+#
+AC_DEFUN_ONCE([JDKOPT_ENABLE_DISABLE_GENERATE_CLASSLIST],
+[
+ AC_ARG_ENABLE([generate-classlist], [AS_HELP_STRING([--disable-generate-classlist],
+ [forces enabling or disabling of the generation of a CDS classlist at build time.
+ Default is to generate it when either the server or client JVMs are built.])])
+
+ # Check if it's likely that it's possible to generate the classlist. Depending
+ # on exact jvm configuration it could be possible anyway.
+ if HOTSPOT_CHECK_JVM_VARIANT(server) || HOTSPOT_CHECK_JVM_VARIANT(client); then
+ ENABLE_GENERATE_CLASSLIST_POSSIBLE="true"
+ else
+ ENABLE_GENERATE_CLASSLIST_POSSIBLE="false"
+ fi
+
+ AC_MSG_CHECKING([if the CDS classlist generation should be enabled])
+ if test "x$enable_generate_classlist" = "xyes"; then
+ AC_MSG_RESULT([yes, forced])
+ ENABLE_GENERATE_CLASSLIST="true"
+ if test "x$ENABLE_GENERATE_CLASSLIST_POSSIBLE" = "xfalse"; then
+ AC_MSG_WARN([Generation of classlist might not be possible with JVM Variants $JVM_VARIANTS])
+ fi
+ elif test "x$enable_generate_classlist" = "xno"; then
+ AC_MSG_RESULT([no, forced])
+ ENABLE_GENERATE_CLASSLIST="false"
+ elif test "x$enable_generate_classlist" = "x"; then
+ if test "x$ENABLE_GENERATE_CLASSLIST_POSSIBLE" = "xtrue"; then
+ AC_MSG_RESULT([yes])
+ ENABLE_GENERATE_CLASSLIST="true"
+ else
+ AC_MSG_RESULT([no])
+ ENABLE_GENERATE_CLASSLIST="false"
+ fi
+ else
+ AC_MSG_ERROR([Invalid value for --enable-generate-classlist: $enable_generate_classlist])
+ fi
+
+ AC_SUBST(ENABLE_GENERATE_CLASSLIST)
+])
diff --git a/common/autoconf/jdk-version.m4 b/common/autoconf/jdk-version.m4
new file mode 100644
index 0000000..5321e56
--- /dev/null
+++ b/common/autoconf/jdk-version.m4
@@ -0,0 +1,320 @@
+#
+# Copyright (c) 2015, 2016, 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.
+#
+
+###############################################################################
+#
+# Setup version numbers
+#
+
+# Verify that a given string represents a valid version number, and assign it
+# to a variable.
+
+# Argument 1: the variable to assign to
+# Argument 2: the value given by the user
+AC_DEFUN([JDKVER_CHECK_AND_SET_NUMBER],
+[
+ # Additional [] needed to keep m4 from mangling shell constructs.
+ if [ ! [[ "$2" =~ ^0*([1-9][0-9]*)|(0)$ ]] ] ; then
+ AC_MSG_ERROR(["$2" is not a valid numerical value for $1])
+ fi
+ # Extract the version number without leading zeros.
+ cleaned_value=${BASH_REMATCH[[1]]}
+ if test "x$cleaned_value" = x; then
+ # Special case for zero
+ cleaned_value=${BASH_REMATCH[[2]]}
+ fi
+
+ if test $cleaned_value -gt 255; then
+ AC_MSG_ERROR([$1 is given as $2. This is greater than 255 which is not allowed.])
+ fi
+ if test "x$cleaned_value" != "x$2"; then
+ AC_MSG_WARN([Value for $1 has been sanitized from '$2' to '$cleaned_value'])
+ fi
+ $1=$cleaned_value
+])
+
+AC_DEFUN_ONCE([JDKVER_SETUP_JDK_VERSION_NUMBERS],
+[
+ # Warn user that old version arguments are deprecated.
+ BASIC_DEPRECATED_ARG_WITH([milestone])
+ BASIC_DEPRECATED_ARG_WITH([update-version])
+ BASIC_DEPRECATED_ARG_WITH([user-release-suffix])
+ BASIC_DEPRECATED_ARG_WITH([build-number])
+
+ # Source the version numbers file
+ . $AUTOCONF_DIR/version-numbers
+
+ # Some non-version number information is set in that file
+ AC_SUBST(LAUNCHER_NAME)
+ AC_SUBST(PRODUCT_NAME)
+ AC_SUBST(PRODUCT_SUFFIX)
+ AC_SUBST(JDK_RC_PLATFORM_NAME)
+ AC_SUBST(COMPANY_NAME)
+ AC_SUBST(HOTSPOT_VM_DISTRO)
+ AC_SUBST(MACOSX_BUNDLE_NAME_BASE)
+ AC_SUBST(MACOSX_BUNDLE_ID_BASE)
+
+ # Override version from arguments
+
+ # If --with-version-string is set, process it first. It is possible to
+ # override parts with more specific flags, since these are processed later.
+ AC_ARG_WITH(version-string, [AS_HELP_STRING([--with-version-string],
+ [Set version string @<:@calculated@:>@])])
+ if test "x$with_version_string" = xyes; then
+ AC_MSG_ERROR([--with-version-string must have a value])
+ elif test "x$with_version_string" != x; then
+ # Additional [] needed to keep m4 from mangling shell constructs.
+ if [ [[ $with_version_string =~ ^([0-9]+)(\.([0-9]+))?(\.([0-9]+))?(\.([0-9]+))?(-([a-zA-Z]+))?((\+)([0-9]+)?(-([-a-zA-Z0-9.]+))?)?$ ]] ]; then
+ VERSION_MAJOR=${BASH_REMATCH[[1]]}
+ VERSION_MINOR=${BASH_REMATCH[[3]]}
+ VERSION_SECURITY=${BASH_REMATCH[[5]]}
+ VERSION_PATCH=${BASH_REMATCH[[7]]}
+ VERSION_PRE=${BASH_REMATCH[[9]]}
+ version_plus_separator=${BASH_REMATCH[[11]]}
+ VERSION_BUILD=${BASH_REMATCH[[12]]}
+ VERSION_OPT=${BASH_REMATCH[[14]]}
+ # Unspecified numerical fields are interpreted as 0.
+ if test "x$VERSION_MINOR" = x; then
+ VERSION_MINOR=0
+ fi
+ if test "x$VERSION_SECURITY" = x; then
+ VERSION_SECURITY=0
+ fi
+ if test "x$VERSION_PATCH" = x; then
+ VERSION_PATCH=0
+ fi
+ if test "x$version_plus_separator" != x \
+ && test "x$VERSION_BUILD$VERSION_OPT" = x; then
+ AC_MSG_ERROR([Version string contains + but both 'BUILD' and 'OPT' are missing])
+ fi
+ # Stop the version part process from setting default values.
+ # We still allow them to explicitly override though.
+ NO_DEFAULT_VERSION_PARTS=true
+ else
+ AC_MSG_ERROR([--with-version-string fails to parse as a valid version string: $with_version_string])
+ fi
+ fi
+
+ AC_ARG_WITH(version-pre, [AS_HELP_STRING([--with-version-pre],
+ [Set the base part of the version 'PRE' field (pre-release identifier) @<:@'internal'@:>@])],
+ [with_version_pre_present=true], [with_version_pre_present=false])
+
+ if test "x$with_version_pre_present" = xtrue; then
+ if test "x$with_version_pre" = xyes; then
+ AC_MSG_ERROR([--with-version-pre must have a value])
+ elif test "x$with_version_pre" = xno; then
+ # Interpret --without-* as empty string instead of the literal "no"
+ VERSION_PRE=
+ else
+ # Only [a-zA-Z] is allowed in the VERSION_PRE. Outer [ ] to quote m4.
+ [ VERSION_PRE=`$ECHO "$with_version_pre" | $TR -c -d '[a-z][A-Z]'` ]
+ if test "x$VERSION_PRE" != "x$with_version_pre"; then
+ AC_MSG_WARN([--with-version-pre value has been sanitized from '$with_version_pre' to '$VERSION_PRE'])
+ fi
+ fi
+ else
+ if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+ # Default is to use "internal" as pre
+ VERSION_PRE="internal"
+ fi
+ fi
+
+ AC_ARG_WITH(version-opt, [AS_HELP_STRING([--with-version-opt],
+ [Set version 'OPT' field (build metadata) @<:@<timestamp>.<user>.<dirname>@:>@])],
+ [with_version_opt_present=true], [with_version_opt_present=false])
+
+ if test "x$with_version_opt_present" = xtrue; then
+ if test "x$with_version_opt" = xyes; then
+ AC_MSG_ERROR([--with-version-opt must have a value])
+ elif test "x$with_version_opt" = xno; then
+ # Interpret --without-* as empty string instead of the literal "no"
+ VERSION_OPT=
+ else
+ # Only [-.a-zA-Z0-9] is allowed in the VERSION_OPT. Outer [ ] to quote m4.
+ [ VERSION_OPT=`$ECHO "$with_version_opt" | $TR -c -d '[a-z][A-Z][0-9].-'` ]
+ if test "x$VERSION_OPT" != "x$with_version_opt"; then
+ AC_MSG_WARN([--with-version-opt value has been sanitized from '$with_version_opt' to '$VERSION_OPT'])
+ fi
+ fi
+ else
+ if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+ # Default is to calculate a string like this 'adhoc.<username>.<base dir name>'
+ # Outer [ ] to quote m4.
+ [ basedirname=`$BASENAME "$TOPDIR" | $TR -d -c '[a-z][A-Z][0-9].-'` ]
+ VERSION_OPT="adhoc.$USERNAME.$basedirname"
+ fi
+ fi
+
+ AC_ARG_WITH(version-build, [AS_HELP_STRING([--with-version-build],
+ [Set version 'BUILD' field (build number) @<:@not specified@:>@])],
+ [with_version_build_present=true], [with_version_build_present=false])
+
+ if test "x$with_version_build_present" = xtrue; then
+ if test "x$with_version_build" = xyes; then
+ AC_MSG_ERROR([--with-version-build must have a value])
+ elif test "x$with_version_build" = xno; then
+ # Interpret --without-* as empty string instead of the literal "no"
+ VERSION_BUILD=
+ elif test "x$with_version_build" = x; then
+ VERSION_BUILD=
+ else
+ JDKVER_CHECK_AND_SET_NUMBER(VERSION_BUILD, $with_version_build)
+ fi
+ else
+ if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+ # Default is to not have a build number.
+ VERSION_BUILD=""
+ # FIXME: Until all code can cope with an empty VERSION_BUILD, set it to 0.
+ VERSION_BUILD=0
+ fi
+ fi
+
+ AC_ARG_WITH(version-major, [AS_HELP_STRING([--with-version-major],
+ [Set version 'MAJOR' field (first number) @<:@current source value@:>@])],
+ [with_version_major_present=true], [with_version_major_present=false])
+
+ if test "x$with_version_major_present" = xtrue; then
+ if test "x$with_version_major" = xyes; then
+ AC_MSG_ERROR([--with-version-major must have a value])
+ else
+ JDKVER_CHECK_AND_SET_NUMBER(VERSION_MAJOR, $with_version_major)
+ fi
+ else
+ if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+ # Default is to get value from version-numbers
+ VERSION_MAJOR="$DEFAULT_VERSION_MAJOR"
+ fi
+ fi
+
+ AC_ARG_WITH(version-minor, [AS_HELP_STRING([--with-version-minor],
+ [Set version 'MINOR' field (second number) @<:@current source value@:>@])],
+ [with_version_minor_present=true], [with_version_minor_present=false])
+
+ if test "x$with_version_minor_present" = xtrue; then
+ if test "x$with_version_minor" = xyes; then
+ AC_MSG_ERROR([--with-version-minor must have a value])
+ elif test "x$with_version_minor" = xno; then
+ # Interpret --without-* as empty string (i.e. 0) instead of the literal "no"
+ VERSION_MINOR=0
+ elif test "x$with_version_minor" = x; then
+ VERSION_MINOR=0
+ else
+ JDKVER_CHECK_AND_SET_NUMBER(VERSION_MINOR, $with_version_minor)
+ fi
+ else
+ if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+ # Default is 0, if unspecified
+ VERSION_MINOR=$DEFAULT_VERSION_MINOR
+ fi
+ fi
+
+ AC_ARG_WITH(version-security, [AS_HELP_STRING([--with-version-security],
+ [Set version 'SECURITY' field (third number) @<:@current source value@:>@])],
+ [with_version_security_present=true], [with_version_security_present=false])
+
+ if test "x$with_version_security_present" = xtrue; then
+ if test "x$with_version_security" = xyes; then
+ AC_MSG_ERROR([--with-version-security must have a value])
+ elif test "x$with_version_security" = xno; then
+ # Interpret --without-* as empty string (i.e. 0) instead of the literal "no"
+ VERSION_SECURITY=0
+ elif test "x$with_version_security" = x; then
+ VERSION_SECURITY=0
+ else
+ JDKVER_CHECK_AND_SET_NUMBER(VERSION_SECURITY, $with_version_security)
+ fi
+ else
+ if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+ # Default is 0, if unspecified
+ VERSION_SECURITY=$DEFAULT_VERSION_SECURITY
+ fi
+ fi
+
+ AC_ARG_WITH(version-patch, [AS_HELP_STRING([--with-version-patch],
+ [Set version 'PATCH' field (fourth number) @<:@not specified@:>@])],
+ [with_version_patch_present=true], [with_version_patch_present=false])
+
+ if test "x$with_version_patch_present" = xtrue; then
+ if test "x$with_version_patch" = xyes; then
+ AC_MSG_ERROR([--with-version-patch must have a value])
+ elif test "x$with_version_patch" = xno; then
+ # Interpret --without-* as empty string (i.e. 0) instead of the literal "no"
+ VERSION_PATCH=0
+ elif test "x$with_version_patch" = x; then
+ VERSION_PATCH=0
+ else
+ JDKVER_CHECK_AND_SET_NUMBER(VERSION_PATCH, $with_version_patch)
+ fi
+ else
+ if test "x$NO_DEFAULT_VERSION_PARTS" != xtrue; then
+ # Default is 0, if unspecified
+ VERSION_PATCH=$DEFAULT_VERSION_PATCH
+ fi
+ fi
+
+ # Calculate derived version properties
+
+ # Set VERSION_IS_GA based on if VERSION_PRE has a value
+ if test "x$VERSION_PRE" = x; then
+ VERSION_IS_GA=true
+ else
+ VERSION_IS_GA=false
+ fi
+
+ # VERSION_NUMBER but always with exactly 4 positions, with 0 for empty positions.
+ VERSION_NUMBER_FOUR_POSITIONS=$VERSION_MAJOR.$VERSION_MINOR.$VERSION_SECURITY.$VERSION_PATCH
+
+ stripped_version_number=$VERSION_NUMBER_FOUR_POSITIONS
+ # Strip trailing zeroes from stripped_version_number
+ for i in 1 2 3 ; do stripped_version_number=${stripped_version_number%.0} ; done
+ VERSION_NUMBER=$stripped_version_number
+
+ # The complete version string, with additional build information
+ if test "x$VERSION_BUILD$VERSION_OPT" = x; then
+ VERSION_STRING=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}
+ else
+ # If either build or opt is set, we need a + separator
+ VERSION_STRING=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}+$VERSION_BUILD${VERSION_OPT:+-$VERSION_OPT}
+ fi
+
+ # The short version string, just VERSION_NUMBER and PRE, if present.
+ VERSION_SHORT=$VERSION_NUMBER${VERSION_PRE:+-$VERSION_PRE}
+
+ AC_MSG_CHECKING([for version string])
+ AC_MSG_RESULT([$VERSION_STRING])
+
+ AC_SUBST(VERSION_MAJOR)
+ AC_SUBST(VERSION_MINOR)
+ AC_SUBST(VERSION_SECURITY)
+ AC_SUBST(VERSION_PATCH)
+ AC_SUBST(VERSION_PRE)
+ AC_SUBST(VERSION_BUILD)
+ AC_SUBST(VERSION_OPT)
+ AC_SUBST(VERSION_NUMBER)
+ AC_SUBST(VERSION_NUMBER_FOUR_POSITIONS)
+ AC_SUBST(VERSION_STRING)
+ AC_SUBST(VERSION_SHORT)
+ AC_SUBST(VERSION_IS_GA)
+])
diff --git a/common/autoconf/lib-alsa.m4 b/common/autoconf/lib-alsa.m4
new file mode 100644
index 0000000..19a91f9
--- /dev/null
+++ b/common/autoconf/lib-alsa.m4
@@ -0,0 +1,92 @@
+#
+# Copyright (c) 2011, 2015, 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.
+#
+
+################################################################################
+# Setup alsa (Advanced Linux Sound Architecture)
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_ALSA],
+[
+ AC_ARG_WITH(alsa, [AS_HELP_STRING([--with-alsa],
+ [specify prefix directory for the alsa package
+ (expecting the libraries under PATH/lib and the headers under PATH/include)])])
+ AC_ARG_WITH(alsa-include, [AS_HELP_STRING([--with-alsa-include],
+ [specify directory for the alsa include files])])
+ AC_ARG_WITH(alsa-lib, [AS_HELP_STRING([--with-alsa-lib],
+ [specify directory for the alsa library])])
+
+ if test "x$NEEDS_LIB_ALSA" = xfalse; then
+ if (test "x${with_alsa}" != x && test "x${with_alsa}" != xno) || \
+ (test "x${with_alsa_include}" != x && test "x${with_alsa_include}" != xno) || \
+ (test "x${with_alsa_lib}" != x && test "x${with_alsa_lib}" != xno); then
+ AC_MSG_WARN([[alsa not used, so --with-alsa[-*] is ignored]])
+ fi
+ ALSA_CFLAGS=
+ ALSA_LIBS=
+ else
+ ALSA_FOUND=no
+
+ if test "x${with_alsa}" = xno || test "x${with_alsa_include}" = xno || test "x${with_alsa_lib}" = xno; then
+ AC_MSG_ERROR([It is not possible to disable the use of alsa. Remove the --without-alsa option.])
+ fi
+
+ if test "x${with_alsa}" != x; then
+ ALSA_LIBS="-L${with_alsa}/lib -lasound"
+ ALSA_CFLAGS="-I${with_alsa}/include"
+ ALSA_FOUND=yes
+ fi
+ if test "x${with_alsa_include}" != x; then
+ ALSA_CFLAGS="-I${with_alsa_include}"
+ ALSA_FOUND=yes
+ fi
+ if test "x${with_alsa_lib}" != x; then
+ ALSA_LIBS="-L${with_alsa_lib} -lasound"
+ ALSA_FOUND=yes
+ fi
+ # Do not try pkg-config if we have a sysroot set.
+ if test "x$SYSROOT" = x; then
+ if test "x$ALSA_FOUND" = xno; then
+ PKG_CHECK_MODULES(ALSA, alsa, [ALSA_FOUND=yes], [ALSA_FOUND=no])
+ fi
+ fi
+ if test "x$ALSA_FOUND" = xno; then
+ AC_CHECK_HEADERS([alsa/asoundlib.h],
+ [
+ ALSA_FOUND=yes
+ ALSA_CFLAGS=-Iignoreme
+ ALSA_LIBS=-lasound
+ DEFAULT_ALSA=yes
+ ],
+ [ALSA_FOUND=no]
+ )
+ fi
+ if test "x$ALSA_FOUND" = xno; then
+ HELP_MSG_MISSING_DEPENDENCY([alsa])
+ AC_MSG_ERROR([Could not find alsa! $HELP_MSG])
+ fi
+ fi
+
+ AC_SUBST(ALSA_CFLAGS)
+ AC_SUBST(ALSA_LIBS)
+])
diff --git a/common/autoconf/lib-bundled.m4 b/common/autoconf/lib-bundled.m4
new file mode 100644
index 0000000..92b9438
--- /dev/null
+++ b/common/autoconf/lib-bundled.m4
@@ -0,0 +1,234 @@
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+################################################################################
+# Setup bundled libraries.
+#
+# For libjpeg, giflib, libpng, lcms2 and zlib, the source is present in the
+# OpenJDK repository. Default is to use these libraries as bundled, but they
+# might be replaced by en external version by the user.
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_BUNDLED_LIBS],
+[
+ LIB_SETUP_LIBJPEG
+ LIB_SETUP_GIFLIB
+ LIB_SETUP_LIBPNG
+ LIB_SETUP_ZLIB
+ LIB_SETUP_LCMS
+])
+
+################################################################################
+# Setup libjpeg
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_LIBJPEG],
+[
+ AC_ARG_WITH(libjpeg, [AS_HELP_STRING([--with-libjpeg],
+ [use libjpeg from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])])
+
+ AC_MSG_CHECKING([for which libjpeg to use])
+ # default is bundled
+ DEFAULT_LIBJPEG=bundled
+ # if user didn't specify, use DEFAULT_LIBJPEG
+ if test "x${with_libjpeg}" = "x"; then
+ with_libjpeg=${DEFAULT_LIBJPEG}
+ fi
+ AC_MSG_RESULT(${with_libjpeg})
+
+ if test "x${with_libjpeg}" = "xbundled"; then
+ USE_EXTERNAL_LIBJPEG=false
+ elif test "x${with_libjpeg}" = "xsystem"; then
+ AC_CHECK_HEADER(jpeglib.h, [],
+ [ AC_MSG_ERROR([--with-libjpeg=system specified, but jpeglib.h not found!])])
+ AC_CHECK_LIB(jpeg, jpeg_CreateDecompress, [],
+ [ AC_MSG_ERROR([--with-libjpeg=system specified, but no libjpeg found])])
+
+ USE_EXTERNAL_LIBJPEG=true
+ else
+ AC_MSG_ERROR([Invalid use of --with-libjpeg: ${with_libjpeg}, use 'system' or 'bundled'])
+ fi
+
+ AC_SUBST(USE_EXTERNAL_LIBJPEG)
+])
+
+################################################################################
+# Setup giflib
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_GIFLIB],
+[
+ AC_ARG_WITH(giflib, [AS_HELP_STRING([--with-giflib],
+ [use giflib from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])])
+
+ AC_MSG_CHECKING([for which giflib to use])
+ # default is bundled
+ DEFAULT_GIFLIB=bundled
+ # if user didn't specify, use DEFAULT_GIFLIB
+ if test "x${with_giflib}" = "x"; then
+ with_giflib=${DEFAULT_GIFLIB}
+ fi
+ AC_MSG_RESULT(${with_giflib})
+
+ if test "x${with_giflib}" = "xbundled"; then
+ USE_EXTERNAL_LIBGIF=false
+ elif test "x${with_giflib}" = "xsystem"; then
+ AC_CHECK_HEADER(gif_lib.h, [],
+ [ AC_MSG_ERROR([--with-giflib=system specified, but gif_lib.h not found!])])
+ AC_CHECK_LIB(gif, DGifGetCode, [],
+ [ AC_MSG_ERROR([--with-giflib=system specified, but no giflib found!])])
+
+ USE_EXTERNAL_LIBGIF=true
+ else
+ AC_MSG_ERROR([Invalid value of --with-giflib: ${with_giflib}, use 'system' or 'bundled'])
+ fi
+
+ AC_SUBST(USE_EXTERNAL_LIBGIF)
+])
+
+################################################################################
+# Setup libpng
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_LIBPNG],
+[
+ AC_ARG_WITH(libpng, [AS_HELP_STRING([--with-libpng],
+ [use libpng from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])])
+
+ AC_MSG_CHECKING([for which libpng to use])
+
+ # default is bundled
+ DEFAULT_LIBPNG=bundled
+ # if user didn't specify, use DEFAULT_LIBPNG
+ if test "x${with_libpng}" = "x"; then
+ with_libpng=${DEFAULT_LIBPNG}
+ fi
+
+ if test "x${with_libpng}" = "xbundled"; then
+ USE_EXTERNAL_LIBPNG=false
+ PNG_CFLAGS=""
+ PNG_LIBS=""
+ AC_MSG_RESULT([bundled])
+ elif test "x${with_libpng}" = "xsystem"; then
+ PKG_CHECK_MODULES(PNG, libpng, [LIBPNG_FOUND=yes], [LIBPNG_FOUND=no])
+ if test "x${LIBPNG_FOUND}" = "xyes"; then
+ # PKG_CHECK_MODULES will set PNG_CFLAGS and PNG_LIBS
+ USE_EXTERNAL_LIBPNG=true
+ AC_MSG_RESULT([system])
+ else
+ AC_MSG_RESULT([system not found])
+ AC_MSG_ERROR([--with-libpng=system specified, but no libpng found!])
+ fi
+ else
+ AC_MSG_ERROR([Invalid value of --with-libpng: ${with_libpng}, use 'system' or 'bundled'])
+ fi
+
+ AC_SUBST(USE_EXTERNAL_LIBPNG)
+ AC_SUBST(PNG_CFLAGS)
+ AC_SUBST(PNG_LIBS)
+])
+
+################################################################################
+# Setup zlib
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_ZLIB],
+[
+ AC_ARG_WITH(zlib, [AS_HELP_STRING([--with-zlib],
+ [use zlib from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])])
+
+ AC_CHECK_LIB(z, compress,
+ [ ZLIB_FOUND=yes ],
+ [ ZLIB_FOUND=no ])
+
+ AC_MSG_CHECKING([for which zlib to use])
+
+ DEFAULT_ZLIB=system
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On windows default is bundled...on others default is system
+ DEFAULT_ZLIB=bundled
+ fi
+
+ if test "x${ZLIB_FOUND}" != "xyes"; then
+ # If we don't find any system...set default to bundled
+ DEFAULT_ZLIB=bundled
+ fi
+
+ # If user didn't specify, use DEFAULT_ZLIB
+ if test "x${with_zlib}" = "x"; then
+ with_zlib=${DEFAULT_ZLIB}
+ fi
+
+ if test "x${with_zlib}" = "xbundled"; then
+ USE_EXTERNAL_LIBZ=false
+ AC_MSG_RESULT([bundled])
+ elif test "x${with_zlib}" = "xsystem"; then
+ if test "x${ZLIB_FOUND}" = "xyes"; then
+ USE_EXTERNAL_LIBZ=true
+ AC_MSG_RESULT([system])
+ else
+ AC_MSG_RESULT([system not found])
+ AC_MSG_ERROR([--with-zlib=system specified, but no zlib found!])
+ fi
+ else
+ AC_MSG_ERROR([Invalid value for --with-zlib: ${with_zlib}, use 'system' or 'bundled'])
+ fi
+
+ AC_SUBST(USE_EXTERNAL_LIBZ)
+])
+
+################################################################################
+# Setup lcms (Little CMS)
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_LCMS],
+[
+ AC_ARG_WITH(lcms, [AS_HELP_STRING([--with-lcms],
+ [use lcms2 from build system or OpenJDK source (system, bundled) @<:@bundled@:>@])])
+
+ AC_MSG_CHECKING([for which lcms to use])
+
+ DEFAULT_LCMS=bundled
+ # If user didn't specify, use DEFAULT_LCMS
+ if test "x${with_lcms}" = "x"; then
+ with_lcms=${DEFAULT_LCMS}
+ fi
+
+ if test "x${with_lcms}" = "xbundled"; then
+ USE_EXTERNAL_LCMS=false
+ LCMS_CFLAGS=""
+ LCMS_LIBS=""
+ AC_MSG_RESULT([bundled])
+ elif test "x${with_lcms}" = "xsystem"; then
+ AC_MSG_RESULT([system])
+ PKG_CHECK_MODULES([LCMS], [lcms2], [LCMS_FOUND=yes], [LCMS_FOUND=no])
+ if test "x${LCMS_FOUND}" = "xyes"; then
+ # PKG_CHECK_MODULES will set LCMS_CFLAGS and LCMS_LIBS
+ USE_EXTERNAL_LCMS=true
+ else
+ AC_MSG_ERROR([--with-lcms=system specified, but no lcms found!])
+ fi
+ else
+ AC_MSG_ERROR([Invalid value for --with-lcms: ${with_lcms}, use 'system' or 'bundled'])
+ fi
+
+ AC_SUBST(USE_EXTERNAL_LCMS)
+ AC_SUBST(LCMS_CFLAGS)
+ AC_SUBST(LCMS_LIBS)
+])
diff --git a/common/autoconf/lib-cups.m4 b/common/autoconf/lib-cups.m4
new file mode 100644
index 0000000..0a7df8b
--- /dev/null
+++ b/common/autoconf/lib-cups.m4
@@ -0,0 +1,85 @@
+#
+# Copyright (c) 2011, 2016, 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.
+#
+
+################################################################################
+# Setup cups (Common Unix Printing System)
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_CUPS],
+[
+ AC_ARG_WITH(cups, [AS_HELP_STRING([--with-cups],
+ [specify prefix directory for the cups package
+ (expecting the headers under PATH/include)])])
+ AC_ARG_WITH(cups-include, [AS_HELP_STRING([--with-cups-include],
+ [specify directory for the cups include files])])
+
+ if test "x$NEEDS_LIB_CUPS" = xfalse; then
+ if (test "x${with_cups}" != x && test "x${with_cups}" != xno) || \
+ (test "x${with_cups_include}" != x && test "x${with_cups_include}" != xno); then
+ AC_MSG_WARN([[cups not used, so --with-cups[-*] is ignored]])
+ fi
+ CUPS_CFLAGS=
+ else
+ CUPS_FOUND=no
+
+ if test "x${with_cups}" = xno || test "x${with_cups_include}" = xno; then
+ AC_MSG_ERROR([It is not possible to disable the use of cups. Remove the --without-cups option.])
+ fi
+
+ if test "x${with_cups}" != x; then
+ AC_MSG_CHECKING([for cups headers])
+ if test -s "${with_cups}/include/cups/cups.h"; then
+ CUPS_CFLAGS="-I${with_cups}/include"
+ CUPS_FOUND=yes
+ AC_MSG_RESULT([$CUPS_FOUND])
+ else
+ AC_MSG_ERROR([Can't find 'include/cups/cups.h' under ${with_cups} given with the --with-cups option.])
+ fi
+ fi
+ if test "x${with_cups_include}" != x; then
+ AC_MSG_CHECKING([for cups headers])
+ if test -s "${with_cups_include}/cups/cups.h"; then
+ CUPS_CFLAGS="-I${with_cups_include}"
+ CUPS_FOUND=yes
+ AC_MSG_RESULT([$CUPS_FOUND])
+ else
+ AC_MSG_ERROR([Can't find 'cups/cups.h' under ${with_cups_include} given with the --with-cups-include option.])
+ fi
+ fi
+ if test "x$CUPS_FOUND" = xno; then
+ # Are the cups headers installed in the default /usr/include location?
+ AC_CHECK_HEADERS([cups/cups.h cups/ppd.h], [
+ CUPS_FOUND=yes
+ CUPS_CFLAGS=
+ DEFAULT_CUPS=yes
+ ])
+ fi
+ if test "x$CUPS_FOUND" = xno; then
+ HELP_MSG_MISSING_DEPENDENCY([cups])
+ AC_MSG_ERROR([Could not find cups! $HELP_MSG ])
+ fi
+ fi
+
+ AC_SUBST(CUPS_CFLAGS)
+])
diff --git a/common/autoconf/lib-elf.m4 b/common/autoconf/lib-elf.m4
new file mode 100644
index 0000000..9d5230b
--- /dev/null
+++ b/common/autoconf/lib-elf.m4
@@ -0,0 +1,129 @@
+#
+# Copyright (c) 2015, 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.
+#
+
+################################################################################
+# Setup libelf (ELF library)
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_LIBELF],
+[
+ AC_ARG_WITH(libelf, [AS_HELP_STRING([--with-libelf],
+ [specify prefix directory for the libelf package
+ (expecting the libraries under PATH/lib and the headers under PATH/include)])])
+ AC_ARG_WITH(libelf-include, [AS_HELP_STRING([--with-libelf-include],
+ [specify directory for the libelf include files])])
+ AC_ARG_WITH(libelf-lib, [AS_HELP_STRING([--with-libelf-lib],
+ [specify directory for the libelf library])])
+
+ if test "x$ENABLE_AOT" = xfalse; then
+ if (test "x${with_libelf}" != x && test "x${with_libelf}" != xno) || \
+ (test "x${with_libelf_include}" != x && test "x${with_libelf_include}" != xno) || \
+ (test "x${with_libelf_lib}" != x && test "x${with_libelf_lib}" != xno); then
+ AC_MSG_WARN([[libelf is not used, so --with-libelf[-*] is ignored]])
+ fi
+ LIBELF_CFLAGS=
+ LIBELF_LIBS=
+ else
+ LIBELF_FOUND=no
+
+ if test "x${with_libelf}" = xno || test "x${with_libelf_include}" = xno || test "x${with_libelf_lib}" = xno; then
+ ENABLE_AOT="false"
+ if test "x${enable_aot}" = xyes; then
+ AC_MSG_ERROR([libelf is explicitly disabled, cannot build AOT. Enable libelf or remove --enable-aot to disable AOT.])
+ fi
+ else
+ if test "x${with_libelf}" != x; then
+ ELF_LIBS="-L${with_libelf}/lib -lelf"
+ ELF_CFLAGS="-I${with_libelf}/include"
+ LIBELF_FOUND=yes
+ fi
+ if test "x${with_libelf_include}" != x; then
+ ELF_CFLAGS="-I${with_libelf_include}"
+ LIBELF_FOUND=yes
+ fi
+ if test "x${with_libelf_lib}" != x; then
+ ELF_LIBS="-L${with_libelf_lib} -lelf"
+ LIBELF_FOUND=yes
+ fi
+ # Do not try pkg-config if we have a sysroot set.
+ if test "x$SYSROOT" = x; then
+ if test "x$LIBELF_FOUND" = xno; then
+ # Figure out ELF_CFLAGS and ELF_LIBS
+ PKG_CHECK_MODULES([ELF], [libelf], [LIBELF_FOUND=yes], [LIBELF_FOUND=no])
+ fi
+ fi
+ if test "x$LIBELF_FOUND" = xno; then
+ AC_CHECK_HEADERS([libelf.h],
+ [
+ LIBELF_FOUND=yes
+ ELF_CFLAGS=
+ ELF_LIBS=-lelf
+ ],
+ [LIBELF_FOUND=no]
+ )
+ fi
+ if test "x$LIBELF_FOUND" = xno; then
+ ENABLE_AOT="false"
+ HELP_MSG_MISSING_DEPENDENCY([elf])
+ if test "x${enable_aot}" = xyes; then
+ AC_MSG_ERROR([libelf not found, cannot build AOT. Remove --enable-aot to disable AOT or: $HELP_MSG])
+ else
+ AC_MSG_WARN([libelf not found, cannot build AOT. $HELP_MSG])
+ fi
+ else
+ AC_MSG_CHECKING([if libelf works])
+ AC_LANG_PUSH(C)
+ OLD_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $ELF_CFLAGS"
+ OLD_LIBS="$LIBS"
+ LIBS="$LIBS $ELF_LIBS"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <libelf.h>],
+ [
+ elf_version(0);
+ return 0;
+ ])],
+ [LIBELF_WORKS=yes],
+ [LIBELF_WORKS=no]
+ )
+ CFLAGS="$OLD_CFLAGS"
+ LIBS="$OLD_LIBS"
+ AC_LANG_POP(C)
+ AC_MSG_RESULT([$LIBELF_WORKS])
+
+ if test "x$LIBELF_WORKS" = xno; then
+ ENABLE_AOT="false"
+ HELP_MSG_MISSING_DEPENDENCY([elf])
+ if test "x$enable_aot" = "xyes"; then
+ AC_MSG_ERROR([Found libelf but could not link and compile with it. Remove --enable-aot to disable AOT or: $HELP_MSG])
+ else
+ AC_MSG_WARN([Found libelf but could not link and compile with it. $HELP_MSG])
+ fi
+ fi
+ fi
+ fi
+ fi
+
+ AC_SUBST(ELF_CFLAGS)
+ AC_SUBST(ELF_LIBS)
+])
diff --git a/common/autoconf/lib-ffi.m4 b/common/autoconf/lib-ffi.m4
new file mode 100644
index 0000000..2a714f3
--- /dev/null
+++ b/common/autoconf/lib-ffi.m4
@@ -0,0 +1,177 @@
+#
+# Copyright (c) 2015, 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.
+#
+
+################################################################################
+# Setup libffi (Foreign Function Interface)
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_LIBFFI],
+[
+ AC_ARG_WITH(libffi, [AS_HELP_STRING([--with-libffi],
+ [specify prefix directory for the libffi package
+ (expecting the libraries under PATH/lib and the headers under PATH/include)])])
+ AC_ARG_WITH(libffi-include, [AS_HELP_STRING([--with-libffi-include],
+ [specify directory for the libffi include files])])
+ AC_ARG_WITH(libffi-lib, [AS_HELP_STRING([--with-libffi-lib],
+ [specify directory for the libffi library])])
+ AC_ARG_ENABLE(libffi-bundling, [AS_HELP_STRING([--enable-libffi-bundling],
+ [enable bundling of libffi.so to make the built JDK runnable on more systems])])
+
+ if test "x$NEEDS_LIB_FFI" = xfalse; then
+ if (test "x${with_libffi}" != x && test "x${with_libffi}" != xno) || \
+ (test "x${with_libffi_include}" != x && test "x${with_libffi_include}" != xno) || \
+ (test "x${with_libffi_lib}" != x && test "x${with_libffi_lib}" != xno); then
+ AC_MSG_WARN([[libffi not used, so --with-libffi[-*] is ignored]])
+ fi
+ LIBFFI_CFLAGS=
+ LIBFFI_LIBS=
+ else
+ LIBFFI_FOUND=no
+
+ if test "x${with_libffi}" = xno || test "x${with_libffi_include}" = xno || test "x${with_libffi_lib}" = xno; then
+ AC_MSG_ERROR([It is not possible to disable the use of libffi. Remove the --without-libffi option.])
+ fi
+
+ if test "x${with_libffi}" != x; then
+ LIBFFI_LIB_PATH="${with_libffi}/lib"
+ LIBFFI_LIBS="-L${with_libffi}/lib -lffi"
+ LIBFFI_CFLAGS="-I${with_libffi}/include"
+ LIBFFI_FOUND=yes
+ fi
+ if test "x${with_libffi_include}" != x; then
+ LIBFFI_CFLAGS="-I${with_libffi_include}"
+ LIBFFI_FOUND=yes
+ fi
+ if test "x${with_libffi_lib}" != x; then
+ LIBFFI_LIB_PATH="${with_libffi_lib}"
+ LIBFFI_LIBS="-L${with_libffi_lib} -lffi"
+ LIBFFI_FOUND=yes
+ fi
+ # Do not try pkg-config if we have a sysroot set.
+ if test "x$SYSROOT" = x; then
+ if test "x$LIBFFI_FOUND" = xno; then
+ # Figure out LIBFFI_CFLAGS and LIBFFI_LIBS
+ PKG_CHECK_MODULES([LIBFFI], [libffi], [LIBFFI_FOUND=yes], [LIBFFI_FOUND=no])
+ fi
+ fi
+ if test "x$LIBFFI_FOUND" = xno; then
+ AC_CHECK_HEADERS([ffi.h],
+ [
+ LIBFFI_FOUND=yes
+ LIBFFI_CFLAGS=
+ LIBFFI_LIBS=-lffi
+ ],
+ [LIBFFI_FOUND=no]
+ )
+ fi
+ if test "x$LIBFFI_FOUND" = xno; then
+ HELP_MSG_MISSING_DEPENDENCY([ffi])
+ AC_MSG_ERROR([Could not find libffi! $HELP_MSG])
+ fi
+
+ AC_MSG_CHECKING([if libffi works])
+ AC_LANG_PUSH(C)
+ OLD_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $LIBFFI_CFLAGS"
+ OLD_LIBS="$LIBS"
+ LIBS="$LIBS $LIBFFI_LIBS"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <ffi.h>],
+ [
+ ffi_call(NULL, NULL, NULL, NULL);
+ return 0;
+ ])],
+ [LIBFFI_WORKS=yes],
+ [LIBFFI_WORKS=no]
+ )
+ CFLAGS="$OLD_CFLAGS"
+ LIBS="$OLD_LIBS"
+ AC_LANG_POP(C)
+ AC_MSG_RESULT([$LIBFFI_WORKS])
+
+ if test "x$LIBFFI_WORKS" = xno; then
+ HELP_MSG_MISSING_DEPENDENCY([ffi])
+ AC_MSG_ERROR([Found libffi but could not link and compile with it. $HELP_MSG])
+ fi
+
+ AC_MSG_CHECKING([if libffi should be bundled])
+ if test "x$enable_libffi_bundling" = "x"; then
+ AC_MSG_RESULT([no])
+ ENABLE_LIBFFI_BUNDLING=false
+ elif test "x$enable_libffi_bundling" = "xno"; then
+ AC_MSG_RESULT([no, forced])
+ ENABLE_LIBFFI_BUNDLING=false
+ elif test "x$enable_libffi_bundling" = "xyes"; then
+ AC_MSG_RESULT([yes, forced])
+ ENABLE_LIBFFI_BUNDLING=true
+ else
+ AC_MSG_ERROR([Invalid value for --enable-libffi-bundling])
+ fi
+
+ # Find the libffi.so.X to bundle
+ if test "x${ENABLE_LIBFFI_BUNDLING}" = "xtrue"; then
+ AC_MSG_CHECKING([for libffi lib file location])
+ if test "x${LIBFFI_LIB_PATH}" != x; then
+ if test -e ${LIBFFI_LIB_PATH}/libffi.so.?; then
+ LIBFFI_LIB_FILE="${LIBFFI_LIB_PATH}/libffi.so.?"
+ else
+ AC_MSG_ERROR([Could not locate libffi.so.? for bundling in ${LIBFFI_LIB_PATH}])
+ fi
+ else
+ # If we don't have an explicit path, look in a few obvious places
+ if test "x${OPENJDK_TARGET_CPU}" = "xx86"; then
+ if test -e ${SYSROOT}/usr/lib/libffi.so.? ; then
+ LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/libffi.so.?"
+ elif test -e ${SYSROOT}/usr/lib/i386-linux-gnu/libffi.so.? ; then
+ LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/i386-linux-gnu/libffi.so.?"
+ else
+ AC_MSG_ERROR([Could not locate libffi.so.? for bundling])
+ fi
+ elif test "x${OPENJDK_TARGET_CPU}" = "xx86_64"; then
+ if test -e ${SYSROOT}/usr/lib64/libffi.so.? ; then
+ LIBFFI_LIB_FILE="${SYSROOT}/usr/lib64/libffi.so.?"
+ elif test -e ${SYSROOT}/usr/lib/x86_64-linux-gnu/libffi.so.? ; then
+ LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/x86_64-linux-gnu/libffi.so.?"
+ else
+ AC_MSG_ERROR([Could not locate libffi.so.? for bundling])
+ fi
+ else
+ # Fallback on the default /usr/lib dir
+ if test -e ${SYSROOT}/usr/lib/libffi.so.? ; then
+ LIBFFI_LIB_FILE="${SYSROOT}/usr/lib/libffi.so.?"
+ else
+ AC_MSG_ERROR([Could not locate libffi.so.? for bundling])
+ fi
+ fi
+ fi
+ # Make sure the wildcard is evaluated
+ LIBFFI_LIB_FILE="$(ls ${LIBFFI_LIB_FILE})"
+ AC_MSG_RESULT([${LIBFFI_LIB_FILE}])
+ fi
+ fi
+
+ AC_SUBST(LIBFFI_CFLAGS)
+ AC_SUBST(LIBFFI_LIBS)
+ AC_SUBST(ENABLE_LIBFFI_BUNDLING)
+ AC_SUBST(LIBFFI_LIB_FILE)
+])
diff --git a/common/autoconf/lib-freetype.m4 b/common/autoconf/lib-freetype.m4
new file mode 100644
index 0000000..17dd726
--- /dev/null
+++ b/common/autoconf/lib-freetype.m4
@@ -0,0 +1,465 @@
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+################################################################################
+# Build the freetype lib from source
+################################################################################
+AC_DEFUN([LIB_BUILD_FREETYPE],
+[
+ FREETYPE_SRC_PATH="$1"
+ BUILD_FREETYPE=yes
+
+ # Check if the freetype sources are acessible..
+ if ! test -d $FREETYPE_SRC_PATH; then
+ AC_MSG_WARN([--with-freetype-src specified, but can not find path "$FREETYPE_SRC_PATH" - ignoring --with-freetype-src])
+ BUILD_FREETYPE=no
+ fi
+ # ..and contain a vc2010 project file
+ vcxproj_path="$FREETYPE_SRC_PATH/builds/windows/vc2010/freetype.vcxproj"
+ if test "x$BUILD_FREETYPE" = xyes && ! test -s $vcxproj_path; then
+ AC_MSG_WARN([Can not find project file $vcxproj_path (you may try a newer freetype version) - ignoring --with-freetype-src])
+ BUILD_FREETYPE=no
+ fi
+ # Now check if configure found a version of 'msbuild.exe'
+ if test "x$BUILD_FREETYPE" = xyes && test "x$MSBUILD" == x ; then
+ AC_MSG_WARN([Can not find an msbuild.exe executable (you may try to install .NET 4.0) - ignoring --with-freetype-src])
+ BUILD_FREETYPE=no
+ fi
+
+ # Ready to go..
+ if test "x$BUILD_FREETYPE" = xyes; then
+ # msbuild requires trailing slashes for output directories
+ freetype_lib_path="$FREETYPE_SRC_PATH/lib$OPENJDK_TARGET_CPU_BITS/"
+ freetype_lib_path_unix="$freetype_lib_path"
+ freetype_obj_path="$FREETYPE_SRC_PATH/obj$OPENJDK_TARGET_CPU_BITS/"
+ BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH(vcxproj_path)
+ BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH(freetype_lib_path)
+ BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH(freetype_obj_path)
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ freetype_platform=x64
+ else
+ freetype_platform=win32
+ fi
+
+ # The original freetype project file is for VS 2010 (i.e. 'v100'),
+ # so we have to adapt the toolset if building with any other toolsed (i.e. SDK).
+ # Currently 'PLATFORM_TOOLSET' is set in 'TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT'/
+ # 'TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT' in toolchain_windows.m4
+ AC_MSG_NOTICE([Trying to compile freetype sources with PlatformToolset=$PLATFORM_TOOLSET to $freetype_lib_path_unix ...])
+
+ # First we try to build the freetype.dll
+ $ECHO -e "@echo off\n"\
+ "$MSBUILD $vcxproj_path "\
+ "/p:PlatformToolset=$PLATFORM_TOOLSET "\
+ "/p:Configuration=\"Release Multithreaded\" "\
+ "/p:Platform=$freetype_platform "\
+ "/p:ConfigurationType=DynamicLibrary "\
+ "/p:TargetName=freetype "\
+ "/p:OutDir=\"$freetype_lib_path\" "\
+ "/p:IntDir=\"$freetype_obj_path\" > freetype.log" > freetype.bat
+ cmd /c freetype.bat
+
+ if test -s "$freetype_lib_path_unix/freetype.dll"; then
+ # If that succeeds we also build freetype.lib
+ $ECHO -e "@echo off\n"\
+ "$MSBUILD $vcxproj_path "\
+ "/p:PlatformToolset=$PLATFORM_TOOLSET "\
+ "/p:Configuration=\"Release Multithreaded\" "\
+ "/p:Platform=$freetype_platform "\
+ "/p:ConfigurationType=StaticLibrary "\
+ "/p:TargetName=freetype "\
+ "/p:OutDir=\"$freetype_lib_path\" "\
+ "/p:IntDir=\"$freetype_obj_path\" >> freetype.log" > freetype.bat
+ cmd /c freetype.bat
+
+ if test -s "$freetype_lib_path_unix/freetype.lib"; then
+ # Once we build both, lib and dll, set freetype lib and include path appropriately
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$FREETYPE_SRC_PATH/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$freetype_lib_path_unix"
+ AC_MSG_NOTICE([Compiling freetype sources succeeded! (see freetype.log for build results)])
+ else
+ BUILD_FREETYPE=no
+ fi
+ else
+ BUILD_FREETYPE=no
+ fi
+ fi
+])
+
+################################################################################
+# Check if a potential freeype library match is correct and usable
+################################################################################
+AC_DEFUN([LIB_CHECK_POTENTIAL_FREETYPE],
+[
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$1"
+ POTENTIAL_FREETYPE_LIB_PATH="$2"
+ METHOD="$3"
+
+ # Let's start with an optimistic view of the world :-)
+ FOUND_FREETYPE=yes
+
+ # First look for the canonical freetype main include file ft2build.h.
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Oh no! Let's try in the freetype2 directory. This is needed at least at Mac OS X Yosemite.
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH/freetype2"
+ if ! test -s "$POTENTIAL_FREETYPE_INCLUDE_PATH/ft2build.h"; then
+ # Fail.
+ FOUND_FREETYPE=no
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # Include file found, let's continue the sanity check.
+ AC_MSG_NOTICE([Found freetype include files at $POTENTIAL_FREETYPE_INCLUDE_PATH using $METHOD])
+
+ # Reset to default value
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME"; then
+ if test "x$OPENJDK_TARGET_OS" = xmacosx \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH/${LIBRARY_PREFIX}freetype.6${SHARED_LIBRARY_SUFFIX}"; then
+ # On Mac OS X Yosemite, the symlink from libfreetype.dylib to libfreetype.6.dylib disappeared. Check
+ # for the .6 version explicitly.
+ FREETYPE_BASE_NAME=freetype.6
+ FREETYPE_LIB_NAME="${LIBRARY_PREFIX}${FREETYPE_BASE_NAME}${SHARED_LIBRARY_SUFFIX}"
+ AC_MSG_NOTICE([Compensating for missing symlink by using version 6 explicitly])
+ else
+ AC_MSG_NOTICE([Could not find $POTENTIAL_FREETYPE_LIB_PATH/$FREETYPE_LIB_NAME. Ignoring location.])
+ FOUND_FREETYPE=no
+ fi
+ else
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # On Windows, we will need both .lib and .dll file.
+ if ! test -s "$POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib"; then
+ AC_MSG_NOTICE([Could not find $POTENTIAL_FREETYPE_LIB_PATH/${FREETYPE_BASE_NAME}.lib. Ignoring location.])
+ FOUND_FREETYPE=no
+ fi
+ elif test "x$OPENJDK_TARGET_OS" = xsolaris \
+ && test -s "$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR/$FREETYPE_LIB_NAME"; then
+ # Found lib in isa dir, use that instead.
+ POTENTIAL_FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH$OPENJDK_TARGET_CPU_ISADIR"
+ AC_MSG_NOTICE([Rewriting to use $POTENTIAL_FREETYPE_LIB_PATH instead])
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" = xyes; then
+ BASIC_FIXUP_PATH(POTENTIAL_FREETYPE_INCLUDE_PATH)
+ BASIC_FIXUP_PATH(POTENTIAL_FREETYPE_LIB_PATH)
+
+ FREETYPE_INCLUDE_PATH="$POTENTIAL_FREETYPE_INCLUDE_PATH"
+ AC_MSG_CHECKING([for freetype includes])
+ AC_MSG_RESULT([$FREETYPE_INCLUDE_PATH])
+ FREETYPE_LIB_PATH="$POTENTIAL_FREETYPE_LIB_PATH"
+ AC_MSG_CHECKING([for freetype libraries])
+ AC_MSG_RESULT([$FREETYPE_LIB_PATH])
+ fi
+])
+
+################################################################################
+# Setup freetype (The FreeType2 font rendering library)
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_FREETYPE],
+[
+ AC_ARG_WITH(freetype, [AS_HELP_STRING([--with-freetype],
+ [specify prefix directory for the freetype package
+ (expecting the libraries under PATH/lib and the headers under PATH/include)])])
+ AC_ARG_WITH(freetype-include, [AS_HELP_STRING([--with-freetype-include],
+ [specify directory for the freetype include files])])
+ AC_ARG_WITH(freetype-lib, [AS_HELP_STRING([--with-freetype-lib],
+ [specify directory for the freetype library])])
+ AC_ARG_WITH(freetype-src, [AS_HELP_STRING([--with-freetype-src],
+ [specify directory with freetype sources to automatically build the library (experimental, Windows-only)])])
+ AC_ARG_ENABLE(freetype-bundling, [AS_HELP_STRING([--disable-freetype-bundling],
+ [disable bundling of the freetype library with the build result @<:@enabled on Windows or when using --with-freetype, disabled otherwise@:>@])])
+ AC_ARG_WITH(freetype-license, [AS_HELP_STRING([--with-freetype-license],
+ [if bundling freetype, also bundle this license file])])
+
+ # Need to specify explicitly since it needs to be overridden on some versions of macosx
+ FREETYPE_BASE_NAME=freetype
+ FREETYPE_CFLAGS=
+ FREETYPE_LIBS=
+ FREETYPE_BUNDLE_LIB_PATH=
+
+ if test "x$NEEDS_LIB_FREETYPE" = xfalse; then
+ if (test "x$with_freetype" != x && test "x$with_freetype" != xno) || \
+ (test "x$with_freetype_include" != x && test "x$with_freetype_include" != xno) || \
+ (test "x$with_freetype_lib" != x && test "x$with_freetype_lib" != xno) || \
+ (test "x$with_freetype_src" != x && test "x$with_freetype_src" != xno); then
+ AC_MSG_WARN([[freetype not used, so --with-freetype[-*] is ignored]])
+ fi
+ if (test "x$enable_freetype_bundling" != x && test "x$enable_freetype_bundling" != xno); then
+ AC_MSG_WARN([freetype not used, so --enable-freetype-bundling is ignored])
+ fi
+ else
+ # freetype is needed to build; go get it!
+
+ BUNDLE_FREETYPE="$enable_freetype_bundling"
+
+ if test "x$with_freetype_src" != x; then
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # Try to build freetype if --with-freetype-src was given on Windows
+ LIB_BUILD_FREETYPE([$with_freetype_src])
+ if test "x$BUILD_FREETYPE" = xyes; then
+ # Okay, we built it. Check that it works.
+ LIB_CHECK_POTENTIAL_FREETYPE($POTENTIAL_FREETYPE_INCLUDE_PATH, $POTENTIAL_FREETYPE_LIB_PATH, [--with-freetype-src])
+ if test "x$FOUND_FREETYPE" != xyes; then
+ AC_MSG_ERROR([Can not use the built freetype at location given by --with-freetype-src])
+ fi
+ else
+ AC_MSG_NOTICE([User specified --with-freetype-src but building freetype failed. (see freetype.log for build results)])
+ AC_MSG_ERROR([Consider building freetype manually and using --with-freetype instead.])
+ fi
+ else
+ AC_MSG_WARN([--with-freetype-src is currently only supported on Windows - ignoring])
+ fi
+ fi
+
+ if test "x$with_freetype" != x || test "x$with_freetype_include" != x || test "x$with_freetype_lib" != x; then
+ # User has specified settings
+
+ if test "x$BUNDLE_FREETYPE" = x; then
+ # If not specified, default is to bundle freetype
+ BUNDLE_FREETYPE=yes
+ fi
+
+ if test "x$with_freetype" != x; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$with_freetype/include"
+ POTENTIAL_FREETYPE_LIB_PATH="$with_freetype/lib"
+ fi
+
+ # Allow --with-freetype-lib and --with-freetype-include to override
+ if test "x$with_freetype_include" != x; then
+ POTENTIAL_FREETYPE_INCLUDE_PATH="$with_freetype_include"
+ fi
+ if test "x$with_freetype_lib" != x; then
+ POTENTIAL_FREETYPE_LIB_PATH="$with_freetype_lib"
+ fi
+
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" != x && test "x$POTENTIAL_FREETYPE_LIB_PATH" != x; then
+ # Okay, we got it. Check that it works.
+ LIB_CHECK_POTENTIAL_FREETYPE($POTENTIAL_FREETYPE_INCLUDE_PATH, $POTENTIAL_FREETYPE_LIB_PATH, [--with-freetype])
+ if test "x$FOUND_FREETYPE" != xyes; then
+ AC_MSG_ERROR([Can not find or use freetype at location given by --with-freetype])
+ fi
+ else
+ # User specified only one of lib or include. This is an error.
+ if test "x$POTENTIAL_FREETYPE_INCLUDE_PATH" = x ; then
+ AC_MSG_NOTICE([User specified --with-freetype-lib but not --with-freetype-include])
+ AC_MSG_ERROR([Need both freetype lib and include paths. Consider using --with-freetype instead.])
+ else
+ AC_MSG_NOTICE([User specified --with-freetype-include but not --with-freetype-lib])
+ AC_MSG_ERROR([Need both freetype lib and include paths. Consider using --with-freetype instead.])
+ fi
+ fi
+ else
+ # User did not specify settings, but we need freetype. Try to locate it.
+
+ if test "x$BUNDLE_FREETYPE" = x; then
+ # If not specified, default is to bundle freetype only on windows
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ BUNDLE_FREETYPE=yes
+ else
+ BUNDLE_FREETYPE=no
+ fi
+ fi
+
+ # If we have a sysroot, assume that's where we are supposed to look and skip pkg-config.
+ if test "x$SYSROOT" = x; then
+ if test "x$FOUND_FREETYPE" != xyes; then
+ # Check modules using pkg-config, but only if we have it (ugly output results otherwise)
+ if test "x$PKG_CONFIG" != x; then
+ PKG_CHECK_MODULES(FREETYPE, freetype2, [FOUND_FREETYPE=yes], [FOUND_FREETYPE=no])
+ if test "x$FOUND_FREETYPE" = xyes; then
+ # On solaris, pkg_check adds -lz to freetype libs, which isn't necessary for us.
+ FREETYPE_LIBS=`$ECHO $FREETYPE_LIBS | $SED 's/-lz//g'`
+ # 64-bit libs for Solaris x86 are installed in the amd64 subdirectory, change lib to lib/amd64
+ if test "x$OPENJDK_TARGET_OS" = xsolaris && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ FREETYPE_LIBS=`$ECHO $FREETYPE_LIBS | $SED 's?/lib?/lib/amd64?g'`
+ fi
+ # PKG_CHECK_MODULES will set FREETYPE_CFLAGS and _LIBS, but we don't get a lib path for bundling.
+ if test "x$BUNDLE_FREETYPE" = xyes; then
+ AC_MSG_NOTICE([Found freetype using pkg-config, but ignoring since we can not bundle that])
+ FOUND_FREETYPE=no
+ else
+ AC_MSG_CHECKING([for freetype])
+ AC_MSG_RESULT([yes (using pkg-config)])
+ fi
+ fi
+ fi
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" != xyes; then
+ # Check in well-known locations
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ FREETYPE_BASE_DIR="$PROGRAMFILES/GnuWin32"
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(FREETYPE_BASE_DIR)
+ LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location])
+ if test "x$FOUND_FREETYPE" != xyes; then
+ FREETYPE_BASE_DIR="$ProgramW6432/GnuWin32"
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(FREETYPE_BASE_DIR)
+ LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location])
+ fi
+ if test "x$FOUND_FREETYPE" != xyes; then
+ FREETYPE_BASE_DIR="$HOME/freetype"
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(FREETYPE_BASE_DIR)
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib64], [well-known location])
+ else
+ LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib32], [well-known location])
+ fi
+ if test "x$FOUND_FREETYPE" != xyes && test -d $FREETYPE_BASE_DIR \
+ && test -s "$FREETYPE_BASE_DIR/builds/windows/vc2010/freetype.vcxproj" && test "x$MSBUILD" != x; then
+ # Source is available, as a last resort try to build freetype in default location
+ LIB_BUILD_FREETYPE($FREETYPE_BASE_DIR)
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib64], [well-known location])
+ else
+ LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib32], [well-known location])
+ fi
+ fi
+ fi
+ else
+ FREETYPE_BASE_DIR="$SYSROOT/usr"
+ LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location])
+
+ if test "x$FOUND_FREETYPE" != xyes; then
+ FREETYPE_BASE_DIR="$SYSROOT/usr/X11"
+ LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location])
+ fi
+ if test "x$FOUND_FREETYPE" != xyes; then
+ FREETYPE_BASE_DIR="$SYSROOT/usr/local"
+ LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location])
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ if test "x$FOUND_FREETYPE" != xyes; then
+ # Due to changes in OSX 10.11 XQuartz now installs to /opt/X11
+ FREETYPE_BASE_DIR="$SYSROOT/opt/X11"
+ LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib], [well-known location])
+ fi
+ fi
+
+ if test "x$FOUND_FREETYPE" != xyes; then
+ FREETYPE_BASE_DIR="$SYSROOT/usr"
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib/x86_64-linux-gnu], [well-known location])
+ else
+ LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib/i386-linux-gnu], [well-known location])
+ if test "x$FOUND_FREETYPE" != xyes; then
+ LIB_CHECK_POTENTIAL_FREETYPE([$FREETYPE_BASE_DIR/include], [$FREETYPE_BASE_DIR/lib32], [well-known location])
+ fi
+ fi
+ fi
+ fi
+ fi # end check in well-known locations
+
+ if test "x$FOUND_FREETYPE" != xyes; then
+ HELP_MSG_MISSING_DEPENDENCY([freetype])
+ AC_MSG_ERROR([Could not find freetype! $HELP_MSG ])
+ fi
+ fi # end user specified settings
+
+ # Set FREETYPE_CFLAGS, _LIBS and _LIB_PATH from include and lib dir.
+ if test "x$FREETYPE_CFLAGS" = x; then
+ BASIC_FIXUP_PATH(FREETYPE_INCLUDE_PATH)
+ if test -d $FREETYPE_INCLUDE_PATH/freetype2/freetype; then
+ FREETYPE_CFLAGS="-I$FREETYPE_INCLUDE_PATH/freetype2 -I$FREETYPE_INCLUDE_PATH"
+ else
+ FREETYPE_CFLAGS="-I$FREETYPE_INCLUDE_PATH"
+ fi
+ fi
+
+ if test "x$FREETYPE_LIBS" = x; then
+ BASIC_FIXUP_PATH(FREETYPE_LIB_PATH)
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ FREETYPE_LIBS="$FREETYPE_LIB_PATH/$FREETYPE_BASE_NAME.lib"
+ else
+ FREETYPE_LIBS="-L$FREETYPE_LIB_PATH -l$FREETYPE_BASE_NAME"
+ fi
+ fi
+
+ # Try to compile it
+ AC_MSG_CHECKING([if we can compile and link with freetype])
+ AC_LANG_PUSH(C++)
+ PREV_CXXCFLAGS="$CXXFLAGS"
+ PREV_LIBS="$LIBS"
+ PREV_CXX="$CXX"
+ CXXFLAGS="$CXXFLAGS $FREETYPE_CFLAGS"
+ LIBS="$LIBS $FREETYPE_LIBS"
+ CXX="$FIXPATH $CXX"
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[
+ #include<ft2build.h>
+ #include FT_FREETYPE_H
+ int main () {
+ FT_Init_FreeType(NULL);
+ return 0;
+ }
+ ]])],
+ [
+ AC_MSG_RESULT([yes])
+ ],
+ [
+ AC_MSG_RESULT([no])
+ AC_MSG_NOTICE([Could not compile and link with freetype. This might be a 32/64-bit mismatch.])
+ AC_MSG_NOTICE([Using FREETYPE_CFLAGS=$FREETYPE_CFLAGS and FREETYPE_LIBS=$FREETYPE_LIBS])
+
+ HELP_MSG_MISSING_DEPENDENCY([freetype])
+
+ AC_MSG_ERROR([Can not continue without freetype. $HELP_MSG])
+ ]
+ )
+ CXXCFLAGS="$PREV_CXXFLAGS"
+ LIBS="$PREV_LIBS"
+ CXX="$PREV_CXX"
+ AC_LANG_POP(C++)
+
+ AC_MSG_CHECKING([if we should bundle freetype])
+ if test "x$BUNDLE_FREETYPE" = xyes; then
+ FREETYPE_BUNDLE_LIB_PATH="$FREETYPE_LIB_PATH"
+ fi
+ AC_MSG_RESULT([$BUNDLE_FREETYPE])
+
+ fi # end freetype needed
+
+ FREETYPE_LICENSE=""
+ if test "x$with_freetype_license" = "xyes"; then
+ AC_MSG_ERROR([--with-freetype-license must have a value])
+ elif test "x$with_freetype_license" != "x"; then
+ AC_MSG_CHECKING([for freetype license])
+ AC_MSG_RESULT([$with_freetype_license])
+ FREETYPE_LICENSE="$with_freetype_license"
+ BASIC_FIXUP_PATH(FREETYPE_LICENSE)
+ if test ! -f "$FREETYPE_LICENSE"; then
+ AC_MSG_ERROR([$FREETYPE_LICENSE cannot be found])
+ fi
+ fi
+
+ AC_SUBST(FREETYPE_BUNDLE_LIB_PATH)
+ AC_SUBST(FREETYPE_CFLAGS)
+ AC_SUBST(FREETYPE_LIBS)
+ AC_SUBST(FREETYPE_LICENSE)
+])
diff --git a/common/autoconf/lib-std.m4 b/common/autoconf/lib-std.m4
new file mode 100644
index 0000000..ceb8a45
--- /dev/null
+++ b/common/autoconf/lib-std.m4
@@ -0,0 +1,92 @@
+#
+# Copyright (c) 2011, 2016, 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.
+#
+
+################################################################################
+# Setup the standard C/C++ runtime libraries.
+#
+# Most importantly, determine if stdc++ should be linked statically or
+# dynamically.
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_STD_LIBS],
+[
+ # statically link libstdc++ before C++ ABI is stablized on Linux unless
+ # dynamic build is configured on command line.
+ AC_ARG_WITH([stdc++lib], [AS_HELP_STRING([--with-stdc++lib=<static>,<dynamic>,<default>],
+ [force linking of the C++ runtime on Linux to either static or dynamic, default is static with dynamic as fallback])],
+ [
+ if test "x$with_stdc__lib" != xdynamic && test "x$with_stdc__lib" != xstatic \
+ && test "x$with_stdc__lib" != xdefault; then
+ AC_MSG_ERROR([Bad parameter value --with-stdc++lib=$with_stdc__lib!])
+ fi
+ ],
+ [with_stdc__lib=default]
+ )
+
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ # Test if stdc++ can be linked statically.
+ AC_MSG_CHECKING([if static link of stdc++ is possible])
+ STATIC_STDCXX_FLAGS="-static-libstdc++ -static-libgcc"
+ AC_LANG_PUSH(C++)
+ OLD_LIBS="$LIBS"
+ LIBS="$STATIC_STDCXX_FLAGS"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([], [return 0;])],
+ [has_static_libstdcxx=yes],
+ [has_static_libstdcxx=no])
+ LIBS="$OLD_LIBS"
+ AC_LANG_POP(C++)
+ AC_MSG_RESULT([$has_static_libstdcxx])
+
+ if test "x$with_stdc__lib" = xstatic && test "x$has_static_libstdcxx" = xno; then
+ AC_MSG_ERROR([Static linking of libstdc++ was not possible!])
+ fi
+
+ # If dynamic was requested, it's available since it would fail above otherwise.
+ # If dynamic wasn't requested, go with static unless it isn't available.
+ AC_MSG_CHECKING([how to link with libstdc++])
+ if test "x$with_stdc__lib" = xdynamic || test "x$has_static_libstdcxx" = xno \
+ || HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
+ AC_MSG_RESULT([dynamic])
+ else
+ LIBCXX="$LIBCXX $STATIC_STDCXX_FLAGS"
+ JVM_LDFLAGS="$JVM_LDFLAGS $STATIC_STDCXX_FLAGS"
+ # Ideally, we should test stdc++ for the BUILD toolchain separately. For now
+ # just use the same setting as for the TARGET toolchain.
+ OPENJDK_BUILD_JVM_LDFLAGS="$OPENJDK_BUILD_JVM_LDFLAGS $STATIC_STDCXX_FLAGS"
+ AC_MSG_RESULT([static])
+ fi
+ fi
+
+ # libCrun is the c++ runtime-library with SunStudio (roughly the equivalent of gcc's libstdc++.so)
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio && test "x$LIBCXX" = x; then
+ LIBCXX="${SYSROOT}/usr/lib${OPENJDK_TARGET_CPU_ISADIR}/libCrun.so.1"
+ fi
+
+ AC_SUBST(LIBCXX)
+
+ # Setup Windows runtime dlls
+ if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
+ TOOLCHAIN_SETUP_VS_RUNTIME_DLLS
+ fi
+])
diff --git a/common/autoconf/lib-x11.m4 b/common/autoconf/lib-x11.m4
new file mode 100644
index 0000000..d4b878d
--- /dev/null
+++ b/common/autoconf/lib-x11.m4
@@ -0,0 +1,133 @@
+#
+# Copyright (c) 2011, 2015, 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.
+#
+
+################################################################################
+# Setup X11 Windows system
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_X11],
+[
+ if test "x$NEEDS_LIB_X11" = xfalse; then
+ if (test "x${with_x}" != x && test "x${with_x}" != xno); then
+ AC_MSG_WARN([X11 is not used, so --with-x is ignored])
+ fi
+ X_CFLAGS=
+ X_LIBS=
+ else
+
+ if test "x${with_x}" = xno; then
+ AC_MSG_ERROR([It is not possible to disable the use of X11. Remove the --without-x option.])
+ fi
+
+ if test "x${with_x}" != x && test "x${with_x}" != xyes; then
+ # The user has specified a X11 base directory. Use it for includes and
+ # libraries, unless explicitly overridden.
+ if test "x$x_includes" = xNONE; then
+ x_includes="${with_x}/include"
+ fi
+ if test "x$x_libraries" = xNONE; then
+ x_libraries="${with_x}/lib"
+ fi
+ else
+ # Check if the user has specified sysroot, but not --with-x, --x-includes or --x-libraries.
+ # Make a simple check for the libraries at the sysroot, and setup --x-includes and
+ # --x-libraries for the sysroot, if that seems to be correct.
+ if test "x$SYSROOT" != "x"; then
+ if test "x$x_includes" = xNONE; then
+ if test -f "$SYSROOT/usr/X11R6/include/X11/Xlib.h"; then
+ x_includes="$SYSROOT/usr/X11R6/include"
+ elif test -f "$SYSROOT/usr/include/X11/Xlib.h"; then
+ x_includes="$SYSROOT/usr/include"
+ fi
+ fi
+ if test "x$x_libraries" = xNONE; then
+ if test -f "$SYSROOT/usr/X11R6/lib/libX11.so"; then
+ x_libraries="$SYSROOT/usr/X11R6/lib"
+ elif test -f "$SYSROOT/usr/lib64/libX11.so" && test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ x_libraries="$SYSROOT/usr/lib64"
+ elif test -f "$SYSROOT/usr/lib/libX11.so"; then
+ x_libraries="$SYSROOT/usr/lib"
+ fi
+ fi
+ fi
+ fi
+
+ # Now let autoconf do it's magic
+ AC_PATH_X
+ AC_PATH_XTRA
+
+ # AC_PATH_XTRA creates X_LIBS and sometimes adds -R flags. When cross compiling
+ # this doesn't make sense so we remove it.
+ if test "x$COMPILE_TYPE" = xcross; then
+ X_LIBS=`$ECHO $X_LIBS | $SED 's/-R \{0,1\}[[^ ]]*//g'`
+ fi
+
+ if test "x$no_x" = xyes; then
+ HELP_MSG_MISSING_DEPENDENCY([x11])
+ AC_MSG_ERROR([Could not find X11 libraries. $HELP_MSG])
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ OPENWIN_HOME="/usr/openwin"
+ X_CFLAGS="-I$SYSROOT$OPENWIN_HOME/include -I$SYSROOT$OPENWIN_HOME/include/X11/extensions"
+ X_LIBS="-L$SYSROOT$OPENWIN_HOME/lib$OPENJDK_TARGET_CPU_ISADIR \
+ -R$OPENWIN_HOME/lib$OPENJDK_TARGET_CPU_ISADIR"
+ fi
+
+ AC_LANG_PUSH(C)
+ OLD_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $SYSROOT_CFLAGS $X_CFLAGS"
+
+ # Need to include Xlib.h and Xutil.h to avoid "present but cannot be compiled" warnings on Solaris 10
+ AC_CHECK_HEADERS([X11/extensions/shape.h X11/extensions/Xrender.h X11/extensions/XTest.h X11/Intrinsic.h],
+ [X11_HEADERS_OK=yes],
+ [X11_HEADERS_OK=no; break],
+ [
+ # include <X11/Xlib.h>
+ # include <X11/Xutil.h>
+ ]
+ )
+
+ if test "x$X11_HEADERS_OK" = xno; then
+ HELP_MSG_MISSING_DEPENDENCY([x11])
+ AC_MSG_ERROR([Could not find all X11 headers (shape.h Xrender.h XTest.h Intrinsic.h). $HELP_MSG])
+ fi
+
+ # If XLinearGradient isn't available in Xrender.h, signal that it needs to be
+ # defined in libawt_xawt.
+ AC_MSG_CHECKING([if XlinearGradient is defined in Xrender.h])
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],
+ [[XLinearGradient x;]])],
+ [AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])
+ X_CFLAGS="$X_CFLAGS -DSOLARIS10_NO_XRENDER_STRUCTS"])
+
+ CFLAGS="$OLD_CFLAGS"
+ AC_LANG_POP(C)
+ fi # NEEDS_LIB_X11
+
+ AC_SUBST(X_CFLAGS)
+ AC_SUBST(X_LIBS)
+])
diff --git a/common/autoconf/libraries.m4 b/common/autoconf/libraries.m4
new file mode 100644
index 0000000..bd5a40a
--- /dev/null
+++ b/common/autoconf/libraries.m4
@@ -0,0 +1,215 @@
+#
+# Copyright (c) 2011, 2016, 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.
+#
+
+# Major library component reside in separate files.
+m4_include([lib-alsa.m4])
+m4_include([lib-bundled.m4])
+m4_include([lib-cups.m4])
+m4_include([lib-ffi.m4])
+m4_include([lib-freetype.m4])
+m4_include([lib-std.m4])
+m4_include([lib-x11.m4])
+m4_include([lib-elf.m4])
+
+################################################################################
+# Determine which libraries are needed for this configuration
+################################################################################
+AC_DEFUN_ONCE([LIB_DETERMINE_DEPENDENCIES],
+[
+ # Check if X11 is needed
+ if test "x$OPENJDK_TARGET_OS" = xwindows || test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # No X11 support on windows or macosx
+ NEEDS_LIB_X11=false
+ else
+ # All other instances need X11, even if building headless only, libawt still
+ # needs X11 headers.
+ NEEDS_LIB_X11=true
+ fi
+
+ # Check if cups is needed
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ # Windows have a separate print system
+ NEEDS_LIB_CUPS=false
+ else
+ NEEDS_LIB_CUPS=true
+ fi
+
+ # A custom hook may have set this already
+ if test "x$NEEDS_LIB_FREETYPE" = "x"; then
+ NEEDS_LIB_FREETYPE=true
+ fi
+
+ # Check if alsa is needed
+ if test "x$OPENJDK_TARGET_OS" = xlinux; then
+ NEEDS_LIB_ALSA=true
+ else
+ NEEDS_LIB_ALSA=false
+ fi
+
+ # Check if ffi is needed
+ if HOTSPOT_CHECK_JVM_VARIANT(zero) || HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
+ NEEDS_LIB_FFI=true
+ else
+ NEEDS_LIB_FFI=false
+ fi
+])
+
+################################################################################
+# Parse library options, and setup needed libraries
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_LIBRARIES],
+[
+ LIB_SETUP_STD_LIBS
+ LIB_SETUP_X11
+ LIB_SETUP_CUPS
+ LIB_SETUP_FREETYPE
+ LIB_SETUP_ALSA
+ LIB_SETUP_LIBFFI
+ LIB_SETUP_LLVM
+ LIB_SETUP_BUNDLED_LIBS
+ LIB_SETUP_MISC_LIBS
+ LIB_SETUP_SOLARIS_STLPORT
+ LIB_SETUP_LIBELF
+])
+
+################################################################################
+# Setup llvm (Low-Level VM)
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_LLVM],
+[
+ if HOTSPOT_CHECK_JVM_VARIANT(zeroshark); then
+ AC_CHECK_PROG([LLVM_CONFIG], [llvm-config], [llvm-config])
+
+ if test "x$LLVM_CONFIG" != xllvm-config; then
+ AC_MSG_ERROR([llvm-config not found in $PATH.])
+ fi
+
+ llvm_components="jit mcjit engine nativecodegen native"
+ unset LLVM_CFLAGS
+ for flag in $("$LLVM_CONFIG" --cxxflags); do
+ if echo "${flag}" | grep -q '^-@<:@ID@:>@'; then
+ if test "${flag}" != "-D_DEBUG" ; then
+ if test "${LLVM_CFLAGS}" != "" ; then
+ LLVM_CFLAGS="${LLVM_CFLAGS} "
+ fi
+ LLVM_CFLAGS="${LLVM_CFLAGS}${flag}"
+ fi
+ fi
+ done
+ llvm_version=$("${LLVM_CONFIG}" --version | $SED 's/\.//; s/svn.*//')
+ LLVM_CFLAGS="${LLVM_CFLAGS} -DSHARK_LLVM_VERSION=${llvm_version}"
+
+ unset LLVM_LDFLAGS
+ for flag in $("${LLVM_CONFIG}" --ldflags); do
+ if echo "${flag}" | grep -q '^-L'; then
+ if test "${LLVM_LDFLAGS}" != ""; then
+ LLVM_LDFLAGS="${LLVM_LDFLAGS} "
+ fi
+ LLVM_LDFLAGS="${LLVM_LDFLAGS}${flag}"
+ fi
+ done
+
+ unset LLVM_LIBS
+ for flag in $("${LLVM_CONFIG}" --libs ${llvm_components}); do
+ if echo "${flag}" | grep -q '^-l'; then
+ if test "${LLVM_LIBS}" != ""; then
+ LLVM_LIBS="${LLVM_LIBS} "
+ fi
+ LLVM_LIBS="${LLVM_LIBS}${flag}"
+ fi
+ done
+
+ # Due to https://llvm.org/bugs/show_bug.cgi?id=16902, llvm does not
+ # always properly detect -ltinfo
+ LLVM_LIBS="${LLVM_LIBS} -ltinfo"
+
+ AC_SUBST(LLVM_CFLAGS)
+ AC_SUBST(LLVM_LDFLAGS)
+ AC_SUBST(LLVM_LIBS)
+ fi
+])
+
+################################################################################
+# Setup various libraries, typically small system libraries
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_MISC_LIBS],
+[
+ # Setup libm (the maths library)
+ if test "x$OPENJDK_TARGET_OS" != "xwindows"; then
+ AC_CHECK_LIB(m, cos, [], [
+ AC_MSG_NOTICE([Maths library was not found])
+ ])
+ LIBM="-lm"
+ else
+ LIBM=""
+ fi
+ AC_SUBST(LIBM)
+
+ # Setup libdl (for dynamic library loading)
+ save_LIBS="$LIBS"
+ LIBS=""
+ AC_CHECK_LIB(dl, dlopen)
+ LIBDL="$LIBS"
+ AC_SUBST(LIBDL)
+ LIBS="$save_LIBS"
+
+ # Deprecated libraries, keep the flags for backwards compatibility
+ if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
+ BASIC_DEPRECATED_ARG_WITH([dxsdk])
+ BASIC_DEPRECATED_ARG_WITH([dxsdk-lib])
+ BASIC_DEPRECATED_ARG_WITH([dxsdk-include])
+ fi
+
+ # Control if libzip can use mmap. Available for purposes of overriding.
+ LIBZIP_CAN_USE_MMAP=true
+ AC_SUBST(LIBZIP_CAN_USE_MMAP)
+])
+
+################################################################################
+# libstlport.so.1 is needed for running gtest on Solaris. Find it to
+# redistribute it in the test image.
+################################################################################
+AC_DEFUN_ONCE([LIB_SETUP_SOLARIS_STLPORT],
+[
+ if test "$OPENJDK_TARGET_OS" = "solaris" && test "x$BUILD_GTEST" = "xtrue"; then
+ # Find the root of the Solaris Studio installation from the compiler path
+ SOLARIS_STUDIO_DIR="$(dirname $CC)/.."
+ STLPORT_LIB="$SOLARIS_STUDIO_DIR/lib/stlport4$OPENJDK_TARGET_CPU_ISADIR/libstlport.so.1"
+ AC_MSG_CHECKING([for libstlport.so.1])
+ if ! test -f "$STLPORT_LIB" && test "x$OPENJDK_TARGET_CPU_ISADIR" = "x/sparcv9"; then
+ # SS12u3 has libstlport under 'stlport4/v9' instead of 'stlport4/sparcv9'
+ STLPORT_LIB="$SOLARIS_STUDIO_DIR/lib/stlport4/v9/libstlport.so.1"
+ fi
+ if test -f "$STLPORT_LIB"; then
+ AC_MSG_RESULT([yes, $STLPORT_LIB])
+ BASIC_FIXUP_PATH([STLPORT_LIB])
+ else
+ AC_MSG_RESULT([no, not found at $STLPORT_LIB])
+ AC_MSG_ERROR([Failed to find libstlport.so.1, cannot build Hotspot gtests])
+ fi
+ AC_SUBST(STLPORT_LIB)
+ fi
+])
+
diff --git a/common/autoconf/platform.m4 b/common/autoconf/platform.m4
new file mode 100644
index 0000000..0dbf74c
--- /dev/null
+++ b/common/autoconf/platform.m4
@@ -0,0 +1,631 @@
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# 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=x86_64
+ VAR_CPU_ARCH=x86
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=little
+ ;;
+ i?86)
+ VAR_CPU=x86
+ VAR_CPU_ARCH=x86
+ VAR_CPU_BITS=32
+ VAR_CPU_ENDIAN=little
+ ;;
+ arm*)
+ VAR_CPU=arm
+ VAR_CPU_ARCH=arm
+ VAR_CPU_BITS=32
+ VAR_CPU_ENDIAN=little
+ ;;
+ aarch64)
+ VAR_CPU=aarch64
+ VAR_CPU_ARCH=aarch64
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=little
+ ;;
+ powerpc)
+ VAR_CPU=ppc
+ VAR_CPU_ARCH=ppc
+ VAR_CPU_BITS=32
+ VAR_CPU_ENDIAN=big
+ ;;
+ powerpc64)
+ VAR_CPU=ppc64
+ VAR_CPU_ARCH=ppc
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=big
+ ;;
+ powerpc64le)
+ VAR_CPU=ppc64le
+ VAR_CPU_ARCH=ppc
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=little
+ ;;
+ s390)
+ VAR_CPU=s390
+ VAR_CPU_ARCH=s390
+ VAR_CPU_BITS=32
+ VAR_CPU_ENDIAN=big
+ ;;
+ s390x)
+ VAR_CPU=s390x
+ VAR_CPU_ARCH=s390
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=big
+ ;;
+ sparc)
+ VAR_CPU=sparc
+ VAR_CPU_ARCH=sparc
+ VAR_CPU_BITS=32
+ VAR_CPU_ENDIAN=big
+ ;;
+ sparcv9|sparc64)
+ VAR_CPU=sparcv9
+ VAR_CPU_ARCH=sparc
+ VAR_CPU_BITS=64
+ VAR_CPU_ENDIAN=big
+ ;;
+ *)
+ AC_MSG_ERROR([unsupported cpu $1])
+ ;;
+ esac
+])
+
+# Support macro for PLATFORM_EXTRACT_TARGET_AND_BUILD.
+# Converts autoconf style OS name to OpenJDK style, into
+# VAR_OS, VAR_OS_TYPE and VAR_OS_ENV.
+AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_OS],
+[
+ case "$1" in
+ *linux*)
+ VAR_OS=linux
+ VAR_OS_TYPE=unix
+ ;;
+ *solaris*)
+ VAR_OS=solaris
+ VAR_OS_TYPE=unix
+ ;;
+ *darwin*)
+ VAR_OS=macosx
+ VAR_OS_TYPE=unix
+ ;;
+ *bsd*)
+ VAR_OS=bsd
+ VAR_OS_TYPE=unix
+ ;;
+ *cygwin*)
+ VAR_OS=windows
+ VAR_OS_ENV=windows.cygwin
+ ;;
+ *mingw*)
+ VAR_OS=windows
+ VAR_OS_ENV=windows.msys
+ ;;
+ *aix*)
+ VAR_OS=aix
+ VAR_OS_TYPE=unix
+ ;;
+ *)
+ AC_MSG_ERROR([unsupported operating system $1])
+ ;;
+ 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($build_os)
+ PLATFORM_EXTRACT_VARS_FROM_CPU($build_cpu)
+ # ..and setup our own variables. (Do this explicitly to facilitate searching)
+ OPENJDK_BUILD_OS="$VAR_OS"
+ if test "x$VAR_OS_TYPE" != x; then
+ OPENJDK_BUILD_OS_TYPE="$VAR_OS_TYPE"
+ else
+ OPENJDK_BUILD_OS_TYPE="$VAR_OS"
+ fi
+ if test "x$VAR_OS_ENV" != x; then
+ OPENJDK_BUILD_OS_ENV="$VAR_OS_ENV"
+ else
+ OPENJDK_BUILD_OS_ENV="$VAR_OS"
+ fi
+ 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_TYPE)
+ AC_SUBST(OPENJDK_BUILD_OS_ENV)
+ AC_SUBST(OPENJDK_BUILD_CPU)
+ AC_SUBST(OPENJDK_BUILD_CPU_ARCH)
+ AC_SUBST(OPENJDK_BUILD_CPU_BITS)
+ AC_SUBST(OPENJDK_BUILD_CPU_ENDIAN)
+
+ AC_MSG_CHECKING([openjdk-build os-cpu])
+ AC_MSG_RESULT([$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU])
+
+ # 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 explicitly to facilitate searching)
+ OPENJDK_TARGET_OS="$VAR_OS"
+ if test "x$VAR_OS_TYPE" != x; then
+ OPENJDK_TARGET_OS_TYPE="$VAR_OS_TYPE"
+ else
+ OPENJDK_TARGET_OS_TYPE="$VAR_OS"
+ fi
+ if test "x$VAR_OS_ENV" != x; then
+ OPENJDK_TARGET_OS_ENV="$VAR_OS_ENV"
+ else
+ OPENJDK_TARGET_OS_ENV="$VAR_OS"
+ fi
+ 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_TYPE)
+ AC_SUBST(OPENJDK_TARGET_OS_ENV)
+ AC_SUBST(OPENJDK_TARGET_CPU)
+ AC_SUBST(OPENJDK_TARGET_CPU_ARCH)
+ AC_SUBST(OPENJDK_TARGET_CPU_BITS)
+ AC_SUBST(OPENJDK_TARGET_CPU_ENDIAN)
+
+ AC_MSG_CHECKING([openjdk-target os-cpu])
+ AC_MSG_RESULT([$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU])
+])
+
+# 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([compilation type])
+ AC_MSG_RESULT([$COMPILE_TYPE])
+])
+
+# Setup the legacy variables, for controlling the old makefiles.
+#
+AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS],
+[
+ PLATFORM_SETUP_LEGACY_VARS_HELPER([TARGET])
+ PLATFORM_SETUP_LEGACY_VARS_HELPER([BUILD])
+])
+
+# $1 - Either TARGET or BUILD to setup the variables for.
+AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
+[
+ # Also store the legacy naming of the cpu.
+ # Ie i586 and amd64 instead of x86 and x86_64
+ OPENJDK_$1_CPU_LEGACY="$OPENJDK_$1_CPU"
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ OPENJDK_$1_CPU_LEGACY="i586"
+ elif test "x$OPENJDK_$1_OS" != xmacosx && test "x$OPENJDK_$1_CPU" = xx86_64; then
+ # On all platforms except MacOSX replace x86_64 with amd64.
+ OPENJDK_$1_CPU_LEGACY="amd64"
+ fi
+ AC_SUBST(OPENJDK_$1_CPU_LEGACY)
+
+ # And the second legacy naming of the cpu.
+ # Ie i386 and amd64 instead of x86 and x86_64.
+ OPENJDK_$1_CPU_LEGACY_LIB="$OPENJDK_$1_CPU"
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ OPENJDK_$1_CPU_LEGACY_LIB="i386"
+ elif test "x$OPENJDK_$1_CPU" = xx86_64; then
+ OPENJDK_$1_CPU_LEGACY_LIB="amd64"
+ fi
+ AC_SUBST(OPENJDK_$1_CPU_LEGACY_LIB)
+
+ # OPENJDK_$1_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_$1_CPU_ISADIR}/libexample.so
+ OPENJDK_$1_CPU_ISADIR=""
+ if test "x$OPENJDK_$1_OS" = xsolaris; then
+ if test "x$OPENJDK_$1_CPU" = xx86_64; then
+ OPENJDK_$1_CPU_ISADIR="/amd64"
+ elif test "x$OPENJDK_$1_CPU" = xsparcv9; then
+ OPENJDK_$1_CPU_ISADIR="/sparcv9"
+ fi
+ fi
+ AC_SUBST(OPENJDK_$1_CPU_ISADIR)
+
+ # Setup OPENJDK_$1_CPU_OSARCH, which is used to set the os.arch Java system property
+ OPENJDK_$1_CPU_OSARCH="$OPENJDK_$1_CPU"
+ if test "x$OPENJDK_$1_OS" = xlinux && test "x$OPENJDK_$1_CPU" = xx86; then
+ # On linux only, we replace x86 with i386.
+ OPENJDK_$1_CPU_OSARCH="i386"
+ elif test "x$OPENJDK_$1_OS" != xmacosx && test "x$OPENJDK_$1_CPU" = xx86_64; then
+ # On all platforms except macosx, we replace x86_64 with amd64.
+ OPENJDK_$1_CPU_OSARCH="amd64"
+ fi
+ AC_SUBST(OPENJDK_$1_CPU_OSARCH)
+
+ OPENJDK_$1_CPU_JLI="$OPENJDK_$1_CPU"
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ OPENJDK_$1_CPU_JLI="i386"
+ elif test "x$OPENJDK_$1_OS" != xmacosx && test "x$OPENJDK_$1_CPU" = xx86_64; then
+ # On all platforms except macosx, we replace x86_64 with amd64.
+ OPENJDK_$1_CPU_JLI="amd64"
+ fi
+
+ if test "x$OPENJDK_$1_OS" = xmacosx; then
+ OPENJDK_$1_OS_EXPORT_DIR=macosx
+ else
+ OPENJDK_$1_OS_EXPORT_DIR=${OPENJDK_$1_OS_TYPE}
+ fi
+ AC_SUBST(OPENJDK_$1_OS_EXPORT_DIR)
+
+ # The new version string in JDK 9 also defined new naming of OS and ARCH for bundles
+ # Macosx is osx and x86_64 is x64
+ if test "x$OPENJDK_$1_OS" = xmacosx; then
+ OPENJDK_$1_OS_BUNDLE="osx"
+ else
+ OPENJDK_$1_OS_BUNDLE="$OPENJDK_TARGET_OS"
+ fi
+ if test "x$OPENJDK_$1_CPU" = xx86_64; then
+ OPENJDK_$1_CPU_BUNDLE="x64"
+ else
+ OPENJDK_$1_CPU_BUNDLE="$OPENJDK_$1_CPU"
+ fi
+ OPENJDK_$1_BUNDLE_PLATFORM="${OPENJDK_$1_OS_BUNDLE}-${OPENJDK_$1_CPU_BUNDLE}"
+ AC_SUBST(OPENJDK_$1_BUNDLE_PLATFORM)
+
+ if test "x$OPENJDK_$1_CPU_BITS" = x64; then
+ # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in
+ # unpack200.exe. This variable is used in
+ # FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER.
+ if test "x$OPENJDK_$1_OS" = xlinux || test "x$OPENJDK_$1_OS" = xmacosx; then
+ OPENJDK_$1_ADD_LP64="-D_LP64=1"
+ fi
+ fi
+
+ if test "x$COMPILE_TYPE" = "xcross"; then
+ # FIXME: ... or should this include reduced builds..?
+ DEFINE_CROSS_COMPILE_ARCH="CROSS_COMPILE_ARCH:=$OPENJDK_$1_CPU_LEGACY"
+ else
+ DEFINE_CROSS_COMPILE_ARCH=""
+ fi
+ AC_SUBST(DEFINE_CROSS_COMPILE_ARCH)
+
+ # Convert openjdk platform names to hotspot names
+
+ HOTSPOT_$1_OS=${OPENJDK_$1_OS}
+ if test "x$OPENJDK_$1_OS" = xmacosx; then
+ HOTSPOT_$1_OS=bsd
+ fi
+ AC_SUBST(HOTSPOT_$1_OS)
+
+ HOTSPOT_$1_OS_TYPE=${OPENJDK_$1_OS_TYPE}
+ if test "x$OPENJDK_$1_OS_TYPE" = xunix; then
+ HOTSPOT_$1_OS_TYPE=posix
+ fi
+ AC_SUBST(HOTSPOT_$1_OS_TYPE)
+
+ HOTSPOT_$1_CPU=${OPENJDK_$1_CPU}
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ HOTSPOT_$1_CPU=x86_32
+ elif test "x$OPENJDK_$1_CPU" = xsparcv9; then
+ HOTSPOT_$1_CPU=sparc
+ elif test "x$OPENJDK_$1_CPU" = xppc64; then
+ HOTSPOT_$1_CPU=ppc_64
+ elif test "x$OPENJDK_$1_CPU" = xppc64le; then
+ HOTSPOT_$1_CPU=ppc_64
+ fi
+ AC_SUBST(HOTSPOT_$1_CPU)
+
+ # This is identical with OPENJDK_*, but define anyway for consistency.
+ HOTSPOT_$1_CPU_ARCH=${OPENJDK_$1_CPU_ARCH}
+ AC_SUBST(HOTSPOT_$1_CPU_ARCH)
+
+ # Setup HOTSPOT_$1_CPU_DEFINE
+ if test "x$OPENJDK_$1_CPU" = xx86; then
+ HOTSPOT_$1_CPU_DEFINE=IA32
+ elif test "x$OPENJDK_$1_CPU" = xx86_64; then
+ HOTSPOT_$1_CPU_DEFINE=AMD64
+ elif test "x$OPENJDK_$1_CPU" = xsparcv9; then
+ HOTSPOT_$1_CPU_DEFINE=SPARC
+ elif test "x$OPENJDK_$1_CPU" = xaarch64; then
+ HOTSPOT_$1_CPU_DEFINE=AARCH64
+ elif test "x$OPENJDK_$1_CPU" = xppc64; then
+ HOTSPOT_$1_CPU_DEFINE=PPC64
+ elif test "x$OPENJDK_$1_CPU" = xppc64le; then
+ HOTSPOT_$1_CPU_DEFINE=PPC64
+
+ # The cpu defines below are for zero, we don't support them directly.
+ elif test "x$OPENJDK_$1_CPU" = xsparc; then
+ HOTSPOT_$1_CPU_DEFINE=SPARC
+ elif test "x$OPENJDK_$1_CPU" = xppc; then
+ HOTSPOT_$1_CPU_DEFINE=PPC32
+ elif test "x$OPENJDK_$1_CPU" = xs390; then
+ HOTSPOT_$1_CPU_DEFINE=S390
+ elif test "x$OPENJDK_$1_CPU" = xs390x; then
+ HOTSPOT_$1_CPU_DEFINE=S390
+ elif test "x$OPENJDK_$1_CPU" != x; then
+ HOTSPOT_$1_CPU_DEFINE=$(echo $OPENJDK_$1_CPU | tr a-z A-Z)
+ fi
+ AC_SUBST(HOTSPOT_$1_CPU_DEFINE)
+
+])
+
+AC_DEFUN([PLATFORM_SET_RELEASE_FILE_OS_VALUES],
+[
+ if test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
+ RELEASE_FILE_OS_NAME=SunOS
+ fi
+ if test "x$OPENJDK_TARGET_OS" = "xlinux"; then
+ RELEASE_FILE_OS_NAME=Linux
+ fi
+ if test "x$OPENJDK_TARGET_OS" = "xwindows"; then
+ RELEASE_FILE_OS_NAME=Windows
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ RELEASE_FILE_OS_NAME="Darwin"
+ fi
+ if test "x$OPENJDK_TARGET_OS" = "xaix"; then
+ RELEASE_FILE_OS_NAME="AIX"
+ fi
+ RELEASE_FILE_OS_ARCH=${OPENJDK_TARGET_CPU}
+
+ AC_SUBST(RELEASE_FILE_OS_NAME)
+ AC_SUBST(RELEASE_FILE_OS_ARCH)
+])
+
+AC_DEFUN([PLATFORM_SET_MODULE_TARGET_OS_VALUES],
+[
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ OPENJDK_MODULE_TARGET_OS_NAME="macos"
+ else
+ OPENJDK_MODULE_TARGET_OS_NAME="$OPENJDK_TARGET_OS"
+ fi
+
+ if test "x$OPENJDK_TARGET_CPU" = xx86_64; then
+ OPENJDK_MODULE_TARGET_OS_ARCH="amd64"
+ else
+ OPENJDK_MODULE_TARGET_OS_ARCH="$OPENJDK_TARGET_CPU"
+ fi
+
+ OPENJDK_MODULE_TARGET_PLATFORM="${OPENJDK_MODULE_TARGET_OS_NAME}-${OPENJDK_MODULE_TARGET_OS_ARCH}"
+ AC_SUBST(OPENJDK_MODULE_TARGET_PLATFORM)
+])
+
+#%%% Build and target systems %%%
+AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_BUILD_AND_TARGET],
+[
+ # Figure out the build and target systems. # Note that in autoconf terminology, "build" is obvious, but "target"
+ # is confusing; it assumes you are cross-compiling a cross-compiler (!) and "target" is thus the target of the
+ # product you're building. The target of this build is called "host". Since this is confusing to most people, we
+ # have not adopted that system, but use "target" as the platform we are building for. In some places though we need
+ # to use the configure naming style.
+ AC_CANONICAL_BUILD
+ AC_CANONICAL_HOST
+ AC_CANONICAL_TARGET
+
+ PLATFORM_EXTRACT_TARGET_AND_BUILD
+ PLATFORM_SETUP_TARGET_CPU_BITS
+ PLATFORM_SET_MODULE_TARGET_OS_VALUES
+ PLATFORM_SET_RELEASE_FILE_OS_VALUES
+ PLATFORM_SETUP_LEGACY_VARS
+])
+
+AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_BUILD_OS_VERSION],
+[
+ ###############################################################################
+
+ # Note that this is the build platform OS version!
+
+ OS_VERSION="`uname -r | ${SED} 's!\.! !g' | ${SED} 's!-! !g'`"
+ OS_VERSION_MAJOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 1 -d ' '`"
+ OS_VERSION_MINOR="`${ECHO} ${OS_VERSION} | ${CUT} -f 2 -d ' '`"
+ OS_VERSION_MICRO="`${ECHO} ${OS_VERSION} | ${CUT} -f 3 -d ' '`"
+ AC_SUBST(OS_VERSION_MAJOR)
+ AC_SUBST(OS_VERSION_MINOR)
+ AC_SUBST(OS_VERSION_MICRO)
+])
+
+# Support macro for PLATFORM_SETUP_OPENJDK_TARGET_BITS.
+# Add -mX to various FLAGS variables.
+AC_DEFUN([PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS],
+[
+ # When we add flags to the "official" CFLAGS etc, we need to
+ # keep track of these additions in ADDED_CFLAGS etc. These
+ # will later be checked to make sure only controlled additions
+ # have been made to CFLAGS etc.
+ ADDED_CFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ ADDED_CXXFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ ADDED_LDFLAGS=" ${COMPILER_TARGET_BITS_FLAG}${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}"
+
+ JVM_CFLAGS="$JVM_CFLAGS $ADDED_CFLAGS"
+ JVM_LDFLAGS="$JVM_LDFLAGS $ADDED_LDFLAGS"
+ JVM_ASFLAGS="$JVM_ASFLAGS $ADDED_CFLAGS"
+])
+
+AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_BITS],
+[
+ ###############################################################################
+ #
+ # Now we check if libjvm.so will use 32 or 64 bit pointers for the C/C++ code.
+ # (The JVM can use 32 or 64 bit Java pointers but that decision
+ # is made at runtime.)
+ #
+
+ if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xaix; then
+ # Always specify -m flag on Solaris
+ # And -q on AIX because otherwise the compiler produces 32-bit objects by default
+ PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS
+ elif test "x$COMPILE_TYPE" = xreduced; then
+ if test "x$OPENJDK_TARGET_OS_TYPE" = xunix; then
+ # Specify -m if running reduced on unix platforms
+ PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS
+ fi
+ fi
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ JVM_CFLAGS="$JVM_CFLAGS ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ JVM_LDFLAGS="$JVM_LDFLAGS ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ JVM_ASFLAGS="$JVM_ASFLAGS ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}"
+ 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
+ HELP_MSG_MISSING_DEPENDENCY([reduced])
+ AC_MSG_NOTICE([You are doing a reduced build. Check that you have 32-bit libraries installed. $HELP_MSG])
+ 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])
+
+ # AC_CHECK_SIZEOF defines 'ac_cv_sizeof_int_p' to hold the number of bytes used by an 'int*'
+ if test "x$ac_cv_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
+ TESTED_TARGET_CPU_BITS=`expr 8 \* $ac_cv_sizeof_int_p`
+
+ if test "x$TESTED_TARGET_CPU_BITS" != "x$OPENJDK_TARGET_CPU_BITS"; then
+ # This situation may happen on 64-bit platforms where the compiler by default only generates 32-bit objects
+ # Let's try to implicitely set the compilers target architecture and retry the test
+ AC_MSG_NOTICE([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).])
+ AC_MSG_NOTICE([Retrying with platforms compiler target bits flag to ${COMPILER_TARGET_BITS_FLAG}${OPENJDK_TARGET_CPU_BITS}])
+ PLATFORM_SET_COMPILER_TARGET_BITS_FLAGS
+
+ # We have to unset 'ac_cv_sizeof_int_p' first, otherwise AC_CHECK_SIZEOF will use the previously cached value!
+ unset ac_cv_sizeof_int_p
+ # And we have to undef the definition of SIZEOF_INT_P in confdefs.h by the previous invocation of AC_CHECK_SIZEOF
+ cat >>confdefs.h <<_ACEOF
+#undef SIZEOF_INT_P
+_ACEOF
+
+ AC_CHECK_SIZEOF([int *], [1111])
+
+ TESTED_TARGET_CPU_BITS=`expr 8 \* $ac_cv_sizeof_int_p`
+
+ if test "x$TESTED_TARGET_CPU_BITS" != "x$OPENJDK_TARGET_CPU_BITS"; then
+ AC_MSG_NOTICE([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)])
+ if test "x$COMPILE_TYPE" = xreduced; then
+ HELP_MSG_MISSING_DEPENDENCY([reduced])
+ AC_MSG_NOTICE([You are doing a reduced build. Check that you have 32-bit libraries installed. $HELP_MSG])
+ 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.])
+ fi
+ fi
+ fi
+
+ AC_MSG_CHECKING([for target address size])
+ AC_MSG_RESULT([$OPENJDK_TARGET_CPU_BITS bits])
+])
+
+AC_DEFUN_ONCE([PLATFORM_SETUP_OPENJDK_TARGET_ENDIANNESS],
+[
+ ###############################################################################
+ #
+ # Is the target little of big endian?
+ #
+ AC_C_BIGENDIAN([ENDIAN="big"],[ENDIAN="little"],[ENDIAN="unknown"],[ENDIAN="universal_endianness"])
+
+ 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" != "x$OPENJDK_TARGET_CPU_ENDIAN"; then
+ 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
+])
diff --git a/common/autoconf/source-dirs.m4 b/common/autoconf/source-dirs.m4
new file mode 100644
index 0000000..95053e7
--- /dev/null
+++ b/common/autoconf/source-dirs.m4
@@ -0,0 +1,129 @@
+#
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+AC_DEFUN_ONCE([SRCDIRS_SETUP_TOPDIRS],
+[
+ # Where are the sources.
+ LANGTOOLS_TOPDIR="$SRC_ROOT/langtools"
+ CORBA_TOPDIR="$SRC_ROOT/corba"
+ JAXP_TOPDIR="$SRC_ROOT/jaxp"
+ JAXWS_TOPDIR="$SRC_ROOT/jaxws"
+ HOTSPOT_TOPDIR="$SRC_ROOT/hotspot"
+ NASHORN_TOPDIR="$SRC_ROOT/nashorn"
+ JDK_TOPDIR="$SRC_ROOT/jdk"
+ AC_SUBST(LANGTOOLS_TOPDIR)
+ AC_SUBST(CORBA_TOPDIR)
+ AC_SUBST(JAXP_TOPDIR)
+ AC_SUBST(JAXWS_TOPDIR)
+ AC_SUBST(HOTSPOT_TOPDIR)
+ AC_SUBST(NASHORN_TOPDIR)
+ AC_SUBST(JDK_TOPDIR)
+])
+
+AC_DEFUN_ONCE([SRCDIRS_SETUP_ALTERNATIVE_TOPDIRS],
+[
+ # This feature is no longer supported.
+
+ BASIC_DEPRECATED_ARG_WITH(add-source-root)
+ BASIC_DEPRECATED_ARG_WITH(override-source-root)
+ BASIC_DEPRECATED_ARG_WITH(adds-and-overrides)
+ BASIC_DEPRECATED_ARG_WITH(override-langtools)
+ BASIC_DEPRECATED_ARG_WITH(override-corba)
+ BASIC_DEPRECATED_ARG_WITH(override-jaxp)
+ BASIC_DEPRECATED_ARG_WITH(override-jaxws)
+ BASIC_DEPRECATED_ARG_WITH(override-hotspot)
+ BASIC_DEPRECATED_ARG_WITH(override-nashorn)
+ BASIC_DEPRECATED_ARG_WITH(override-jdk)
+])
+
+AC_DEFUN_ONCE([SRCDIRS_SETUP_OUTPUT_DIRS],
+[
+ BUILD_OUTPUT="$OUTPUT_ROOT"
+ AC_SUBST(BUILD_OUTPUT)
+ JDK_OUTPUTDIR="$OUTPUT_ROOT/jdk"
+
+ BASIC_DEPRECATED_ARG_WITH(import_hotspot)
+])
+
+################################################################################
+# Define a mechanism for importing extra prebuilt modules
+#
+
+AC_DEFUN_ONCE([SRCDIRS_SETUP_IMPORT_MODULES],
+[
+ AC_ARG_WITH(import-modules, [AS_HELP_STRING([--with-import-modules],
+ [import a set of prebuilt modules either as a zip file or an exploded directory])])
+
+ if test "x$with_import_modules" != x \
+ && test "x$with_import_modules" != "xno"; then
+ if test -d "$with_import_modules"; then
+ IMPORT_MODULES_TOPDIR="$with_import_modules"
+ BASIC_FIXUP_PATH([IMPORT_MODULES_TOPDIR])
+ elif test -e "$with_import_modules"; then
+ IMPORT_MODULES_TOPDIR="$CONFIGURESUPPORT_OUTPUTDIR/import-modules"
+ $RM -rf "$IMPORT_MODULES_TOPDIR"
+ $MKDIR -p "$IMPORT_MODULES_TOPDIR"
+ if ! $UNZIP -q "$with_import_modules" -d "$IMPORT_MODULES_TOPDIR"; then
+ AC_MSG_ERROR([--with-import-modules="$with_import_modules" must point to a dir or a zip file])
+ fi
+ else
+ AC_MSG_ERROR([--with-import-modules="$with_import_modules" must point to a dir or a zip file])
+ fi
+ fi
+
+ if test -d "$IMPORT_MODULES_TOPDIR/modules"; then
+ IMPORT_MODULES_CLASSES="$IMPORT_MODULES_TOPDIR/modules"
+ fi
+ if test -d "$IMPORT_MODULES_TOPDIR/modules_cmds"; then
+ IMPORT_MODULES_CMDS="$IMPORT_MODULES_TOPDIR/modules_cmds"
+ fi
+ if test -d "$IMPORT_MODULES_TOPDIR/modules_libs"; then
+ IMPORT_MODULES_LIBS="$IMPORT_MODULES_TOPDIR/modules_libs"
+ fi
+ if test -d "$IMPORT_MODULES_TOPDIR/modules_conf"; then
+ IMPORT_MODULES_CONF="$IMPORT_MODULES_TOPDIR/modules_conf"
+ fi
+ if test -d "$IMPORT_MODULES_TOPDIR/modules_legal"; then
+ IMPORT_MODULES_LEGAL="$IMPORT_MODULES_TOPDIR/modules_legal"
+ fi
+ if test -d "$IMPORT_MODULES_TOPDIR/modules_man"; then
+ IMPORT_MODULES_MAN="$IMPORT_MODULES_TOPDIR/modules_man"
+ fi
+ if test -d "$IMPORT_MODULES_TOPDIR/modules_src"; then
+ IMPORT_MODULES_SRC="$IMPORT_MODULES_TOPDIR/modules_src"
+ fi
+ if test -d "$IMPORT_MODULES_TOPDIR/make"; then
+ IMPORT_MODULES_MAKE="$IMPORT_MODULES_TOPDIR/make"
+ fi
+
+ AC_SUBST(IMPORT_MODULES_CLASSES)
+ AC_SUBST(IMPORT_MODULES_CMDS)
+ AC_SUBST(IMPORT_MODULES_LIBS)
+ AC_SUBST(IMPORT_MODULES_CONF)
+ AC_SUBST(IMPORT_MODULES_LEGAL)
+ AC_SUBST(IMPORT_MODULES_MAN)
+ AC_SUBST(IMPORT_MODULES_SRC)
+ AC_SUBST(IMPORT_MODULES_MAKE)
+])
diff --git a/common/autoconf/spec.gmk.in b/common/autoconf/spec.gmk.in
new file mode 100644
index 0000000..877ede9
--- /dev/null
+++ b/common/autoconf/spec.gmk.in
@@ -0,0 +1,869 @@
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# 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@'
+
+# The command line given to configure.
+CONFIGURE_COMMAND_LINE:=@CONFIGURE_COMMAND_LINE@
+
+# A self-referential reference to this file.
+SPEC:=@SPEC@
+
+# SPACE and COMMA are defined in MakeBase.gmk, but they are also used in
+# some definitions here, and are needed if MakeBase.gmk is not included before
+# this file.
+X:=
+SPACE:=$(X) $(X)
+COMMA:=,
+
+# What make to use for main processing, after bootstrapping top-level Makefile.
+MAKE := @MAKE@
+
+# The default make arguments
+MAKE_ARGS = $(MAKE_LOG_FLAGS) -r -R -I $(TOPDIR)/make/common SPEC=$(SPEC) \
+ MAKE_LOG_FLAGS="$(MAKE_LOG_FLAGS)" LOG_LEVEL=$(LOG_LEVEL)
+
+OUTPUT_SYNC_SUPPORTED:=@OUTPUT_SYNC_SUPPORTED@
+OUTPUT_SYNC:=@OUTPUT_SYNC@
+
+# Override the shell with bash
+BASH:=@BASH@
+BASH_ARGS:=@BASH_ARGS@
+SHELL:=$(BASH) $(BASH_ARGS)
+
+# The "human readable" name of this configuration
+CONF_NAME:=@CONF_NAME@
+
+# The built jdk will run in this target system.
+OPENJDK_TARGET_OS:=@OPENJDK_TARGET_OS@
+OPENJDK_TARGET_OS_TYPE:=@OPENJDK_TARGET_OS_TYPE@
+OPENJDK_TARGET_OS_ENV:=@OPENJDK_TARGET_OS_ENV@
+
+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@
+
+COMPILE_TYPE:=@COMPILE_TYPE@
+
+# Legacy support
+OPENJDK_TARGET_CPU_ISADIR:=@OPENJDK_TARGET_CPU_ISADIR@
+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_OS_EXPORT_DIR:=@OPENJDK_TARGET_OS_EXPORT_DIR@
+
+HOTSPOT_TARGET_OS := @HOTSPOT_TARGET_OS@
+HOTSPOT_TARGET_OS_TYPE := @HOTSPOT_TARGET_OS_TYPE@
+
+HOTSPOT_TARGET_CPU := @HOTSPOT_TARGET_CPU@
+HOTSPOT_TARGET_CPU_ARCH := @HOTSPOT_TARGET_CPU_ARCH@
+HOTSPOT_TARGET_CPU_DEFINE := @HOTSPOT_TARGET_CPU_DEFINE@
+
+OPENJDK_TARGET_BUNDLE_PLATFORM:=@OPENJDK_TARGET_BUNDLE_PLATFORM@
+JDK_ARCH_ABI_PROP_NAME := @JDK_ARCH_ABI_PROP_NAME@
+
+# We are building on this build system.
+# When not cross-compiling, it is the same as the target.
+OPENJDK_BUILD_OS:=@OPENJDK_BUILD_OS@
+OPENJDK_BUILD_OS_TYPE:=@OPENJDK_BUILD_OS_TYPE@
+OPENJDK_BUILD_OS_ENV:=@OPENJDK_BUILD_OS_ENV@
+
+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@
+
+# Target platform value in ModuleTarget class file attribute.
+OPENJDK_MODULE_TARGET_PLATFORM:=@OPENJDK_MODULE_TARGET_PLATFORM@
+
+# OS_* properties in release file
+RELEASE_FILE_OS_NAME:=@RELEASE_FILE_OS_NAME@
+RELEASE_FILE_OS_ARCH:=@RELEASE_FILE_OS_ARCH@
+
+LIBM:=@LIBM@
+LIBDL:=@LIBDL@
+
+# colon or semicolon
+PATH_SEP:=@PATH_SEP@
+
+# Save the original path before replacing it with the Visual Studio tools
+ORIGINAL_PATH:=@ORIGINAL_PATH@
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ # On Windows, the Visual Studio toolchain needs the PATH to be adjusted
+ # to include Visual Studio tools (this needs to be in cygwin/msys style).
+ export PATH:=@VS_PATH@
+endif
+
+SYSROOT_CFLAGS := @SYSROOT_CFLAGS@
+SYSROOT_LDFLAGS := @SYSROOT_LDFLAGS@
+
+# The top-level directory of the forest (SRC_ROOT is a traditional alias)
+TOPDIR:=@TOPDIR@
+# These two versions of TOPDIR are used in string comparisons
+ORIGINAL_TOPDIR:=@ORIGINAL_TOPDIR@
+CANONICAL_TOPDIR:=@CANONICAL_TOPDIR@
+SRC_ROOT:=@TOPDIR@
+
+OUTPUT_ROOT:=@OUTPUT_ROOT@
+JDK_TOPDIR:=@JDK_TOPDIR@
+LANGTOOLS_TOPDIR:=@LANGTOOLS_TOPDIR@
+CORBA_TOPDIR:=@CORBA_TOPDIR@
+JAXP_TOPDIR:=@JAXP_TOPDIR@
+JAXWS_TOPDIR:=@JAXWS_TOPDIR@
+HOTSPOT_TOPDIR:=@HOTSPOT_TOPDIR@
+NASHORN_TOPDIR:=@NASHORN_TOPDIR@
+
+IMPORT_MODULES_CLASSES:=@IMPORT_MODULES_CLASSES@
+IMPORT_MODULES_CMDS:=@IMPORT_MODULES_CMDS@
+IMPORT_MODULES_LIBS:=@IMPORT_MODULES_LIBS@
+IMPORT_MODULES_CONF:=@IMPORT_MODULES_CONF@
+IMPORT_MODULES_LEGAL:=@IMPORT_MODULES_LEGAL@
+IMPORT_MODULES_MAN:=@IMPORT_MODULES_MAN@
+IMPORT_MODULES_SRC:=@IMPORT_MODULES_SRC@
+IMPORT_MODULES_MAKE:=@IMPORT_MODULES_MAKE@
+
+COPYRIGHT_YEAR:=@COPYRIGHT_YEAR@
+
+# New (JEP-223) version information
+
+## Building blocks of the version string
+# First three version numbers, with well-specified meanings (numerical)
+VERSION_MAJOR := @VERSION_MAJOR@
+VERSION_MINOR := @VERSION_MINOR@
+VERSION_SECURITY := @VERSION_SECURITY@
+# Optional fourth element for use by OpenJDK consumers (numerical)
+VERSION_PATCH := @VERSION_PATCH@
+# The pre-release identifier (string)
+VERSION_PRE := @VERSION_PRE@
+# The build number (numerical)
+VERSION_BUILD := @VERSION_BUILD@
+# Optional build information (string)
+VERSION_OPT := @VERSION_OPT@
+
+## Composite variables
+# The version number as a dot separated sequence of numbers, e.g. 9.0.1
+VERSION_NUMBER := @VERSION_NUMBER@
+# VERSION_NUMBER but always with exactly 4 positions, with 0 for empty positions.
+VERSION_NUMBER_FOUR_POSITIONS := @VERSION_NUMBER_FOUR_POSITIONS@
+# The complete version string, with additional build information
+VERSION_STRING := @VERSION_STRING@
+# The short version string, without trailing zeroes and just PRE, if present.
+VERSION_SHORT := @VERSION_SHORT@
+# The Java specification version. It usually equals the major version number.
+VERSION_SPECIFICATION := @VERSION_MAJOR@
+# A GA version is defined by the PRE string being empty. Rather than testing for
+# that, this variable defines it with true/false.
+VERSION_IS_GA := @VERSION_IS_GA@
+
+# Convenience CFLAGS settings for passing version information into native programs.
+VERSION_CFLAGS := \
+ -DVERSION_MAJOR=$(VERSION_MAJOR) \
+ -DVERSION_MINOR=$(VERSION_MINOR) \
+ -DVERSION_SECURITY=$(VERSION_SECURITY) \
+ -DVERSION_PATCH=$(VERSION_PATCH) \
+ -DVERSION_PRE='"$(VERSION_PRE)"' \
+ -DVERSION_BUILD=$(VERSION_BUILD) \
+ -DVERSION_OPT='"$(VERSION_OPT)"' \
+ -DVERSION_NUMBER='"$(VERSION_NUMBER)"' \
+ -DVERSION_STRING='"$(VERSION_STRING)"' \
+ -DVERSION_SHORT='"$(VERSION_SHORT)"' \
+ -DVERSION_SPECIFICATION='"$(VERSION_SPECIFICATION)"' \
+ #
+
+# Platform naming variables
+LAUNCHER_NAME:=@LAUNCHER_NAME@
+PRODUCT_NAME:=@PRODUCT_NAME@
+PRODUCT_SUFFIX:=@PRODUCT_SUFFIX@
+JDK_RC_PLATFORM_NAME:=@JDK_RC_PLATFORM_NAME@
+COMPANY_NAME:=@COMPANY_NAME@
+HOTSPOT_VM_DISTRO:=@HOTSPOT_VM_DISTRO@
+MACOSX_BUNDLE_NAME_BASE=@MACOSX_BUNDLE_NAME_BASE@
+MACOSX_BUNDLE_ID_BASE=@MACOSX_BUNDLE_ID_BASE@
+USERNAME:=@USERNAME@
+
+# Different naming strings generated from the above information.
+RUNTIME_NAME=$(PRODUCT_NAME) $(PRODUCT_SUFFIX)
+
+# How to compile the code: release, fastdebug or slowdebug
+DEBUG_LEVEL:=@DEBUG_LEVEL@
+HOTSPOT_DEBUG_LEVEL:=@HOTSPOT_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@
+
+# Which JVM variants to build (space-separated list)
+JVM_VARIANTS := @JVM_VARIANTS@
+JVM_VARIANT_MAIN := @JVM_VARIANT_MAIN@
+
+# Lists of features per variant. Only relevant for the variants listed in
+# JVM_VARIANTS.
+JVM_FEATURES_server := @JVM_FEATURES_server@
+JVM_FEATURES_client := @JVM_FEATURES_client@
+JVM_FEATURES_core := @JVM_FEATURES_core@
+JVM_FEATURES_minimal := @JVM_FEATURES_minimal@
+JVM_FEATURES_zero := @JVM_FEATURES_zero@
+JVM_FEATURES_zeroshark := @JVM_FEATURES_zeroshark@
+JVM_FEATURES_custom := @JVM_FEATURES_custom@
+
+# Used for make-time verifications
+VALID_JVM_FEATURES := @VALID_JVM_FEATURES@
+VALID_JVM_VARIANTS := @VALID_JVM_VARIANTS@
+
+# Control wether Hotspot builds gtest tests
+BUILD_GTEST := @BUILD_GTEST@
+
+# Control use of precompiled header in hotspot libjvm build
+USE_PRECOMPILED_HEADER := @USE_PRECOMPILED_HEADER@
+
+# Only build headless support or not
+ENABLE_HEADLESS_ONLY := @ENABLE_HEADLESS_ONLY@
+
+ENABLE_FULL_DOCS := @ENABLE_FULL_DOCS@
+
+# 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.
+#
+# When you run "make install" it will create the standardized
+# 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.
+
+BUILD_OUTPUT:=@BUILD_OUTPUT@
+# Colon left out to be able to override IMAGES_OUTPUTDIR for bootcycle-images
+SUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/support
+BUILDTOOLS_OUTPUTDIR=$(BUILD_OUTPUT)/buildtools
+
+HOTSPOT_OUTPUTDIR=$(BUILD_OUTPUT)/hotspot
+JDK_OUTPUTDIR=$(BUILD_OUTPUT)/jdk
+IMAGES_OUTPUTDIR=$(BUILD_OUTPUT)/images
+BUNDLES_OUTPUTDIR=$(BUILD_OUTPUT)/bundles
+TESTMAKE_OUTPUTDIR=$(BUILD_OUTPUT)/test-make
+MAKESUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/make-support
+
+# This does not get overridden in a bootcycle build
+CONFIGURESUPPORT_OUTPUTDIR:=@CONFIGURESUPPORT_OUTPUTDIR@
+BUILDJDK_OUTPUTDIR=$(BUILD_OUTPUT)/buildjdk
+
+BUILD_FAILURE_HANDLER := @BUILD_FAILURE_HANDLER@
+
+ENABLE_GENERATE_CLASSLIST := @ENABLE_GENERATE_CLASSLIST@
+
+# The boot jdk to use. This is overridden in bootcycle-spec.gmk. Make sure to keep
+# it in sync.
+BOOT_JDK:=@BOOT_JDK@
+
+BUILD_JDK:=@BUILD_JDK@
+CREATE_BUILDJDK:=@CREATE_BUILDJDK@
+EXTERNAL_BUILDJDK:=@EXTERNAL_BUILDJDK@
+
+# 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@
+MEMORY_SIZE:=@MEMORY_SIZE@
+# Enable sjavac support = use a javac server,
+# multi core javac compilation and dependency tracking.
+ENABLE_SJAVAC:=@ENABLE_SJAVAC@
+ENABLE_JAVAC_SERVER:=@ENABLE_JAVAC_SERVER@
+# Store sjavac server synchronization files here, and
+# the sjavac server log files.
+SJAVAC_SERVER_DIR=$(MAKESUPPORT_OUTPUTDIR)/javacservers
+
+# Number of parallel jobs to use for compilation
+JOBS?=@JOBS@
+TEST_JOBS?=@TEST_JOBS@
+
+# Default make target
+DEFAULT_MAKE_TARGET:=@DEFAULT_MAKE_TARGET@
+
+FREETYPE_LIBS:=@FREETYPE_LIBS@
+FREETYPE_CFLAGS:=@FREETYPE_CFLAGS@
+FREETYPE_BUNDLE_LIB_PATH=@FREETYPE_BUNDLE_LIB_PATH@
+FREETYPE_LICENSE=@FREETYPE_LICENSE@
+CUPS_CFLAGS:=@CUPS_CFLAGS@
+ALSA_LIBS:=@ALSA_LIBS@
+ALSA_CFLAGS:=@ALSA_CFLAGS@
+LIBFFI_LIBS:=@LIBFFI_LIBS@
+LIBFFI_CFLAGS:=@LIBFFI_CFLAGS@
+ENABLE_LIBFFI_BUNDLING:=@ENABLE_LIBFFI_BUNDLING@
+LIBFFI_LIB_FILE:=@LIBFFI_LIB_FILE@
+
+PACKAGE_PATH=@PACKAGE_PATH@
+
+# Source file for cacerts
+CACERTS_FILE=@CACERTS_FILE@
+
+# Enable unlimited crypto policy
+UNLIMITED_CRYPTO=@UNLIMITED_CRYPTO@
+
+GCOV_ENABLED=@GCOV_ENABLED@
+
+# Necessary additional compiler flags to compile X11
+X_CFLAGS:=@X_CFLAGS@
+X_LIBS:=@X_LIBS@
+
+# The lowest required version of macosx to enforce compatiblity for
+MACOSX_VERSION_MIN=@MACOSX_VERSION_MIN@
+
+# Toolchain type: gcc, clang, solstudio, lxc, microsoft...
+TOOLCHAIN_TYPE:=@TOOLCHAIN_TYPE@
+TOOLCHAIN_VERSION := @TOOLCHAIN_VERSION@
+CC_VERSION_NUMBER := @CC_VERSION_NUMBER@
+CXX_VERSION_NUMBER := @CXX_VERSION_NUMBER@
+
+# Legacy support
+HOTSPOT_TOOLCHAIN_TYPE := @HOTSPOT_TOOLCHAIN_TYPE@
+
+# Option used to tell the compiler whether to create 32- or 64-bit executables
+COMPILER_TARGET_BITS_FLAG:=@COMPILER_TARGET_BITS_FLAG@
+COMPILER_SUPPORTS_TARGET_BITS_FLAG=@COMPILER_SUPPORTS_TARGET_BITS_FLAG@
+
+# Option used to pass a command file to the compiler
+COMPILER_COMMAND_FILE_FLAG:=@COMPILER_COMMAND_FILE_FLAG@
+
+# Option for specifying a file which saves the binder commands
+# produced by the link step (for debugging, currently AIX only)
+COMPILER_BINDCMD_FILE_FLAG:=@COMPILER_BINDCMD_FILE_FLAG@
+
+CC_OUT_OPTION:=@CC_OUT_OPTION@
+EXE_OUT_OPTION:=@EXE_OUT_OPTION@
+LD_OUT_OPTION:=@LD_OUT_OPTION@
+AR_OUT_OPTION:=@AR_OUT_OPTION@
+
+# Flags used for overriding the default opt setting for a C/C++ source file.
+C_O_FLAG_HIGHEST_JVM:=@C_O_FLAG_HIGHEST_JVM@
+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@
+C_O_FLAG_SIZE:=@C_O_FLAG_SIZE@
+CXX_O_FLAG_HIGHEST_JVM:=@CXX_O_FLAG_HIGHEST_JVM@
+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@
+CXX_O_FLAG_SIZE:=@CXX_O_FLAG_SIZE@
+
+C_FLAG_DEPS:=@C_FLAG_DEPS@
+CXX_FLAG_DEPS:=@CXX_FLAG_DEPS@
+
+DISABLE_WARNING_PREFIX := @DISABLE_WARNING_PREFIX@
+CFLAGS_WARNINGS_ARE_ERRORS:=@CFLAGS_WARNINGS_ARE_ERRORS@
+
+# A global flag (true or false) determining if native warnings are considered errors.
+WARNINGS_AS_ERRORS := @WARNINGS_AS_ERRORS@
+
+CFLAGS_CCACHE:=@CFLAGS_CCACHE@
+CXXSTD_CXXFLAG=@CXXSTD_CXXFLAG@
+
+# Tools that potentially need to be cross compilation aware.
+CC:=@FIXPATH@ @CCACHE@ @ICECC@ @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@
+
+LDFLAGS_HASH_STYLE := @LDFLAGS_HASH_STYLE@
+
+JVM_CFLAGS := @JVM_CFLAGS@
+JVM_CFLAGS_SYMBOLS := @JVM_CFLAGS_SYMBOLS@
+JVM_LDFLAGS := @JVM_LDFLAGS@
+JVM_ASFLAGS := @JVM_ASFLAGS@
+JVM_LIBS := @JVM_LIBS@
+JVM_RCFLAGS := @JVM_RCFLAGS@
+
+# Flags for zeroshark
+LLVM_CFLAGS := @LLVM_CFLAGS@
+LLVM_LIBS := @LLVM_LIBS@
+LLVM_LDFLAGS := @LLVM_LDFLAGS@
+
+# These flags might contain variables set by a custom extension that is included later.
+EXTRA_CFLAGS = @EXTRA_CFLAGS@
+EXTRA_CXXFLAGS = @EXTRA_CXXFLAGS@
+EXTRA_LDFLAGS = @EXTRA_LDFLAGS@
+
+CXX:=@FIXPATH@ @CCACHE@ @ICECC@ @CXX@
+
+CPP:=@FIXPATH@ @CPP@
+
+# The linker can be gcc or ld on unix systems, or link.exe on windows systems.
+LD:=@FIXPATH@ @LD@
+
+# Xcode SDK path
+SDKROOT:=@SDKROOT@
+
+# The linker on older SuSE distros (e.g. on SLES 10) complains with:
+# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable."
+# if feeded with a version script which contains named tags.
+USING_BROKEN_SUSE_LD:=@USING_BROKEN_SUSE_LD@
+
+# LDFLAGS used to link the jdk native libraries (C-code)
+LDFLAGS_JDKLIB:=@LDFLAGS_JDKLIB@
+JDKLIB_LIBS:=@JDKLIB_LIBS@
+
+# LDFLAGS used to link the jdk native launchers (C-code)
+LDFLAGS_JDKEXE:=@LDFLAGS_JDKEXE@
+JDKEXE_LIBS:=@JDKEXE_LIBS@
+
+# LDFLAGS specific to C++ linking.
+LDFLAGS_CXX_JDK:=@LDFLAGS_CXX_JDK@
+
+# Sometimes a different linker is needed for c++ libs
+LDCXX:=@FIXPATH@ @LDCXX@
+# The flags for linking libstdc++ linker.
+LIBCXX:=@LIBCXX@
+
+# Compiler and linker flags used when building native tests
+CFLAGS_TESTLIB:=@CFLAGS_TESTLIB@
+CXXFLAGS_TESTLIB:=@CXXFLAGS_TESTLIB@
+CFLAGS_TESTEXE:=@CFLAGS_TESTEXE@
+CXXFLAGS_TESTEXE:=@CXXFLAGS_TESTEXE@
+LDFLAGS_TESTLIB:=@LDFLAGS_TESTLIB@
+LDFLAGS_TESTEXE:=@LDFLAGS_TESTEXE@
+
+# BUILD_CC/BUILD_LD is a compiler/linker that generates code that is runnable on the
+# build platform.
+BUILD_CC:=@FIXPATH@ @BUILD_ICECC@ @BUILD_CC@
+BUILD_CXX:=@FIXPATH@ @BUILD_ICECC@ @BUILD_CXX@
+BUILD_LD:=@FIXPATH@ @BUILD_LD@
+BUILD_LDCXX:=@FIXPATH@ @BUILD_LDCXX@
+BUILD_AS:=@FIXPATH@ @BUILD_AS@
+BUILD_AR:=@FIXPATH@ @BUILD_AR@
+BUILD_NM:=@FIXPATH@ @BUILD_NM@
+BUILD_OBJCOPY:=@BUILD_OBJCOPY@
+BUILD_STRIP:=@BUILD_STRIP@
+BUILD_SYSROOT_CFLAGS:=@BUILD_SYSROOT_CFLAGS@
+BUILD_SYSROOT_LDFLAGS:=@BUILD_SYSROOT_LDFLAGS@
+
+AS:=@FIXPATH@ @AS@
+
+# AR is used to create a static library (is ar in unix, lib.exe in windows)
+AR:=@FIXPATH@ @AR@
+ARFLAGS:=@ARFLAGS@
+
+NM:=@NM@
+GNM:=@GNM@
+STRIP:=@STRIP@
+
+LIPO:=@LIPO@
+
+# 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
+COMPILE_WITH_DEBUG_SYMBOLS := @COMPILE_WITH_DEBUG_SYMBOLS@
+COPY_DEBUG_SYMBOLS := @COPY_DEBUG_SYMBOLS@
+ZIP_EXTERNAL_DEBUG_SYMBOLS := @ZIP_EXTERNAL_DEBUG_SYMBOLS@
+
+CFLAGS_DEBUG_SYMBOLS:=@CFLAGS_DEBUG_SYMBOLS@
+CXXFLAGS_DEBUG_SYMBOLS:=@CXXFLAGS_DEBUG_SYMBOLS@
+
+#
+# Compress (or not) jars
+COMPRESS_JARS=@COMPRESS_JARS@
+
+# 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@
+
+SHARED_LIBRARY_FLAGS=@SHARED_LIBRARY_FLAGS@
+
+# 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:
+# "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@
+STATIC_BUILD:=@STATIC_BUILD@
+
+STRIPFLAGS:=@STRIPFLAGS@
+
+JAVA_FLAGS:=@JAVA_FLAGS@
+JAVA_FLAGS_BIG:=@JAVA_FLAGS_BIG@
+JAVA_FLAGS_SMALL:=@JAVA_FLAGS_SMALL@
+JAVA_FLAGS_JAVAC:=@JAVA_FLAGS_JAVAC@
+JAVA_TOOL_FLAGS_SMALL:=@JAVA_TOOL_FLAGS_SMALL@
+SJAVAC_SERVER_JAVA_FLAGS:=@SJAVAC_SERVER_JAVA_FLAGS@
+
+# The *_CMD variables are defined separately to be easily overridden in bootcycle-spec.gmk
+# for bootcycle-images build. Make sure to keep them in sync. Do not use the *_CMD
+# versions of the variables directly.
+JAVA_CMD:=@JAVA@
+JAVAC_CMD:=@JAVAC@
+JAVAH_CMD:=@JAVAH@
+JAR_CMD:=@JAR@
+JLINK_CMD := @JLINK@
+JMOD_CMD := @JMOD@
+JARSIGNER_CMD:=@JARSIGNER@
+SJAVAC_SERVER_JAVA_CMD:=@SJAVAC_SERVER_JAVA@
+# These variables are meant to be used. They are defined with = instead of := to make
+# it possible to override only the *_CMD variables.
+JAVA=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_BIG) $(JAVA_FLAGS)
+JAVA_SMALL=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_SMALL) $(JAVA_FLAGS)
+JAVA_JAVAC=@FIXPATH@ $(JAVA_CMD) $(JAVA_FLAGS_JAVAC) $(JAVA_FLAGS)
+JAVAC=@FIXPATH@ $(JAVAC_CMD)
+JAVAH=@FIXPATH@ $(JAVAH_CMD)
+JAR=@FIXPATH@ $(JAR_CMD)
+JLINK = @FIXPATH@ $(JLINK_CMD) $(JAVA_TOOL_FLAGS_SMALL)
+JMOD = @FIXPATH@ $(JMOD_CMD) $(JAVA_TOOL_FLAGS_SMALL)
+JARSIGNER=@FIXPATH@ $(JARSIGNER_CMD)
+# A specific java binary with specific options can be used to run
+# the long running background sjavac servers and other long running tasks.
+SJAVAC_SERVER_JAVA=@FIXPATH@ @FIXPATH_DETACH_FLAG@ $(SJAVAC_SERVER_JAVA_CMD) \
+ $(SJAVAC_SERVER_JAVA_FLAGS)
+
+# Hotspot sets this variable before reading the SPEC when compiling sa-jdi.jar. Avoid
+# overriding that value by using ?=.
+JAVAC_FLAGS?=@JAVAC_FLAGS@
+
+
+BUILD_JAVA_FLAGS := @BOOTCYCLE_JVM_ARGS_BIG@
+BUILD_JAVA=@FIXPATH@ $(BUILD_JDK)/bin/java $(BUILD_JAVA_FLAGS)
+
+# Use ?= as this can be overridden from bootcycle-spec.gmk
+BOOT_JDK_MODULAR ?= @BOOT_JDK_MODULAR@
+
+INTERIM_LANGTOOLS_OVERRIDE_MODULES := java.compiler jdk.compiler \
+ jdk.jdeps jdk.javadoc
+INTERIM_RMIC_OVERRIDE_MODULES := jdk.rmic
+ifeq ($(BOOT_JDK_MODULAR), true)
+ INTERIM_LANGTOOLS_OVERRIDE_MODULES_ARGS = $(foreach m, \
+ $(INTERIM_LANGTOOLS_OVERRIDE_MODULES), \
+ --patch-module $m=$(BUILDTOOLS_OUTPUTDIR)/override_modules/$m)
+ INTERIM_RMIC_OVERRIDE_MODULES_ARGS = $(foreach m, \
+ $(INTERIM_LANGTOOLS_OVERRIDE_MODULES) \
+ $(INTERIM_RMIC_OVERRIDE_MODULES), \
+ --patch-module $m=$(BUILDTOOLS_OUTPUTDIR)/override_modules/$m)
+ INTERIM_LANGTOOLS_ARGS = $(INTERIM_LANGTOOLS_OVERRIDE_MODULES_ARGS)
+ JAVAC_MAIN_CLASS = -m jdk.compiler/com.sun.tools.javac.Main
+ JAVADOC_MAIN_CLASS = -m jdk.javadoc/jdk.javadoc.internal.tool.Main
+else
+ INTERIM_LANGTOOLS_OVERRIDE_MODULES_ARGS = \
+ -Xbootclasspath/p:$(call PathList, \
+ $(addprefix $(BUILDTOOLS_OUTPUTDIR)/override_modules/, \
+ $(INTERIM_LANGTOOLS_OVERRIDE_MODULES)))
+ INTERIM_RMIC_OVERRIDE_MODULES_ARGS = \
+ -Xbootclasspath/p:$(call PathList, \
+ $(addprefix $(BUILDTOOLS_OUTPUTDIR)/override_modules/, \
+ $(INTERIM_LANGTOOLS_OVERRIDE_MODULES) \
+ $(INTERIM_RMIC_OVERRIDE_MODULES)))
+ INTERIM_LANGTOOLS_ARGS = $(INTERIM_LANGTOOLS_OVERRIDE_MODULES_ARGS) \
+ -cp $(BUILDTOOLS_OUTPUTDIR)/override_modules/jdk.compiler
+ JAVAC_MAIN_CLASS = com.sun.tools.javac.Main
+ JAVADOC_MAIN_CLASS = jdk.javadoc.internal.tool.Main
+endif
+# You run the new javac using the boot jdk with $(BOOT_JDK)/bin/java $(NEW_JAVAC) ...
+# Use = assignment to be able to override in bootcycle-spec.gmk
+NEW_JAVAC = $(INTERIM_LANGTOOLS_ARGS) $(JAVAC_MAIN_CLASS)
+NEW_JAVADOC = $(INTERIM_LANGTOOLS_ARGS) $(JAVADOC_MAIN_CLASS)
+
+JLINK_KEEP_PACKAGED_MODULES:=@JLINK_KEEP_PACKAGED_MODULES@
+
+# Base flags for RC
+# Guarding this against resetting value. Legacy make files include spec multiple
+# times.
+ifndef RC_FLAGS
+ RC_FLAGS:=@RC_FLAGS@
+endif
+
+# 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.
+CD:=cd
+CHMOD:=@CHMOD@
+CODESIGN:=@CODESIGN@
+COMM:=@COMM@
+CP:=@CP@
+CPIO:=@CPIO@
+CUT:=@CUT@
+DATE:=@DATE@
+DIFF:=@DIFF@
+DIRNAME:=@DIRNAME@
+DSYMUTIL:=@DSYMUTIL@
+FIND:=@FIND@
+FIND_DELETE:=@FIND_DELETE@
+ECHO:=@ECHO@
+EGREP:=@EGREP@
+FGREP:=@FGREP@
+GREP:=@GREP@
+GZIP:=@GZIP@
+HEAD:=@HEAD@
+LS:=@LS@
+LN:=@LN@
+MKDIR:=@MKDIR@
+MV:=@MV@
+NAWK:=@NAWK@
+NICE:=@NICE@
+PANDOC:=@FIXPATH@ @PANDOC@
+PATCH:=@PATCH@
+PRINTF:=@PRINTF@
+RM:=@RM@
+RMDIR:=@RMDIR@
+SED:=@SED@
+SH:=@SH@
+SORT:=@SORT@
+TAR:=@TAR@
+TAIL:=@TAIL@
+TEE:=@TEE@
+TIME:=@TIME@
+IS_GNU_TIME:=@IS_GNU_TIME@
+TR:=@TR@
+TOUCH:=@TOUCH@
+UNIQ:=@UNIQ@
+WC:=@WC@
+XARGS:=@XARGS@
+ZIPEXE:=@ZIPEXE@
+UNZIP:=@UNZIP@
+MT:=@FIXPATH@ @MT@
+RC:=@FIXPATH@ @RC@
+DUMPBIN:=@FIXPATH@ @DUMPBIN@
+CYGPATH:=@CYGPATH@
+LDD:=@LDD@
+OTOOL:=@OTOOL@
+READELF:=@READELF@
+EXPR:=@EXPR@
+FILE:=@FILE@
+DOT:=@DOT@
+HG:=@HG@
+OBJCOPY:=@OBJCOPY@
+SETFILE:=@SETFILE@
+XATTR:=@XATTR@
+JT_HOME:=@JT_HOME@
+JTREGEXE:=@JTREGEXE@
+XCODEBUILD=@XCODEBUILD@
+DTRACE := @DTRACE@
+FIXPATH:=@FIXPATH@
+
+TAR_TYPE:=@TAR_TYPE@
+TAR_CREATE_EXTRA_PARAM:=@TAR_CREATE_EXTRA_PARAM@
+TAR_INCLUDE_PARAM:=@TAR_INCLUDE_PARAM@
+TAR_SUPPORTS_TRANSFORM:=@TAR_SUPPORTS_TRANSFORM@
+
+# Build setup
+ENABLE_AOT:=@ENABLE_AOT@
+ENABLE_INTREE_EC:=@ENABLE_INTREE_EC@
+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@
+MSVCR_DLL:=@MSVCR_DLL@
+MSVCP_DLL:=@MSVCP_DLL@
+STLPORT_LIB:=@STLPORT_LIB@
+
+####################################################
+#
+# 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@
+
+####################################################
+#
+# Libraries
+#
+
+USE_EXTERNAL_LCMS:=@USE_EXTERNAL_LCMS@
+LCMS_CFLAGS:=@LCMS_CFLAGS@
+LCMS_LIBS:=@LCMS_LIBS@
+
+USE_EXTERNAL_LIBPNG:=@USE_EXTERNAL_LIBPNG@
+PNG_LIBS:=@PNG_LIBS@
+PNG_CFLAGS:=@PNG_CFLAGS@
+
+ELF_CFLAGS:=@ELF_CFLAGS@
+ELF_LIBS:=@ELF_LIBS@
+
+####################################################
+#
+# Misc
+#
+
+INCLUDE_SA=@INCLUDE_SA@
+INCLUDE_GRAAL=@INCLUDE_GRAAL@
+
+OS_VERSION_MAJOR:=@OS_VERSION_MAJOR@
+OS_VERSION_MINOR:=@OS_VERSION_MINOR@
+OS_VERSION_MICRO:=@OS_VERSION_MICRO@
+
+# Images directory definitions
+JDK_IMAGE_SUBDIR:=jdk
+JRE_IMAGE_SUBDIR:=jre
+JRE_COMPACT1_IMAGE_SUBDIR := jre-compact1
+JRE_COMPACT2_IMAGE_SUBDIR := jre-compact2
+JRE_COMPACT3_IMAGE_SUBDIR := jre-compact3
+
+# Colon left out to be able to override output dir for bootcycle-images
+JDK_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_IMAGE_SUBDIR)
+JRE_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_IMAGE_SUBDIR)
+
+JRE_COMPACT1_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(JRE_COMPACT1_IMAGE_SUBDIR)
+JRE_COMPACT2_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(JRE_COMPACT2_IMAGE_SUBDIR)
+JRE_COMPACT3_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(JRE_COMPACT3_IMAGE_SUBDIR)
+
+# Test image, as above
+TEST_IMAGE_SUBDIR:=test
+TEST_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(TEST_IMAGE_SUBDIR)
+
+# Symbols image
+SYMBOLS_IMAGE_SUBDIR:=symbols
+SYMBOLS_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(SYMBOLS_IMAGE_SUBDIR)
+
+# Interim image
+INTERIM_JMODS_DIR := $(SUPPORT_OUTPUTDIR)/interim-jmods
+INTERIM_IMAGE_DIR := $(SUPPORT_OUTPUTDIR)/interim-image
+
+# Docs image
+DOCS_IMAGE_SUBDIR := docs
+DOCS_IMAGE_DIR = $(IMAGES_OUTPUTDIR)/$(DOCS_IMAGE_SUBDIR)
+# Output docs directly into image
+DOCS_OUTPUTDIR := $(DOCS_IMAGE_DIR)
+
+# Macosx bundles directory definitions
+JDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle
+JRE_MACOSX_BUNDLE_SUBDIR=jre-bundle
+JDK_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_MACOSX_BUNDLE_SUBDIR)
+JRE_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_MACOSX_BUNDLE_SUBDIR)
+JDK_MACOSX_CONTENTS_SUBDIR=jdk-$(VERSION_NUMBER).jdk/Contents
+JRE_MACOSX_CONTENTS_SUBDIR=jre-$(VERSION_NUMBER).jre/Contents
+JDK_MACOSX_CONTENTS_DIR=$(JDK_MACOSX_BUNDLE_DIR)/$(JDK_MACOSX_CONTENTS_SUBDIR)
+JRE_MACOSX_CONTENTS_DIR=$(JRE_MACOSX_BUNDLE_DIR)/$(JRE_MACOSX_CONTENTS_SUBDIR)
+
+# Bundle names
+BASE_NAME := $(VERSION_SHORT)+$(VERSION_BUILD)_$(OPENJDK_TARGET_BUNDLE_PLATFORM)
+ifeq ($(DEBUG_LEVEL), fastdebug)
+ DEBUG_PART := -debug
+else ifneq ($(DEBUG_LEVEL), release)
+ DEBUG_PART := -$(DEBUG_LEVEL)
+endif
+JDK_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART).tar.gz
+JRE_BUNDLE_NAME := jre-$(BASE_NAME)_bin$(DEBUG_PART).tar.gz
+JRE_COMPACT1_BUNDLE_NAME := \
+ jre-$(VERSION_SHORT)+$(VERSION_BUILD)-compact1_$(OPENJDK_TARGET_BUNDLE_PLATFORM)_bin$(DEBUG_PART).tar.gz
+JRE_COMPACT2_BUNDLE_NAME := \
+ jre-$(VERSION_SHORT)+$(VERSION_BUILD)-compact2_$(OPENJDK_TARGET_BUNDLE_PLATFORM)_bin$(DEBUG_PART).tar.gz
+JRE_COMPACT3_BUNDLE_NAME := \
+ jre-$(VERSION_SHORT)+$(VERSION_BUILD)-compact3_$(OPENJDK_TARGET_BUNDLE_PLATFORM)_bin$(DEBUG_PART).tar.gz
+JDK_SYMBOLS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART)-symbols.tar.gz
+JRE_SYMBOLS_BUNDLE_NAME := jre-$(BASE_NAME)_bin$(DEBUG_PART)-symbols.tar.gz
+TEST_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests$(DEBUG_PART).tar.gz
+DOCS_BUNDLE_NAME := jdk-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz
+
+JDK_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_BUNDLE_NAME)
+JRE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JRE_BUNDLE_NAME)
+JDK_SYMBOLS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_SYMBOLS_BUNDLE_NAME)
+JRE_SYMBOLS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JRE_SYMBOLS_BUNDLE_NAME)
+TEST_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(TEST_BUNDLE_NAME)
+DOCS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DOCS_BUNDLE_NAME)
+
+# This macro is called to allow inclusion of closed source counterparts.
+# Unless overridden in closed sources, it expands to nothing.
+# Usage: This function is called in an open makefile, with the following
+# arguments:
+# $1 the name of the repo, or empty if the top-level repo.
+# $2 the name of the makefile
+define IncludeCustomExtension
+endef
+
+# Include the custom-spec.gmk file if it exists
+-include $(dir @SPEC@)/custom-spec.gmk
diff --git a/common/autoconf/toolchain.m4 b/common/autoconf/toolchain.m4
new file mode 100644
index 0000000..fca9b06
--- /dev/null
+++ b/common/autoconf/toolchain.m4
@@ -0,0 +1,1007 @@
+#
+# Copyright (c) 2011, 2016, 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 is responsible for detecting, verifying and setting up the
+# toolchain, i.e. the compiler, linker and related utilities. It will setup
+# proper paths to the binaries, but it will not setup any flags.
+#
+# The binaries used is determined by the toolchain type, which is the family of
+# compilers and related tools that are used.
+########################################################################
+
+
+# All valid toolchains, regardless of platform (used by help.m4)
+VALID_TOOLCHAINS_all="gcc clang solstudio xlc microsoft"
+
+# These toolchains are valid on different platforms
+VALID_TOOLCHAINS_linux="gcc clang"
+VALID_TOOLCHAINS_solaris="solstudio"
+VALID_TOOLCHAINS_macosx="gcc clang"
+VALID_TOOLCHAINS_aix="xlc"
+VALID_TOOLCHAINS_windows="microsoft"
+
+# Toolchain descriptions
+TOOLCHAIN_DESCRIPTION_clang="clang/LLVM"
+TOOLCHAIN_DESCRIPTION_gcc="GNU Compiler Collection"
+TOOLCHAIN_DESCRIPTION_microsoft="Microsoft Visual Studio"
+TOOLCHAIN_DESCRIPTION_solstudio="Oracle Solaris Studio"
+TOOLCHAIN_DESCRIPTION_xlc="IBM XL C/C++"
+
+# Minimum supported versions, empty means unspecified
+TOOLCHAIN_MINIMUM_VERSION_clang="3.2"
+TOOLCHAIN_MINIMUM_VERSION_gcc="4.3"
+TOOLCHAIN_MINIMUM_VERSION_microsoft="16.00.30319.01" # VS2010
+TOOLCHAIN_MINIMUM_VERSION_solstudio="5.13"
+TOOLCHAIN_MINIMUM_VERSION_xlc=""
+
+# Prepare the system so that TOOLCHAIN_CHECK_COMPILER_VERSION can be called.
+# Must have CC_VERSION_NUMBER and CXX_VERSION_NUMBER.
+# $1 - optional variable prefix for compiler and version variables (BUILD_)
+# $2 - optional variable prefix for comparable variable (OPENJDK_BUILD_)
+AC_DEFUN([TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS],
+[
+ if test "x[$]$1CC_VERSION_NUMBER" != "x[$]$1CXX_VERSION_NUMBER"; then
+ AC_MSG_WARN([C and C++ compiler have different version numbers, [$]$1CC_VERSION_NUMBER vs [$]$1CXX_VERSION_NUMBER.])
+ AC_MSG_WARN([This typically indicates a broken setup, and is not supported])
+ fi
+
+ # We only check CC_VERSION_NUMBER since we assume CXX_VERSION_NUMBER is equal.
+ if [ [[ "[$]$1CC_VERSION_NUMBER" =~ (.*\.){4} ]] ]; then
+ AC_MSG_WARN([C compiler version number has more than four parts (W.X.Y.Z): [$]$1CC_VERSION_NUMBER. Comparisons might be wrong.])
+ fi
+
+ if [ [[ "[$]$1CC_VERSION_NUMBER" =~ [0-9]{6} ]] ]; then
+ AC_MSG_WARN([C compiler version number has a part larger than 99999: [$]$1CC_VERSION_NUMBER. Comparisons might be wrong.])
+ fi
+
+ $2COMPARABLE_ACTUAL_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", [$]1, [$]2, [$]3, [$]4) }' <<< "[$]$1CC_VERSION_NUMBER"`
+])
+
+# Check if the configured compiler (C and C++) is of a specific version or
+# newer. TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS must have been called before.
+#
+# Arguments:
+# VERSION: The version string to check against the found version
+# IF_AT_LEAST: block to run if the compiler is at least this version (>=)
+# IF_OLDER_THAN: block to run if the compiler is older than this version (<)
+# PREFIX: Optional variable prefix for compiler to compare version for (OPENJDK_BUILD_)
+BASIC_DEFUN_NAMED([TOOLCHAIN_CHECK_COMPILER_VERSION],
+ [*VERSION PREFIX IF_AT_LEAST IF_OLDER_THAN], [$@],
+[
+ # Need to assign to a variable since m4 is blocked from modifying parts in [].
+ REFERENCE_VERSION=ARG_VERSION
+
+ if [ [[ "$REFERENCE_VERSION" =~ (.*\.){4} ]] ]; then
+ AC_MSG_ERROR([Internal error: Cannot compare to ARG_VERSION, only four parts (W.X.Y.Z) is supported])
+ fi
+
+ if [ [[ "$REFERENCE_VERSION" =~ [0-9]{6} ]] ]; then
+ AC_MSG_ERROR([Internal error: Cannot compare to ARG_VERSION, only parts < 99999 is supported])
+ fi
+
+ # Version comparison method inspired by http://stackoverflow.com/a/24067243
+ COMPARABLE_REFERENCE_VERSION=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", [$]1, [$]2, [$]3, [$]4) }' <<< "$REFERENCE_VERSION"`
+
+ if test [$]ARG_PREFIX[COMPARABLE_ACTUAL_VERSION] -ge $COMPARABLE_REFERENCE_VERSION ; then
+ :
+ ARG_IF_AT_LEAST
+ else
+ :
+ ARG_IF_OLDER_THAN
+ fi
+])
+
+# Setup a number of variables describing how native output files are
+# named on this platform/toolchain.
+AC_DEFUN([TOOLCHAIN_SETUP_FILENAME_PATTERNS],
+[
+ # Define filename patterns
+ if test "x$OPENJDK_TARGET_OS" = xwindows; then
+ LIBRARY_PREFIX=
+ SHARED_LIBRARY_SUFFIX='.dll'
+ STATIC_LIBRARY_SUFFIX='.lib'
+ SHARED_LIBRARY='[$]1.dll'
+ STATIC_LIBRARY='[$]1.lib'
+ OBJ_SUFFIX='.obj'
+ EXE_SUFFIX='.exe'
+ else
+ LIBRARY_PREFIX=lib
+ SHARED_LIBRARY_SUFFIX='.so'
+ STATIC_LIBRARY_SUFFIX='.a'
+ SHARED_LIBRARY='lib[$]1.so'
+ STATIC_LIBRARY='lib[$]1.a'
+ OBJ_SUFFIX='.o'
+ EXE_SUFFIX=''
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ # For full static builds, we're overloading the SHARED_LIBRARY
+ # variables in order to limit the amount of changes required.
+ # It would be better to remove SHARED and just use LIBRARY and
+ # LIBRARY_SUFFIX for libraries that can be built either
+ # shared or static and use STATIC_* for libraries that are
+ # always built statically.
+ if test "x$STATIC_BUILD" = xtrue; then
+ SHARED_LIBRARY='lib[$]1.a'
+ SHARED_LIBRARY_SUFFIX='.a'
+ else
+ SHARED_LIBRARY='lib[$]1.dylib'
+ SHARED_LIBRARY_SUFFIX='.dylib'
+ fi
+ fi
+ fi
+
+ AC_SUBST(LIBRARY_PREFIX)
+ AC_SUBST(SHARED_LIBRARY_SUFFIX)
+ AC_SUBST(STATIC_LIBRARY_SUFFIX)
+ AC_SUBST(SHARED_LIBRARY)
+ AC_SUBST(STATIC_LIBRARY)
+ AC_SUBST(OBJ_SUFFIX)
+ AC_SUBST(EXE_SUFFIX)
+])
+
+# Determine which toolchain type to use, and make sure it is valid for this
+# platform. Setup various information about the selected toolchain.
+AC_DEFUN_ONCE([TOOLCHAIN_DETERMINE_TOOLCHAIN_TYPE],
+[
+ AC_ARG_WITH(toolchain-type, [AS_HELP_STRING([--with-toolchain-type],
+ [the toolchain type (or family) to use, use '--help' to show possible values @<:@platform dependent@:>@])])
+
+ # Use indirect variable referencing
+ toolchain_var_name=VALID_TOOLCHAINS_$OPENJDK_BUILD_OS
+ VALID_TOOLCHAINS=${!toolchain_var_name}
+
+ if test "x$OPENJDK_TARGET_OS" = xmacosx; then
+ if test -n "$XCODEBUILD"; then
+ # On Mac OS X, default toolchain to clang after Xcode 5
+ XCODE_VERSION_OUTPUT=`"$XCODEBUILD" -version 2>&1 | $HEAD -n 1`
+ $ECHO "$XCODE_VERSION_OUTPUT" | $GREP "Xcode " > /dev/null
+ if test $? -ne 0; then
+ AC_MSG_ERROR([Failed to determine Xcode version.])
+ fi
+ XCODE_MAJOR_VERSION=`$ECHO $XCODE_VERSION_OUTPUT | \
+ $SED -e 's/^Xcode \(@<:@1-9@:>@@<:@0-9.@:>@*\)/\1/' | \
+ $CUT -f 1 -d .`
+ AC_MSG_NOTICE([Xcode major version: $XCODE_MAJOR_VERSION])
+ if test $XCODE_MAJOR_VERSION -ge 5; then
+ DEFAULT_TOOLCHAIN="clang"
+ else
+ DEFAULT_TOOLCHAIN="gcc"
+ fi
+ else
+ # If Xcode is not installed, but the command line tools are
+ # then we can't run xcodebuild. On these systems we should
+ # default to clang
+ DEFAULT_TOOLCHAIN="clang"
+ fi
+ else
+ # First toolchain type in the list is the default
+ DEFAULT_TOOLCHAIN=${VALID_TOOLCHAINS%% *}
+ fi
+
+ if test "x$with_toolchain_type" = xlist; then
+ # List all toolchains
+ AC_MSG_NOTICE([The following toolchains are valid on this platform:])
+ for toolchain in $VALID_TOOLCHAINS; do
+ toolchain_var_name=TOOLCHAIN_DESCRIPTION_$toolchain
+ TOOLCHAIN_DESCRIPTION=${!toolchain_var_name}
+ $PRINTF " %-10s %s\n" $toolchain "$TOOLCHAIN_DESCRIPTION"
+ done
+
+ exit 0
+ elif test "x$with_toolchain_type" != x; then
+ # User override; check that it is valid
+ if test "x${VALID_TOOLCHAINS/$with_toolchain_type/}" = "x${VALID_TOOLCHAINS}"; then
+ AC_MSG_NOTICE([Toolchain type $with_toolchain_type is not valid on this platform.])
+ AC_MSG_NOTICE([Valid toolchains: $VALID_TOOLCHAINS.])
+ AC_MSG_ERROR([Cannot continue.])
+ fi
+ TOOLCHAIN_TYPE=$with_toolchain_type
+ else
+ # No flag given, use default
+ TOOLCHAIN_TYPE=$DEFAULT_TOOLCHAIN
+ fi
+ AC_SUBST(TOOLCHAIN_TYPE)
+
+ TOOLCHAIN_CC_BINARY_clang="clang"
+ TOOLCHAIN_CC_BINARY_gcc="gcc"
+ TOOLCHAIN_CC_BINARY_microsoft="cl"
+ TOOLCHAIN_CC_BINARY_solstudio="cc"
+ TOOLCHAIN_CC_BINARY_xlc="xlc_r"
+
+ TOOLCHAIN_CXX_BINARY_clang="clang++"
+ TOOLCHAIN_CXX_BINARY_gcc="g++"
+ TOOLCHAIN_CXX_BINARY_microsoft="cl"
+ TOOLCHAIN_CXX_BINARY_solstudio="CC"
+ TOOLCHAIN_CXX_BINARY_xlc="xlC_r"
+
+ # Use indirect variable referencing
+ toolchain_var_name=TOOLCHAIN_DESCRIPTION_$TOOLCHAIN_TYPE
+ TOOLCHAIN_DESCRIPTION=${!toolchain_var_name}
+ toolchain_var_name=TOOLCHAIN_MINIMUM_VERSION_$TOOLCHAIN_TYPE
+ TOOLCHAIN_MINIMUM_VERSION=${!toolchain_var_name}
+ toolchain_var_name=TOOLCHAIN_CC_BINARY_$TOOLCHAIN_TYPE
+ TOOLCHAIN_CC_BINARY=${!toolchain_var_name}
+ toolchain_var_name=TOOLCHAIN_CXX_BINARY_$TOOLCHAIN_TYPE
+ TOOLCHAIN_CXX_BINARY=${!toolchain_var_name}
+
+ TOOLCHAIN_SETUP_FILENAME_PATTERNS
+
+ if test "x$TOOLCHAIN_TYPE" = "x$DEFAULT_TOOLCHAIN"; then
+ AC_MSG_NOTICE([Using default toolchain $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION)])
+ else
+ AC_MSG_NOTICE([Using user selected toolchain $TOOLCHAIN_TYPE ($TOOLCHAIN_DESCRIPTION). Default toolchain is $DEFAULT_TOOLCHAIN.])
+ fi
+])
+
+# Before we start detecting the toolchain executables, we might need some
+# special setup, e.g. additional paths etc.
+AC_DEFUN_ONCE([TOOLCHAIN_PRE_DETECTION],
+[
+ # FIXME: Is this needed?
+ AC_LANG(C++)
+
+ # Store the CFLAGS etc passed to the configure script.
+ ORG_CFLAGS="$CFLAGS"
+ ORG_CXXFLAGS="$CXXFLAGS"
+
+ # autoconf magic only relies on PATH, so update it if tools dir is specified
+ OLD_PATH="$PATH"
+
+ # On Windows, we need to detect the visual studio installation first.
+ # This will change the PATH, but we need to keep that new PATH even
+ # after toolchain detection is done, since the compiler (on x86) uses
+ # it for DLL resolution in runtime.
+ if test "x$OPENJDK_BUILD_OS" = "xwindows" \
+ && test "x$TOOLCHAIN_TYPE" = "xmicrosoft"; then
+ TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV
+ # Reset path to VS_PATH. It will include everything that was on PATH at the time we
+ # ran TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV.
+ PATH="$VS_PATH"
+ # The microsoft toolchain also requires INCLUDE and LIB to be set.
+ export INCLUDE="$VS_INCLUDE"
+ export LIB="$VS_LIB"
+ else
+ if test "x$XCODE_VERSION_OUTPUT" != x; then
+ # For Xcode, we set the Xcode version as TOOLCHAIN_VERSION
+ TOOLCHAIN_VERSION=`$ECHO $XCODE_VERSION_OUTPUT | $CUT -f 2 -d ' '`
+ TOOLCHAIN_DESCRIPTION="$TOOLCHAIN_DESCRIPTION from Xcode"
+ else
+ # Currently we do not define this for other toolchains. This might change as the need arise.
+ TOOLCHAIN_VERSION=
+ fi
+ fi
+ AC_SUBST(TOOLCHAIN_VERSION)
+
+ # Finally add TOOLCHAIN_PATH at the beginning, to allow --with-tools-dir to
+ # override all other locations.
+ if test "x$TOOLCHAIN_PATH" != x; then
+ PATH=$TOOLCHAIN_PATH:$PATH
+ fi
+])
+
+# Restore path, etc
+AC_DEFUN_ONCE([TOOLCHAIN_POST_DETECTION],
+[
+ # Restore old path, except for the microsoft toolchain, which requires VS_PATH
+ # to remain in place. Otherwise the compiler will not work in some siutations
+ # in later configure checks.
+ if test "x$TOOLCHAIN_TYPE" != "xmicrosoft"; then
+ PATH="$OLD_PATH"
+ fi
+
+ # Restore the flags to the user specified values.
+ # This is necessary since AC_PROG_CC defaults CFLAGS to "-g -O2"
+ CFLAGS="$ORG_CFLAGS"
+ CXXFLAGS="$ORG_CXXFLAGS"
+])
+
+# Check if a compiler is of the toolchain type we expect, and save the version
+# information from it. If the compiler does not match the expected type,
+# this function will abort using AC_MSG_ERROR. If it matches, the version will
+# be stored in CC_VERSION_NUMBER/CXX_VERSION_NUMBER (as a dotted number), and
+# the full version string in CC_VERSION_STRING/CXX_VERSION_STRING.
+#
+# $1 = compiler to test (CC or CXX)
+# $2 = human readable name of compiler (C or C++)
+AC_DEFUN([TOOLCHAIN_EXTRACT_COMPILER_VERSION],
+[
+ COMPILER=[$]$1
+ COMPILER_NAME=$2
+
+ if test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ # cc -V output typically looks like
+ # cc: Sun C 5.12 Linux_i386 2011/11/16
+ # or
+ # cc: Studio 12.5 Sun C 5.14 SunOS_sparc 2016/05/31
+ COMPILER_VERSION_OUTPUT=`$COMPILER -V 2>&1`
+ # Check that this is likely to be the Solaris Studio cc.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "^.* Sun $COMPILER_NAME" > /dev/null
+ if test $? -ne 0; then
+ ALT_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ AC_MSG_NOTICE([The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler.])
+ AC_MSG_NOTICE([The result from running with -V was: "$COMPILER_VERSION_OUTPUT"])
+ AC_MSG_NOTICE([The result from running with --version was: "$ALT_VERSION_OUTPUT"])
+ AC_MSG_ERROR([A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir.])
+ fi
+ # Remove usage instructions (if present), and
+ # collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/ *@<:@Uu@:>@sage:.*//'`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e "s/^.*@<:@ ,\t@:>@$COMPILER_NAME@<:@ ,\t@:>@\(@<:@1-9@:>@\.@<:@0-9@:>@@<:@0-9@:>@*\).*/\1/"`
+ elif test "x$TOOLCHAIN_TYPE" = xxlc; then
+ # xlc -qversion output typically looks like
+ # IBM XL C/C++ for AIX, V11.1 (5724-X13)
+ # Version: 11.01.0000.0015
+ COMPILER_VERSION_OUTPUT=`$COMPILER -qversion 2>&1`
+ # Check that this is likely to be the IBM XL C compiler.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "IBM XL C" > /dev/null
+ if test $? -ne 0; then
+ ALT_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ AC_MSG_NOTICE([The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler.])
+ AC_MSG_NOTICE([The result from running with -qversion was: "$COMPILER_VERSION_OUTPUT"])
+ AC_MSG_NOTICE([The result from running with --version was: "$ALT_VERSION_OUTPUT"])
+ AC_MSG_ERROR([A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir.])
+ fi
+ # Collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.*, V\(@<:@1-9@:>@@<:@0-9.@:>@*\).*$/\1/'`
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # There is no specific version flag, but all output starts with a version string.
+ # First line typically looks something like:
+ # Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
+ COMPILER_VERSION_OUTPUT=`$COMPILER 2>&1 | $HEAD -n 1 | $TR -d '\r'`
+ # Check that this is likely to be Microsoft CL.EXE.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "Microsoft.*Compiler" > /dev/null
+ if test $? -ne 0; then
+ AC_MSG_NOTICE([The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler.])
+ AC_MSG_NOTICE([The result from running it was: "$COMPILER_VERSION_OUTPUT"])
+ AC_MSG_ERROR([A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir.])
+ fi
+ # Collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.*ersion.\(@<:@1-9@:>@@<:@0-9.@:>@*\) .*$/\1/'`
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ # gcc --version output typically looks like
+ # gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1
+ # Copyright (C) 2013 Free Software Foundation, Inc.
+ # This is free software; see the source for copying conditions. There is NO
+ # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ COMPILER_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ # Check that this is likely to be GCC.
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "Free Software Foundation" > /dev/null
+ if test $? -ne 0; then
+ AC_MSG_NOTICE([The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler.])
+ AC_MSG_NOTICE([The result from running with --version was: "$COMPILER_VERSION"])
+ AC_MSG_ERROR([A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir.])
+ fi
+ # Remove Copyright and legalese from version string, and
+ # collapse into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/ *Copyright .*//'`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.* \(@<:@1-9@:>@\.@<:@0-9.@:>@*\)@<:@^0-9.@:>@.*$/\1/'`
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ # clang --version output typically looks like
+ # Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
+ # clang version 3.3 (tags/RELEASE_33/final)
+ # or
+ # Debian clang version 3.2-7ubuntu1 (tags/RELEASE_32/final) (based on LLVM 3.2)
+ # Target: x86_64-pc-linux-gnu
+ # Thread model: posix
+ COMPILER_VERSION_OUTPUT=`$COMPILER --version 2>&1`
+ # Check that this is likely to be clang
+ $ECHO "$COMPILER_VERSION_OUTPUT" | $GREP "clang" > /dev/null
+ if test $? -ne 0; then
+ AC_MSG_NOTICE([The $COMPILER_NAME compiler (located as $COMPILER) does not seem to be the required $TOOLCHAIN_TYPE compiler.])
+ AC_MSG_NOTICE([The result from running with --version was: "$COMPILER_VERSION_OUTPUT"])
+ AC_MSG_ERROR([A $TOOLCHAIN_TYPE compiler is required. Try setting --with-tools-dir.])
+ fi
+ # Collapse compiler output into a single line
+ COMPILER_VERSION_STRING=`$ECHO $COMPILER_VERSION_OUTPUT`
+ COMPILER_VERSION_NUMBER=`$ECHO $COMPILER_VERSION_OUTPUT | \
+ $SED -e 's/^.* version \(@<:@1-9@:>@@<:@0-9.@:>@*\).*$/\1/'`
+ else
+ AC_MSG_ERROR([Unknown toolchain type $TOOLCHAIN_TYPE.])
+ fi
+ # This sets CC_VERSION_NUMBER or CXX_VERSION_NUMBER. (This comment is a grep marker)
+ $1_VERSION_NUMBER="$COMPILER_VERSION_NUMBER"
+ # This sets CC_VERSION_STRING or CXX_VERSION_STRING. (This comment is a grep marker)
+ $1_VERSION_STRING="$COMPILER_VERSION_STRING"
+
+ AC_MSG_NOTICE([Using $TOOLCHAIN_TYPE $COMPILER_NAME compiler version $COMPILER_VERSION_NUMBER @<:@$COMPILER_VERSION_STRING@:>@])
+])
+
+# Try to locate the given C or C++ compiler in the path, or otherwise.
+#
+# $1 = compiler to test (CC or CXX)
+# $2 = human readable name of compiler (C or C++)
+# $3 = compiler name to search for
+AC_DEFUN([TOOLCHAIN_FIND_COMPILER],
+[
+ COMPILER_NAME=$2
+ SEARCH_LIST="$3"
+
+ if test "x[$]$1" != x; then
+ # User has supplied compiler name already, always let that override.
+ AC_MSG_NOTICE([Will use user supplied compiler $1=[$]$1])
+ if test "x`basename [$]$1`" = "x[$]$1"; then
+ # A command without a complete path is provided, search $PATH.
+
+ AC_PATH_PROGS(POTENTIAL_$1, [$]$1)
+ if test "x$POTENTIAL_$1" != x; then
+ $1=$POTENTIAL_$1
+ else
+ AC_MSG_ERROR([User supplied compiler $1=[$]$1 could not be found])
+ fi
+ else
+ # Otherwise it might already be a complete path
+ if test ! -x "[$]$1"; then
+ AC_MSG_ERROR([User supplied compiler $1=[$]$1 does not exist])
+ fi
+ fi
+ else
+ # No user supplied value. Locate compiler ourselves.
+
+ # If we are cross compiling, assume cross compilation tools follows the
+ # cross compilation standard where they are prefixed with the autoconf
+ # standard name for the target. For example the binary
+ # i686-sun-solaris2.10-gcc will cross compile for i686-sun-solaris2.10.
+ # If we are not cross compiling, then the default compiler name will be
+ # used.
+
+ $1=
+ # If TOOLCHAIN_PATH is set, check for all compiler names in there first
+ # before checking the rest of the PATH.
+ # FIXME: Now that we prefix the TOOLS_DIR to the PATH in the PRE_DETECTION
+ # step, this should not be necessary.
+ if test -n "$TOOLCHAIN_PATH"; then
+ PATH_save="$PATH"
+ PATH="$TOOLCHAIN_PATH"
+ AC_PATH_TOOL(TOOLCHAIN_PATH_$1, $SEARCH_LIST)
+ $1=$TOOLCHAIN_PATH_$1
+ PATH="$PATH_save"
+ fi
+
+ # AC_PATH_TOOL can't be run multiple times with the same variable,
+ # so create a new name for this run.
+ if test "x[$]$1" = x; then
+ AC_PATH_TOOL(POTENTIAL_$1, $SEARCH_LIST)
+ $1=$POTENTIAL_$1
+ fi
+
+ if test "x[$]$1" = x; then
+ HELP_MSG_MISSING_DEPENDENCY([devkit])
+ AC_MSG_ERROR([Could not find a $COMPILER_NAME compiler. $HELP_MSG])
+ fi
+ fi
+
+ # Now we have a compiler binary in $1. Make sure it's okay.
+ BASIC_FIXUP_EXECUTABLE($1)
+ TEST_COMPILER="[$]$1"
+
+ AC_MSG_CHECKING([resolved symbolic links for $1])
+ SYMLINK_ORIGINAL="$TEST_COMPILER"
+ BASIC_REMOVE_SYMBOLIC_LINKS(SYMLINK_ORIGINAL)
+ if test "x$TEST_COMPILER" = "x$SYMLINK_ORIGINAL"; then
+ AC_MSG_RESULT([no symlink])
+ else
+ AC_MSG_RESULT([$SYMLINK_ORIGINAL])
+
+ # We can't handle ccache by gcc wrappers, since we need to know if we're
+ # using ccache. Instead ccache usage must be controlled by a configure option.
+ COMPILER_BASENAME=`$BASENAME "$SYMLINK_ORIGINAL"`
+ if test "x$COMPILER_BASENAME" = "xccache"; then
+ AC_MSG_NOTICE([Please use --enable-ccache instead of providing a wrapped compiler.])
+ AC_MSG_ERROR([$TEST_COMPILER is a symbolic link to ccache. This is not supported.])
+ fi
+ fi
+
+ TOOLCHAIN_EXTRACT_COMPILER_VERSION([$1], [$COMPILER_NAME])
+])
+
+# Detect the core components of the toolchain, i.e. the compilers (CC and CXX),
+# preprocessor (CPP and CXXCPP), the linker (LD), the assembler (AS) and the
+# archiver (AR). Verify that the compilers are correct according to the
+# toolchain type.
+AC_DEFUN_ONCE([TOOLCHAIN_DETECT_TOOLCHAIN_CORE],
+[
+ #
+ # Setup the compilers (CC and CXX)
+ #
+ TOOLCHAIN_FIND_COMPILER([CC], [C], $TOOLCHAIN_CC_BINARY)
+ # Now that we have resolved CC ourself, let autoconf have its go at it
+ AC_PROG_CC([$CC])
+
+ TOOLCHAIN_FIND_COMPILER([CXX], [C++], $TOOLCHAIN_CXX_BINARY)
+ # Now that we have resolved CXX ourself, let autoconf have its go at it
+ AC_PROG_CXX([$CXX])
+
+ # This is the compiler version number on the form X.Y[.Z]
+ AC_SUBST(CC_VERSION_NUMBER)
+ AC_SUBST(CXX_VERSION_NUMBER)
+
+ TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS
+
+ if test "x$TOOLCHAIN_MINIMUM_VERSION" != x; then
+ TOOLCHAIN_CHECK_COMPILER_VERSION(VERSION: $TOOLCHAIN_MINIMUM_VERSION,
+ IF_OLDER_THAN: [
+ AC_MSG_WARN([You are using $TOOLCHAIN_TYPE older than $TOOLCHAIN_MINIMUM_VERSION. This is not a supported configuration.])
+ ]
+ )
+ fi
+
+ #
+ # Setup the preprocessor (CPP and CXXCPP)
+ #
+ AC_PROG_CPP
+ BASIC_FIXUP_EXECUTABLE(CPP)
+ AC_PROG_CXXCPP
+ BASIC_FIXUP_EXECUTABLE(CXXCPP)
+
+ #
+ # Setup the linker (LD)
+ #
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # In the Microsoft toolchain we have a separate LD command "link".
+ # Make sure we reject /usr/bin/link (as determined in CYGWIN_LINK), which is
+ # a cygwin program for something completely different.
+ AC_CHECK_PROG([LD], [link],[link],,, [$CYGWIN_LINK])
+ BASIC_FIXUP_EXECUTABLE(LD)
+ # Verify that we indeed succeeded with this trick.
+ AC_MSG_CHECKING([if the found link.exe is actually the Visual Studio linker])
+ "$LD" --version > /dev/null
+ if test $? -eq 0 ; then
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([This is the Cygwin link tool. Please check your PATH and rerun configure.])
+ else
+ AC_MSG_RESULT([yes])
+ fi
+ LDCXX="$LD"
+ else
+ # All other toolchains use the compiler to link.
+ LD="$CC"
+ LDCXX="$CXX"
+ fi
+ AC_SUBST(LD)
+ # FIXME: it should be CXXLD, according to standard (cf CXXCPP)
+ AC_SUBST(LDCXX)
+
+ #
+ # Setup the assembler (AS)
+ #
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ BASIC_PATH_PROGS(AS, as)
+ BASIC_FIXUP_EXECUTABLE(AS)
+ if test "x$AS" = x; then
+ AC_MSG_ERROR([Solaris assembler (as) is required. Please install via "pkg install pkg:/developer/assembler".])
+ fi
+ else
+ # FIXME: is this correct for microsoft?
+ AS="$CC -c"
+ fi
+ AC_SUBST(AS)
+
+ #
+ # Setup the archiver (AR)
+ #
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # The corresponding ar tool is lib.exe (used to create static libraries)
+ AC_CHECK_PROG([AR], [lib],[lib],,,)
+ elif test "x$TOOLCHAIN_TYPE" = xgcc; then
+ BASIC_CHECK_TOOLS(AR, ar gcc-ar)
+ else
+ BASIC_CHECK_TOOLS(AR, ar)
+ fi
+ BASIC_FIXUP_EXECUTABLE(AR)
+])
+
+# Setup additional tools that is considered a part of the toolchain, but not the
+# core part. Many of these are highly platform-specific and do not exist,
+# and/or are not needed on all platforms.
+AC_DEFUN_ONCE([TOOLCHAIN_DETECT_TOOLCHAIN_EXTRA],
+[
+ if test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
+ BASIC_PATH_PROGS(LIPO, lipo)
+ BASIC_FIXUP_EXECUTABLE(LIPO)
+ fi
+
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ AC_CHECK_PROG([MT], [mt], [mt],,, [/usr/bin/mt])
+ BASIC_FIXUP_EXECUTABLE(MT)
+ # Setup the resource compiler (RC)
+ AC_CHECK_PROG([RC], [rc], [rc],,, [/usr/bin/rc])
+ BASIC_FIXUP_EXECUTABLE(RC)
+ AC_CHECK_PROG([DUMPBIN], [dumpbin], [dumpbin],,,)
+ BASIC_FIXUP_EXECUTABLE(DUMPBIN)
+ # We need to check for 'msbuild.exe' because at the place where we expect to
+ # find 'msbuild.exe' there's also a directory called 'msbuild' and configure
+ # won't find the 'msbuild.exe' executable in that case (and the
+ # 'ac_executable_extensions' is unusable due to performance reasons).
+ # Notice that we intentionally don't fix up the path to MSBUILD because we
+ # will call it in a DOS shell during freetype detection on Windows (see
+ # 'LIB_SETUP_FREETYPE' in "libraries.m4"
+ AC_CHECK_PROG([MSBUILD], [msbuild.exe], [msbuild.exe],,,)
+ fi
+
+ if test "x$OPENJDK_TARGET_OS" = xsolaris; then
+ BASIC_PATH_PROGS(STRIP, strip)
+ BASIC_FIXUP_EXECUTABLE(STRIP)
+ BASIC_PATH_PROGS(NM, nm)
+ BASIC_FIXUP_EXECUTABLE(NM)
+ BASIC_PATH_PROGS(GNM, gnm)
+ BASIC_FIXUP_EXECUTABLE(GNM)
+ elif test "x$OPENJDK_TARGET_OS" != xwindows; then
+ # FIXME: we should unify this with the solaris case above.
+ BASIC_CHECK_TOOLS(STRIP, strip)
+ BASIC_FIXUP_EXECUTABLE(STRIP)
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ BASIC_CHECK_TOOLS(NM, nm gcc-nm)
+ else
+ BASIC_CHECK_TOOLS(NM, nm)
+ fi
+ BASIC_FIXUP_EXECUTABLE(NM)
+ GNM="$NM"
+ AC_SUBST(GNM)
+ fi
+
+ # objcopy is used for moving debug symbols to separate files when
+ # full debug symbols are enabled.
+ if test "x$OPENJDK_TARGET_OS" = xsolaris || test "x$OPENJDK_TARGET_OS" = xlinux; then
+ BASIC_CHECK_TOOLS(OBJCOPY, [gobjcopy objcopy])
+ # Only call fixup if objcopy was found.
+ if test -n "$OBJCOPY"; then
+ BASIC_FIXUP_EXECUTABLE(OBJCOPY)
+ if test "x$OPENJDK_BUILD_OS" = xsolaris; then
+ # objcopy prior to 2.21.1 on solaris is broken and is not usable.
+ # Rewrite objcopy version output to VALID_VERSION or BAD_VERSION.
+ # - version number is last blank separate word on first line
+ # - version number formats that have been seen:
+ # - <major>.<minor>
+ # - <major>.<minor>.<micro>
+ OBJCOPY_VERSION=`$OBJCOPY --version | $HEAD -n 1`
+ # The outer [ ] is to prevent m4 from eating the [] in the sed expression.
+ [ OBJCOPY_VERSION_CHECK=`$ECHO $OBJCOPY_VERSION | $SED -n \
+ -e 's/.* //' \
+ -e '/^[01]\./b bad' \
+ -e '/^2\./{' \
+ -e ' s/^2\.//' \
+ -e ' /^[0-9]$/b bad' \
+ -e ' /^[0-9]\./b bad' \
+ -e ' /^1[0-9]$/b bad' \
+ -e ' /^1[0-9]\./b bad' \
+ -e ' /^20\./b bad' \
+ -e ' /^21\.0$/b bad' \
+ -e ' /^21\.0\./b bad' \
+ -e '}' \
+ -e ':good' \
+ -e 's/.*/VALID_VERSION/p' \
+ -e 'q' \
+ -e ':bad' \
+ -e 's/.*/BAD_VERSION/p' \
+ -e 'q'` ]
+ if test "x$OBJCOPY_VERSION_CHECK" = xBAD_VERSION; then
+ OBJCOPY=
+ AC_MSG_WARN([Ignoring found objcopy since it is broken (prior to 2.21.1). No debug symbols will be generated.])
+ AC_MSG_NOTICE([objcopy reports version $OBJCOPY_VERSION])
+ AC_MSG_NOTICE([Note: patch 149063-01 or newer contains the correct Solaris 10 SPARC version])
+ AC_MSG_NOTICE([Note: patch 149064-01 or newer contains the correct Solaris 10 X86 version])
+ AC_MSG_NOTICE([Note: Solaris 11 Update 1 contains the correct version])
+ fi
+ fi
+ fi
+ fi
+
+ BASIC_CHECK_TOOLS(OBJDUMP, [gobjdump objdump])
+ if test "x$OBJDUMP" != x; then
+ # Only used for compare.sh; we can live without it. BASIC_FIXUP_EXECUTABLE
+ # bails if argument is missing.
+ BASIC_FIXUP_EXECUTABLE(OBJDUMP)
+ fi
+])
+
+# Setup the build tools (i.e, the compiler and linker used to build programs
+# that should be run on the build platform, not the target platform, as a build
+# helper). Since the non-cross-compile case uses the normal, target compilers
+# for this, we can only do this after these have been setup.
+AC_DEFUN_ONCE([TOOLCHAIN_SETUP_BUILD_COMPILERS],
+[
+ if test "x$COMPILE_TYPE" = "xcross"; then
+ # Now we need 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. Also, we need to do this without adding a tools dir to the
+ # path, otherwise we might pick up cross-compilers which don't use standard
+ # naming.
+
+ OLDPATH="$PATH"
+
+ AC_ARG_WITH(build-devkit, [AS_HELP_STRING([--with-build-devkit],
+ [Devkit to use for the build platform toolchain])])
+ if test "x$with_build_devkit" = "xyes"; then
+ AC_MSG_ERROR([--with-build-devkit must have a value])
+ elif test -n "$with_build_devkit"; then
+ if test ! -d "$with_build_devkit"; then
+ AC_MSG_ERROR([--with-build-devkit points to non existing dir: $with_build_devkit])
+ else
+ BASIC_FIXUP_PATH([with_build_devkit])
+ BUILD_DEVKIT_ROOT="$with_build_devkit"
+ # Check for a meta data info file in the root of the devkit
+ if test -f "$BUILD_DEVKIT_ROOT/devkit.info"; then
+ # Process devkit.info so that existing devkit variables are not
+ # modified by this
+ $SED -e "s/^DEVKIT_/BUILD_DEVKIT_/g" \
+ -e "s/\$DEVKIT_ROOT/\$BUILD_DEVKIT_ROOT/g" \
+ -e "s/\$host/\$build/g" \
+ $BUILD_DEVKIT_ROOT/devkit.info \
+ > $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
+ . $CONFIGURESUPPORT_OUTPUTDIR/build-devkit.info
+ # This potentially sets the following:
+ # A descriptive name of the devkit
+ BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_NAME])
+ # Corresponds to --with-extra-path
+ BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_EXTRA_PATH])
+ # Corresponds to --with-toolchain-path
+ BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_TOOLCHAIN_PATH])
+ # Corresponds to --with-sysroot
+ BASIC_EVAL_DEVKIT_VARIABLE([BUILD_DEVKIT_SYSROOT])
+ # Skip the Window specific parts
+ fi
+
+ AC_MSG_CHECKING([for build platform devkit])
+ if test "x$BUILD_DEVKIT_NAME" != x; then
+ AC_MSG_RESULT([$BUILD_DEVKIT_NAME in $BUILD_DEVKIT_ROOT])
+ else
+ AC_MSG_RESULT([$BUILD_DEVKIT_ROOT])
+ fi
+
+ BUILD_SYSROOT="$BUILD_DEVKIT_SYSROOT"
+ FLAGS_SETUP_SYSROOT_FLAGS([BUILD_])
+
+ # Fallback default of just /bin if DEVKIT_PATH is not defined
+ if test "x$BUILD_DEVKIT_TOOLCHAIN_PATH" = x; then
+ BUILD_DEVKIT_TOOLCHAIN_PATH="$BUILD_DEVKIT_ROOT/bin"
+ fi
+ PATH="$BUILD_DEVKIT_TOOLCHAIN_PATH:$BUILD_DEVKIT_EXTRA_PATH"
+ fi
+ fi
+
+ # FIXME: we should list the discovered compilers as an exclude pattern!
+ # If we do that, we can do this detection before POST_DETECTION, and still
+ # find the build compilers in the tools dir, if needed.
+ BASIC_REQUIRE_PROGS(BUILD_CC, [cl cc gcc])
+ BASIC_FIXUP_EXECUTABLE(BUILD_CC)
+ BASIC_REQUIRE_PROGS(BUILD_CXX, [cl CC g++])
+ BASIC_FIXUP_EXECUTABLE(BUILD_CXX)
+ BASIC_PATH_PROGS(BUILD_NM, nm gcc-nm)
+ BASIC_FIXUP_EXECUTABLE(BUILD_NM)
+ BASIC_PATH_PROGS(BUILD_AR, ar gcc-ar)
+ BASIC_FIXUP_EXECUTABLE(BUILD_AR)
+ BASIC_PATH_PROGS(BUILD_OBJCOPY, objcopy)
+ BASIC_FIXUP_EXECUTABLE(BUILD_OBJCOPY)
+ BASIC_PATH_PROGS(BUILD_STRIP, strip)
+ BASIC_FIXUP_EXECUTABLE(BUILD_STRIP)
+ # Assume the C compiler is the assembler
+ BUILD_AS="$BUILD_CC -c"
+ # Just like for the target compiler, use the compiler as linker
+ BUILD_LD="$BUILD_CC"
+ BUILD_LDCXX="$BUILD_CXX"
+
+ PATH="$OLDPATH"
+
+ TOOLCHAIN_EXTRACT_COMPILER_VERSION(BUILD_CC, [BuildC])
+ TOOLCHAIN_EXTRACT_COMPILER_VERSION(BUILD_CXX, [BuildC++])
+ TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS([BUILD_], [OPENJDK_BUILD_])
+ else
+ # If we are not cross compiling, use the normal target compilers for
+ # building the build platform executables.
+ BUILD_CC="$CC"
+ BUILD_CXX="$CXX"
+ BUILD_LD="$LD"
+ BUILD_LDCXX="$LDCXX"
+ BUILD_NM="$NM"
+ BUILD_AS="$AS"
+ BUILD_OBJCOPY="$OBJCOPY"
+ BUILD_STRIP="$STRIP"
+ BUILD_SYSROOT_CFLAGS="$SYSROOT_CFLAGS"
+ BUILD_SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS"
+ BUILD_AR="$AR"
+
+ TOOLCHAIN_PREPARE_FOR_VERSION_COMPARISONS([], [OPENJDK_BUILD_])
+ fi
+
+ AC_SUBST(BUILD_CC)
+ AC_SUBST(BUILD_CXX)
+ AC_SUBST(BUILD_LD)
+ AC_SUBST(BUILD_LDCXX)
+ AC_SUBST(BUILD_NM)
+ AC_SUBST(BUILD_AS)
+ AC_SUBST(BUILD_SYSROOT_CFLAGS)
+ AC_SUBST(BUILD_SYSROOT_LDFLAGS)
+ AC_SUBST(BUILD_AR)
+])
+
+# Do some additional checks on the detected tools.
+AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS],
+[
+ # The package path is used only on macosx?
+ # FIXME: clean this up, and/or move it elsewhere.
+ PACKAGE_PATH=/opt/local
+ AC_SUBST(PACKAGE_PATH)
+
+ # Check for extra potential brokenness.
+ if test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ # On Windows, double-check that we got the right compiler.
+ CC_VERSION_OUTPUT=`$CC 2>&1 | $HEAD -n 1 | $TR -d '\r'`
+ COMPILER_CPU_TEST=`$ECHO $CC_VERSION_OUTPUT | $SED -n "s/^.* \(.*\)$/\1/p"`
+ if test "x$OPENJDK_TARGET_CPU" = "xx86"; then
+ if test "x$COMPILER_CPU_TEST" != "x80x86" -a "x$COMPILER_CPU_TEST" != "xx86"; then
+ AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "80x86" or "x86".])
+ fi
+ elif test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
+ if test "x$COMPILER_CPU_TEST" != "xx64"; then
+ AC_MSG_ERROR([Target CPU mismatch. We are building for $OPENJDK_TARGET_CPU but CL is for "$COMPILER_CPU_TEST"; expected "x64".])
+ fi
+ fi
+ fi
+
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ # If this is a --hash-style=gnu system, use --hash-style=both, why?
+ HAS_GNU_HASH=`$CC -dumpspecs 2>/dev/null | $GREP 'hash-style=gnu'`
+ # This is later checked when setting flags.
+
+ # "-Og" suppported for GCC 4.8 and later
+ CFLAG_OPTIMIZE_DEBUG_FLAG="-Og"
+ FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$CFLAG_OPTIMIZE_DEBUG_FLAG],
+ IF_TRUE: [HAS_CFLAG_OPTIMIZE_DEBUG=true],
+ IF_FALSE: [HAS_CFLAG_OPTIMIZE_DEBUG=false])
+
+ # "-z relro" supported in GNU binutils 2.17 and later
+ LINKER_RELRO_FLAG="-Wl,-z,relro"
+ FLAGS_LINKER_CHECK_ARGUMENTS(ARGUMENT: [$LINKER_RELRO_FLAG],
+ IF_TRUE: [HAS_LINKER_RELRO=true],
+ IF_FALSE: [HAS_LINKER_RELRO=false])
+
+ # "-z now" supported in GNU binutils 2.11 and later
+ LINKER_NOW_FLAG="-Wl,-z,now"
+ FLAGS_LINKER_CHECK_ARGUMENTS(ARGUMENT: [$LINKER_NOW_FLAG],
+ IF_TRUE: [HAS_LINKER_NOW=true],
+ IF_FALSE: [HAS_LINKER_NOW=false])
+ fi
+
+ # Check for broken SuSE 'ld' for which 'Only anonymous version tag is allowed
+ # in executable.'
+ USING_BROKEN_SUSE_LD=no
+ if test "x$OPENJDK_TARGET_OS" = xlinux && test "x$TOOLCHAIN_TYPE" = xgcc; then
+ AC_MSG_CHECKING([for broken SuSE 'ld' which only understands anonymous version tags in executables])
+ $ECHO "SUNWprivate_1.1 { local: *; };" > version-script.map
+ $ECHO "int main() { }" > main.c
+ if $CXX -Wl,-version-script=version-script.map main.c 2>&AS_MESSAGE_LOG_FD >&AS_MESSAGE_LOG_FD; then
+ AC_MSG_RESULT(no)
+ USING_BROKEN_SUSE_LD=no
+ else
+ AC_MSG_RESULT(yes)
+ USING_BROKEN_SUSE_LD=yes
+ fi
+ $RM version-script.map main.c a.out
+ fi
+ AC_SUBST(USING_BROKEN_SUSE_LD)
+
+ # Setup hotspot lecagy names for toolchains
+ HOTSPOT_TOOLCHAIN_TYPE=$TOOLCHAIN_TYPE
+ if test "x$TOOLCHAIN_TYPE" = xclang; then
+ HOTSPOT_TOOLCHAIN_TYPE=gcc
+ elif test "x$TOOLCHAIN_TYPE" = xsolstudio; then
+ HOTSPOT_TOOLCHAIN_TYPE=sparcWorks
+ elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then
+ HOTSPOT_TOOLCHAIN_TYPE=visCPP
+ fi
+ AC_SUBST(HOTSPOT_TOOLCHAIN_TYPE)
+])
+
+# Setup the JTReg Regression Test Harness.
+AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG],
+[
+ AC_ARG_WITH(jtreg, [AS_HELP_STRING([--with-jtreg],
+ [Regression Test Harness @<:@probed@:>@])])
+
+ if test "x$with_jtreg" = xno; then
+ # jtreg disabled
+ AC_MSG_CHECKING([for jtreg test harness])
+ AC_MSG_RESULT([no, disabled])
+ elif test "x$with_jtreg" != xyes && test "x$with_jtreg" != x; then
+ # An explicit path is specified, use it.
+ JT_HOME="$with_jtreg"
+ if test ! -d "$JT_HOME"; then
+ AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not exist])
+ fi
+
+ if test ! -e "$JT_HOME/lib/jtreg.jar"; then
+ AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg is not a valid jtreg home])
+ fi
+
+ JTREGEXE="$JT_HOME/bin/jtreg"
+ if test ! -x "$JTREGEXE"; then
+ AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not contain valid jtreg executable])
+ fi
+
+ AC_MSG_CHECKING([for jtreg test harness])
+ AC_MSG_RESULT([$JT_HOME])
+ else
+ # Try to locate jtreg
+ if test "x$JT_HOME" != x; then
+ # JT_HOME set in environment, use it
+ if test ! -d "$JT_HOME"; then
+ AC_MSG_WARN([Ignoring JT_HOME pointing to invalid directory: $JT_HOME])
+ JT_HOME=
+ else
+ if test ! -e "$JT_HOME/lib/jtreg.jar"; then
+ AC_MSG_WARN([Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME])
+ JT_HOME=
+ elif test ! -x "$JT_HOME/bin/jtreg"; then
+ AC_MSG_WARN([Ignoring JT_HOME which does not contain valid jtreg executable: $JT_HOME])
+ JT_HOME=
+ else
+ JTREGEXE="$JT_HOME/bin/jtreg"
+ AC_MSG_NOTICE([Located jtreg using JT_HOME from environment])
+ fi
+ fi
+ fi
+
+ if test "x$JT_HOME" = x; then
+ # JT_HOME is not set in environment, or was deemed invalid.
+ # Try to find jtreg on path
+ BASIC_PATH_PROGS(JTREGEXE, jtreg)
+ if test "x$JTREGEXE" != x; then
+ # That's good, now try to derive JT_HOME
+ JT_HOME=`(cd $($DIRNAME $JTREGEXE)/.. && pwd)`
+ if test ! -e "$JT_HOME/lib/jtreg.jar"; then
+ AC_MSG_WARN([Ignoring jtreg from path since a valid jtreg home cannot be found])
+ JT_HOME=
+ JTREGEXE=
+ else
+ AC_MSG_NOTICE([Located jtreg using jtreg executable in path])
+ fi
+ fi
+ fi
+
+ AC_MSG_CHECKING([for jtreg test harness])
+ if test "x$JT_HOME" != x; then
+ AC_MSG_RESULT([$JT_HOME])
+ else
+ AC_MSG_RESULT([no, not found])
+
+ if test "x$with_jtreg" = xyes; then
+ AC_MSG_ERROR([--with-jtreg was specified, but no jtreg found.])
+ fi
+ fi
+ fi
+
+ BASIC_FIXUP_EXECUTABLE(JTREGEXE)
+ BASIC_FIXUP_PATH(JT_HOME)
+ AC_SUBST(JT_HOME)
+ AC_SUBST(JTREGEXE)
+])
diff --git a/common/autoconf/toolchain_windows.m4 b/common/autoconf/toolchain_windows.m4
new file mode 100644
index 0000000..f2304df
--- /dev/null
+++ b/common/autoconf/toolchain_windows.m4
@@ -0,0 +1,610 @@
+#
+# 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.
+#
+
+################################################################################
+# The order of these defines the priority by which we try to find them.
+VALID_VS_VERSIONS="2013 2012 2010"
+
+VS_DESCRIPTION_2010="Microsoft Visual Studio 2010"
+VS_VERSION_INTERNAL_2010=100
+VS_MSVCR_2010=msvcr100.dll
+# We don't use msvcp on Visual Studio 2010
+#VS_MSVCP_2010=msvcp100.dll
+VS_ENVVAR_2010="VS100COMNTOOLS"
+VS_VS_INSTALLDIR_2010="Microsoft Visual Studio 10.0"
+VS_SDK_INSTALLDIR_2010="Microsoft SDKs/Windows/v7.1"
+VS_VS_PLATFORM_NAME_2010="v100"
+VS_SDK_PLATFORM_NAME_2010="Windows7.1SDK"
+
+VS_DESCRIPTION_2012="Microsoft Visual Studio 2012"
+VS_VERSION_INTERNAL_2012=110
+VS_MSVCR_2012=msvcr110.dll
+VS_MSVCP_2012=msvcp110.dll
+VS_ENVVAR_2012="VS110COMNTOOLS"
+VS_VS_INSTALLDIR_2012="Microsoft Visual Studio 11.0"
+VS_SDK_INSTALLDIR_2012=
+VS_VS_PLATFORM_NAME_2012="v110"
+VS_SDK_PLATFORM_NAME_2012=
+
+VS_DESCRIPTION_2013="Microsoft Visual Studio 2013"
+VS_VERSION_INTERNAL_2013=120
+VS_MSVCR_2013=msvcr120.dll
+VS_MSVCP_2013=msvcp120.dll
+VS_ENVVAR_2013="VS120COMNTOOLS"
+VS_VS_INSTALLDIR_2013="Microsoft Visual Studio 12.0"
+VS_SDK_INSTALLDIR_2013=
+VS_VS_PLATFORM_NAME_2013="v120"
+VS_SDK_PLATFORM_NAME_2013=
+
+################################################################################
+
+AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT],
+[
+ if test "x$VS_ENV_CMD" = x; then
+ VS_VERSION="$1"
+ VS_BASE="$2"
+ METHOD="$3"
+
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ VCVARSFILE="vc/bin/vcvars32.bat"
+ else
+ VCVARSFILE="vc/bin/amd64/vcvars64.bat"
+ fi
+
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(VS_BASE)
+ if test -d "$VS_BASE"; then
+ if test -f "$VS_BASE/$VCVARSFILE"; then
+ AC_MSG_NOTICE([Found Visual Studio installation at $VS_BASE using $METHOD])
+ VS_ENV_CMD="$VS_BASE/$VCVARSFILE"
+ # PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
+ # 'LIB_BUILD_FREETYPE' in libraries.m4) and must be one of 'v100', 'v110' or 'v120' for VS 2010, 2012 or VS2013
+ eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}"
+ else
+ AC_MSG_NOTICE([Found Visual Studio installation at $VS_BASE using $METHOD])
+ AC_MSG_NOTICE([Warning: $VCVARSFILE is missing, this is probably Visual Studio Express. Ignoring])
+ fi
+ fi
+ fi
+])
+
+################################################################################
+
+AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT],
+[
+ if test "x$VS_ENV_CMD" = x; then
+ VS_VERSION="$1"
+ WIN_SDK_BASE="$2"
+ METHOD="$3"
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(WIN_SDK_BASE)
+ if test -d "$WIN_SDK_BASE"; then
+ # There have been cases of partial or broken SDK installations. A missing
+ # lib dir is not going to work.
+ if test ! -d "$WIN_SDK_BASE/lib"; then
+ AC_MSG_NOTICE([Found Windows SDK installation at $WIN_SDK_BASE using $METHOD])
+ AC_MSG_NOTICE([Warning: Installation is broken, lib dir is missing. Ignoring])
+ elif test -f "$WIN_SDK_BASE/Bin/SetEnv.Cmd"; then
+ AC_MSG_NOTICE([Found Windows SDK installation at $WIN_SDK_BASE using $METHOD])
+ VS_ENV_CMD="$WIN_SDK_BASE/Bin/SetEnv.Cmd"
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ VS_ENV_ARGS="/x86"
+ else
+ VS_ENV_ARGS="/x64"
+ fi
+ # PLATFORM_TOOLSET is used during the compilation of the freetype sources (see
+ # 'LIB_BUILD_FREETYPE' in libraries.m4) and must be 'Windows7.1SDK' for Windows7.1SDK
+ # TODO: improve detection for other versions of SDK
+ eval PLATFORM_TOOLSET="\${VS_SDK_PLATFORM_NAME_${VS_VERSION}}"
+ else
+ AC_MSG_NOTICE([Found Windows SDK installation at $WIN_SDK_BASE using $METHOD])
+ AC_MSG_NOTICE([Warning: Installation is broken, SetEnv.Cmd is missing. Ignoring])
+ fi
+ fi
+ fi
+])
+
+################################################################################
+# Finds the bat or cmd file in Visual Studio or the SDK that sets up a proper
+# build environment and assigns it to VS_ENV_CMD
+AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE],
+[
+ VS_VERSION="$1"
+ eval VS_COMNTOOLS_VAR="\${VS_ENVVAR_${VS_VERSION}}"
+ eval VS_COMNTOOLS="\$${VS_COMNTOOLS_VAR}"
+ eval VS_INSTALL_DIR="\${VS_VS_INSTALLDIR_${VS_VERSION}}"
+ eval SDK_INSTALL_DIR="\${VS_SDK_INSTALLDIR_${VS_VERSION}}"
+
+ # When using --with-tools-dir, assume it points to the correct and default
+ # version of Visual Studio or that --with-toolchain-version was also set.
+ if test "x$with_tools_dir" != x; then
+ TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
+ [$with_tools_dir/../..], [--with-tools-dir])
+ TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
+ [$with_tools_dir/../../..], [--with-tools-dir])
+ if test "x$VS_ENV_CMD" = x; then
+ # Having specified an argument which is incorrect will produce an instant failure;
+ # we should not go on looking
+ AC_MSG_NOTICE([The path given by --with-tools-dir does not contain a valid])
+ AC_MSG_NOTICE([Visual Studio installation. Please point to the VC/bin or VC/bin/amd64])
+ AC_MSG_NOTICE([directory within the Visual Studio installation])
+ AC_MSG_ERROR([Cannot locate a valid Visual Studio installation])
+ fi
+ fi
+
+ VS_ENV_CMD=""
+ VS_ENV_ARGS=""
+
+ if test "x$VS_COMNTOOLS" != x; then
+ TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
+ [$VS_COMNTOOLS/../..], [$VS_COMNTOOLS_VAR variable])
+ fi
+ if test "x$PROGRAMFILES" != x; then
+ TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
+ [$PROGRAMFILES/$VS_INSTALL_DIR], [well-known name])
+ fi
+ # Work around the insanely named ProgramFiles(x86) env variable
+ PROGRAMFILES_X86="`env | $SED -n 's/^ProgramFiles(x86)=//p'`"
+ if test "x$PROGRAMFILES_X86" != x; then
+ TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
+ [$PROGRAMFILES_X86/$VS_INSTALL_DIR], [well-known name])
+ fi
+ TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
+ [C:/Program Files/$VS_INSTALL_DIR], [well-known name])
+ TOOLCHAIN_CHECK_POSSIBLE_VISUAL_STUDIO_ROOT([${VS_VERSION}],
+ [C:/Program Files (x86)/$VS_INSTALL_DIR], [well-known name])
+
+ if test "x$SDK_INSTALL_DIR" != x; then
+ if test "x$ProgramW6432" != x; then
+ TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([${VS_VERSION}],
+ [$ProgramW6432/$SDK_INSTALL_DIR], [well-known name])
+ fi
+ if test "x$PROGRAMW6432" != x; then
+ TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([${VS_VERSION}],
+ [$PROGRAMW6432/$SDK_INSTALL_DIR], [well-known name])
+ fi
+ if test "x$PROGRAMFILES" != x; then
+ TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([${VS_VERSION}],
+ [$PROGRAMFILES/$SDK_INSTALL_DIR], [well-known name])
+ fi
+ TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([${VS_VERSION}],
+ [C:/Program Files/$SDK_INSTALL_DIR], [well-known name])
+ TOOLCHAIN_CHECK_POSSIBLE_WIN_SDK_ROOT([${VS_VERSION}],
+ [C:/Program Files (x86)/$SDK_INSTALL_DIR], [well-known name])
+ fi
+])
+
+################################################################################
+
+AC_DEFUN([TOOLCHAIN_FIND_VISUAL_STUDIO],
+[
+ AC_ARG_WITH(toolchain-version, [AS_HELP_STRING([--with-toolchain-version],
+ [the version of the toolchain to look for, use '--help' to show possible values @<:@platform dependent@:>@])])
+
+ if test "x$with_toolchain_version" = xlist; then
+ # List all toolchains
+ AC_MSG_NOTICE([The following toolchain versions are valid on this platform:])
+ for version in $VALID_VS_VERSIONS; do
+ eval VS_DESCRIPTION=\${VS_DESCRIPTION_$version}
+ $PRINTF " %-10s %s\n" $version "$VS_DESCRIPTION"
+ done
+
+ exit 0
+ elif test "x$DEVKIT_VS_VERSION" != x; then
+ VS_VERSION=$DEVKIT_VS_VERSION
+ TOOLCHAIN_VERSION=$VS_VERSION
+ eval VS_DESCRIPTION="\${VS_DESCRIPTION_${VS_VERSION}}"
+ eval VS_VERSION_INTERNAL="\${VS_VERSION_INTERNAL_${VS_VERSION}}"
+ eval MSVCR_NAME="\${VS_MSVCR_${VS_VERSION}}"
+ eval MSVCP_NAME="\${VS_MSVCP_${VS_VERSION}}"
+ eval PLATFORM_TOOLSET="\${VS_VS_PLATFORM_NAME_${VS_VERSION}}"
+ VS_PATH="$TOOLCHAIN_PATH:$PATH"
+
+ # Convert DEVKIT_VS_INCLUDE into windows style VS_INCLUDE so that it
+ # can still be exported as INCLUDE for compiler invocations without
+ # SYSROOT_CFLAGS
+ OLDIFS="$IFS"
+ IFS=";"
+ for i in $DEVKIT_VS_INCLUDE; do
+ ipath=$i
+ BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([ipath])
+ VS_INCLUDE="$VS_INCLUDE;$ipath"
+ done
+ # Convert DEVKIT_VS_LIB into VS_LIB so that it can still be exported
+ # as LIB for compiler invocations without SYSROOT_LDFLAGS
+ for i in $DEVKIT_VS_LIB; do
+ libpath=$i
+ BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([libpath])
+ VS_LIB="$VS_LIB;$libpath"
+ done
+ IFS="$OLDIFS"
+
+ AC_MSG_NOTICE([Found devkit $VS_DESCRIPTION])
+
+ elif test "x$with_toolchain_version" != x; then
+ # User override; check that it is valid
+ if test "x${VALID_VS_VERSIONS/$with_toolchain_version/}" = "x${VALID_VS_VERSIONS}"; then
+ AC_MSG_NOTICE([Visual Studio version $with_toolchain_version is not valid.])
+ AC_MSG_NOTICE([Valid Visual Studio versions: $VALID_VS_VERSIONS.])
+ AC_MSG_ERROR([Cannot continue.])
+ fi
+ VS_VERSIONS_PROBE_LIST="$with_toolchain_version"
+ else
+ # No flag given, use default
+ VS_VERSIONS_PROBE_LIST="$VALID_VS_VERSIONS"
+ fi
+
+ for VS_VERSION in $VS_VERSIONS_PROBE_LIST; do
+ TOOLCHAIN_FIND_VISUAL_STUDIO_BAT_FILE([$VS_VERSION])
+ if test "x$VS_ENV_CMD" != x; then
+ TOOLCHAIN_VERSION=$VS_VERSION
+ eval VS_DESCRIPTION="\${VS_DESCRIPTION_${VS_VERSION}}"
+ eval VS_VERSION_INTERNAL="\${VS_VERSION_INTERNAL_${VS_VERSION}}"
+ eval MSVCR_NAME="\${VS_MSVCR_${VS_VERSION}}"
+ eval MSVCP_NAME="\${VS_MSVCP_${VS_VERSION}}"
+ # The rest of the variables are already evaled while probing
+ AC_MSG_NOTICE([Found $VS_DESCRIPTION])
+ break
+ fi
+ done
+])
+
+################################################################################
+# Check if the VS env variables were setup prior to running configure.
+# If not, then find vcvarsall.bat and run it automatically, and integrate
+# the set env variables into the spec file.
+AC_DEFUN([TOOLCHAIN_SETUP_VISUAL_STUDIO_ENV],
+[
+ # Store path to cygwin link.exe to help excluding it when searching for
+ # VS linker. This must be done before changing the PATH when looking for VS.
+ AC_PATH_PROG(CYGWIN_LINK, link)
+ if test "x$CYGWIN_LINK" != x; then
+ AC_MSG_CHECKING([if the first found link.exe is actually the Cygwin link tool])
+ "$CYGWIN_LINK" --version > /dev/null
+ if test $? -eq 0 ; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ # This might be the VS linker. Don't exclude it later on.
+ CYGWIN_LINK=""
+ fi
+ fi
+
+ # First-hand choice is to locate and run the vsvars bat file.
+ TOOLCHAIN_FIND_VISUAL_STUDIO
+
+ # If we have a devkit, skip all of the below.
+ if test "x$DEVKIT_VS_VERSION" = x; then
+ if test "x$VS_ENV_CMD" != x; then
+ # We have found a Visual Studio environment on disk, let's extract variables from the vsvars bat file.
+ BASIC_FIXUP_EXECUTABLE(VS_ENV_CMD)
+
+ # Lets extract the variables that are set by vcvarsall.bat/vsvars32.bat/vsvars64.bat
+ AC_MSG_NOTICE([Trying to extract Visual Studio environment variables])
+
+ # We need to create a couple of temporary files.
+ VS_ENV_TMP_DIR="$CONFIGURESUPPORT_OUTPUTDIR/vs-env"
+ $MKDIR -p $VS_ENV_TMP_DIR
+
+ # Cannot use the VS10 setup script directly (since it only updates the DOS subshell environment).
+ # Instead create a shell script which will set the relevant variables when run.
+ WINPATH_VS_ENV_CMD="$VS_ENV_CMD"
+ BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([WINPATH_VS_ENV_CMD])
+ WINPATH_BASH="$BASH"
+ BASIC_WINDOWS_REWRITE_AS_WINDOWS_MIXED_PATH([WINPATH_BASH])
+
+ # Generate a DOS batch file which runs $VS_ENV_CMD, and then creates a shell
+ # script (executable by bash) that will setup the important variables.
+ EXTRACT_VC_ENV_BAT_FILE="$VS_ENV_TMP_DIR/extract-vs-env.bat"
+ $ECHO "@echo off" > $EXTRACT_VC_ENV_BAT_FILE
+ # This will end up something like:
+ # call C:/progra~2/micros~2.0/vc/bin/amd64/vcvars64.bat
+ $ECHO "call $WINPATH_VS_ENV_CMD $VS_ENV_ARGS" >> $EXTRACT_VC_ENV_BAT_FILE
+ # These will end up something like:
+ # C:/CygWin/bin/bash -c 'echo VS_PATH=\"$PATH\" > localdevenv.sh
+ # The trailing space for everyone except PATH is no typo, but is needed due
+ # to trailing \ in the Windows paths. These will be stripped later.
+ $ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+ $ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' \
+ >> $EXTRACT_VC_ENV_BAT_FILE
+
+ # Now execute the newly created bat file.
+ # The | cat is to stop SetEnv.Cmd to mess with system colors on msys.
+ # Change directory so we don't need to mess with Windows paths in redirects.
+ cd $VS_ENV_TMP_DIR
+ cmd /c extract-vs-env.bat | $CAT
+ cd $CURDIR
+
+ if test ! -s $VS_ENV_TMP_DIR/set-vs-env.sh; then
+ AC_MSG_NOTICE([Could not succesfully extract the envionment variables needed for the VS setup.])
+ AC_MSG_NOTICE([Try setting --with-tools-dir to the VC/bin directory within the VS installation])
+ AC_MSG_NOTICE([or run "bash.exe -l" from a VS command prompt and then run configure from there.])
+ AC_MSG_ERROR([Cannot continue])
+ fi
+
+ # Now set all paths and other env variables. This will allow the rest of
+ # the configure script to find and run the compiler in the proper way.
+ AC_MSG_NOTICE([Setting extracted environment variables])
+ . $VS_ENV_TMP_DIR/set-vs-env.sh
+ # Now we have VS_PATH, VS_INCLUDE, VS_LIB. For further checking, we
+ # also define VCINSTALLDIR, WindowsSdkDir and WINDOWSSDKDIR.
+ else
+ # We did not find a vsvars bat file, let's hope we are run from a VS command prompt.
+ AC_MSG_NOTICE([Cannot locate a valid Visual Studio installation, checking current environment])
+ fi
+ fi
+
+ # At this point, we should have correct variables in the environment, or we can't continue.
+ AC_MSG_CHECKING([for Visual Studio variables])
+
+ if test "x$VCINSTALLDIR" != x || test "x$WindowsSDKDir" != x \
+ || test "x$WINDOWSSDKDIR" != x || test "x$DEVKIT_NAME" != x; then
+ if test "x$VS_INCLUDE" = x || test "x$VS_LIB" = x; then
+ AC_MSG_RESULT([present but broken])
+ AC_MSG_ERROR([Your VC command prompt seems broken, INCLUDE and/or LIB is missing.])
+ else
+ AC_MSG_RESULT([ok])
+ # Remove any trailing "\" ";" and " " from the variables.
+ VS_INCLUDE=`$ECHO "$VS_INCLUDE" | $SED -e 's/\\\\*;* *$//'`
+ VS_LIB=`$ECHO "$VS_LIB" | $SED 's/\\\\*;* *$//'`
+ VCINSTALLDIR=`$ECHO "$VCINSTALLDIR" | $SED 's/\\\\* *$//'`
+ WindowsSDKDir=`$ECHO "$WindowsSDKDir" | $SED 's/\\\\* *$//'`
+ WINDOWSSDKDIR=`$ECHO "$WINDOWSSDKDIR" | $SED 's/\\\\* *$//'`
+ # Remove any paths containing # (typically F#) as that messes up make. This
+ # is needed if visual studio was installed with F# support.
+ VS_PATH=`$ECHO "$VS_PATH" | $SED 's/[[^:#]]*#[^:]*://g'`
+
+ AC_SUBST(VS_PATH)
+ AC_SUBST(VS_INCLUDE)
+ AC_SUBST(VS_LIB)
+
+ # Convert VS_INCLUDE into SYSROOT_CFLAGS
+ OLDIFS="$IFS"
+ IFS=";"
+ for i in $VS_INCLUDE; do
+ ipath=$i
+ # Only process non-empty elements
+ if test "x$ipath" != x; then
+ IFS="$OLDIFS"
+ # Check that directory exists before calling fixup_path
+ testpath=$ipath
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH([testpath])
+ if test -d "$testpath"; then
+ BASIC_FIXUP_PATH([ipath])
+ SYSROOT_CFLAGS="$SYSROOT_CFLAGS -I$ipath"
+ fi
+ IFS=";"
+ fi
+ done
+ # Convert VS_LIB into SYSROOT_LDFLAGS
+ for i in $VS_LIB; do
+ libpath=$i
+ # Only process non-empty elements
+ if test "x$libpath" != x; then
+ IFS="$OLDIFS"
+ # Check that directory exists before calling fixup_path
+ testpath=$libpath
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH([testpath])
+ if test -d "$testpath"; then
+ BASIC_FIXUP_PATH([libpath])
+ SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS -libpath:$libpath"
+ fi
+ IFS=";"
+ fi
+ done
+ IFS="$OLDIFS"
+ fi
+ else
+ AC_MSG_RESULT([not found])
+
+ if test "x$VS_ENV_CMD" = x; then
+ AC_MSG_NOTICE([Cannot locate a valid Visual Studio or Windows SDK installation on disk,])
+ AC_MSG_NOTICE([nor is this script run from a Visual Studio command prompt.])
+ else
+ AC_MSG_NOTICE([Running the extraction script failed.])
+ fi
+ AC_MSG_NOTICE([Try setting --with-tools-dir to the VC/bin directory within the VS installation])
+ AC_MSG_NOTICE([or run "bash.exe -l" from a VS command prompt and then run configure from there.])
+ AC_MSG_ERROR([Cannot continue])
+ fi
+])
+
+AC_DEFUN([TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL],
+[
+ DLL_NAME="$1"
+ POSSIBLE_MSVC_DLL="$2"
+ METHOD="$3"
+ if test -n "$POSSIBLE_MSVC_DLL" -a -e "$POSSIBLE_MSVC_DLL"; then
+ AC_MSG_NOTICE([Found $DLL_NAME at $POSSIBLE_MSVC_DLL using $METHOD])
+
+ # Need to check if the found msvcr is correct architecture
+ AC_MSG_CHECKING([found $DLL_NAME architecture])
+ MSVC_DLL_FILETYPE=`$FILE -b "$POSSIBLE_MSVC_DLL"`
+ if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+ # The MSYS 'file' command returns "PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit"
+ # on x32 and "PE32+ executable for MS Windows (DLL) (GUI) Mono/.Net assembly" on x64 systems.
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH="PE32 executable"
+ else
+ CORRECT_MSVCR_ARCH="PE32+ executable"
+ fi
+ else
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x32; then
+ CORRECT_MSVCR_ARCH=386
+ else
+ CORRECT_MSVCR_ARCH=x86-64
+ fi
+ fi
+ if $ECHO "$MSVC_DLL_FILETYPE" | $GREP "$CORRECT_MSVCR_ARCH" 2>&1 > /dev/null; then
+ AC_MSG_RESULT([ok])
+ MSVC_DLL="$POSSIBLE_MSVC_DLL"
+ BASIC_FIXUP_PATH(MSVC_DLL)
+ AC_MSG_CHECKING([for $DLL_NAME])
+ AC_MSG_RESULT([$MSVC_DLL])
+ else
+ AC_MSG_RESULT([incorrect, ignoring])
+ AC_MSG_NOTICE([The file type of the located $DLL_NAME is $MSVC_DLL_FILETYPE])
+ fi
+ fi
+])
+
+AC_DEFUN([TOOLCHAIN_SETUP_MSVC_DLL],
+[
+ DLL_NAME="$1"
+ MSVC_DLL=
+
+ if test "x$MSVC_DLL" = x; then
+ # Probe: Using well-known location from Visual Studio 10.0
+ if test "x$VCINSTALLDIR" != x; then
+ CYGWIN_VC_INSTALL_DIR="$VCINSTALLDIR"
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(CYGWIN_VC_INSTALL_DIR)
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/x64/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME"
+ else
+ POSSIBLE_MSVC_DLL="$CYGWIN_VC_INSTALL_DIR/redist/x86/Microsoft.VC${VS_VERSION_INTERNAL}.CRT/$DLL_NAME"
+ fi
+ $ECHO "POSSIBLE_MSVC_DLL $POSSIBLEMSVC_DLL"
+ TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$POSSIBLE_MSVC_DLL],
+ [well-known location in VCINSTALLDIR])
+ fi
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ # Probe: Check in the Boot JDK directory.
+ POSSIBLE_MSVC_DLL="$BOOT_JDK/bin/$DLL_NAME"
+ TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$POSSIBLE_MSVC_DLL],
+ [well-known location in Boot JDK])
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ # Probe: Look in the Windows system32 directory
+ CYGWIN_SYSTEMROOT="$SYSTEMROOT"
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(CYGWIN_SYSTEMROOT)
+ POSSIBLE_MSVC_DLL="$CYGWIN_SYSTEMROOT/system32/$DLL_NAME"
+ TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$POSSIBLE_MSVC_DLL],
+ [well-known location in SYSTEMROOT])
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ # Probe: If Visual Studio Express is installed, there is usually one with the debugger
+ if test "x$VS100COMNTOOLS" != x; then
+ CYGWIN_VS_TOOLS_DIR="$VS100COMNTOOLS/.."
+ BASIC_WINDOWS_REWRITE_AS_UNIX_PATH(CYGWIN_VS_TOOLS_DIR)
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VS_TOOLS_DIR" -name $DLL_NAME \
+ | $GREP -i /x64/ | $HEAD --lines 1`
+ else
+ POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VS_TOOLS_DIR" -name $DLL_NAME \
+ | $GREP -i /x86/ | $HEAD --lines 1`
+ fi
+ TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$POSSIBLE_MSVC_DLL],
+ [search of VS100COMNTOOLS])
+ fi
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ # Probe: Search wildly in the VCINSTALLDIR. We've probably lost by now.
+ # (This was the original behaviour; kept since it might turn something up)
+ if test "x$CYGWIN_VC_INSTALL_DIR" != x; then
+ if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then
+ POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
+ | $GREP x64 | $HEAD --lines 1`
+ else
+ POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
+ | $GREP x86 | $GREP -v ia64 | $GREP -v x64 | $HEAD --lines 1`
+ if test "x$POSSIBLE_MSVC_DLL" = x; then
+ # We're grasping at straws now...
+ POSSIBLE_MSVC_DLL=`$FIND "$CYGWIN_VC_INSTALL_DIR" -name $DLL_NAME \
+ | $HEAD --lines 1`
+ fi
+ fi
+
+ TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL([$DLL_NAME], [$POSSIBLE_MSVC_DLL],
+ [search of VCINSTALLDIR])
+ fi
+ fi
+
+ if test "x$MSVC_DLL" = x; then
+ AC_MSG_CHECKING([for $DLL_NAME])
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Could not find $DLL_NAME. Please specify using --with-msvcr-dll.])
+ fi
+])
+
+AC_DEFUN([TOOLCHAIN_SETUP_VS_RUNTIME_DLLS],
+[
+ AC_ARG_WITH(msvcr-dll, [AS_HELP_STRING([--with-msvcr-dll],
+ [path to microsoft C runtime dll (msvcr*.dll) (Windows only) @<:@probed@:>@])])
+
+ if test "x$with_msvcr_dll" != x; then
+ # If given explicitly by user, do not probe. If not present, fail directly.
+ TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCR_NAME, [$with_msvcr_dll], [--with-msvcr-dll])
+ if test "x$MSVC_DLL" = x; then
+ AC_MSG_ERROR([Could not find a proper $MSVCR_NAME as specified by --with-msvcr-dll])
+ fi
+ MSVCR_DLL="$MSVC_DLL"
+ elif test "x$DEVKIT_MSVCR_DLL" != x; then
+ TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCR_NAME, [$DEVKIT_MSVCR_DLL], [devkit])
+ if test "x$MSVC_DLL" = x; then
+ AC_MSG_ERROR([Could not find a proper $MSVCR_NAME as specified by devkit])
+ fi
+ MSVCR_DLL="$MSVC_DLL"
+ else
+ TOOLCHAIN_SETUP_MSVC_DLL([${MSVCR_NAME}])
+ MSVCR_DLL="$MSVC_DLL"
+ fi
+ AC_SUBST(MSVCR_DLL)
+
+ AC_ARG_WITH(msvcp-dll, [AS_HELP_STRING([--with-msvcp-dll],
+ [path to microsoft C++ runtime dll (msvcp*.dll) (Windows only) @<:@probed@:>@])])
+
+ if test "x$MSVCP_NAME" != "x"; then
+ if test "x$with_msvcp_dll" != x; then
+ # If given explicitly by user, do not probe. If not present, fail directly.
+ TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCP_NAME, [$with_msvcp_dll], [--with-msvcp-dll])
+ if test "x$MSVC_DLL" = x; then
+ AC_MSG_ERROR([Could not find a proper $MSVCP_NAME as specified by --with-msvcp-dll])
+ fi
+ MSVCP_DLL="$MSVC_DLL"
+ elif test "x$DEVKIT_MSVCP_DLL" != x; then
+ TOOLCHAIN_CHECK_POSSIBLE_MSVC_DLL($MSVCP_NAME, [$DEVKIT_MSVCP_DLL], [devkit])
+ if test "x$MSVC_DLL" = x; then
+ AC_MSG_ERROR([Could not find a proper $MSVCP_NAME as specified by devkit])
+ fi
+ MSVCP_DLL="$MSVC_DLL"
+ else
+ TOOLCHAIN_SETUP_MSVC_DLL([${MSVCP_NAME}])
+ MSVCP_DLL="$MSVC_DLL"
+ fi
+ AC_SUBST(MSVCP_DLL)
+ fi
+])
diff --git a/common/autoconf/version-numbers b/common/autoconf/version-numbers
new file mode 100644
index 0000000..4cb5467
--- /dev/null
+++ b/common/autoconf/version-numbers
@@ -0,0 +1,42 @@
+#
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# Default version numbers to use unless overridden by configure
+
+DEFAULT_VERSION_MAJOR=9
+DEFAULT_VERSION_MINOR=0
+DEFAULT_VERSION_SECURITY=0
+DEFAULT_VERSION_PATCH=0
+
+LAUNCHER_NAME=openjdk
+PRODUCT_NAME=OpenJDK
+PRODUCT_SUFFIX="Runtime Environment"
+JDK_RC_PLATFORM_NAME=Platform
+COMPANY_NAME=N/A
+HOTSPOT_VM_DISTRO="OpenJDK"
+
+# Might need better names for these
+MACOSX_BUNDLE_NAME_BASE="OpenJDK"
+MACOSX_BUNDLE_ID_BASE="net.java.openjdk"
diff --git a/common/bin/blessed-modifier-order.sh b/common/bin/blessed-modifier-order.sh
new file mode 100644
index 0000000..4e999e0
--- /dev/null
+++ b/common/bin/blessed-modifier-order.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+#
+# Copyright 2015 Google, Inc. 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.
+
+usage() {
+ (
+ echo "$0 DIR ..."
+ echo "Modifies in place all the java source files found"
+ echo "in the given directories so that all java language modifiers"
+ echo "are in the canonical order given by Modifier#toString()."
+ echo "Tries to get it right even within javadoc comments,"
+ echo "and even if the list of modifiers spans 2 lines."
+ echo
+ echo "See:"
+ echo "https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Modifier.html#toString-int-"
+ echo
+ echo "Example:"
+ echo "$0 jdk/src/java.base jdk/test/java/{util,io,lang}"
+ ) >&2
+ exit 1
+}
+
+set -eu
+declare -ar dirs=("$@")
+[[ "${#dirs[@]}" > 0 ]] || usage
+for dir in "${dirs[@]}"; do [[ -d "$dir" ]] || usage; done
+
+declare -ar modifiers=(
+ public protected private
+ abstract static final transient
+ volatile synchronized native strictfp
+)
+declare -r SAVE_IFS="$IFS"
+for ((i = 3; i < "${#modifiers[@]}"; i++)); do
+ IFS='|'; x="${modifiers[*]:0:i}" y="${modifiers[*]:i}"; IFS="$SAVE_IFS"
+ if [[ -n "$x" && -n "$y" ]]; then
+ find "${dirs[@]}" -name '*.java' -type f -print0 | \
+ xargs -0 perl -0777 -p -i -e \
+ "do {} while s/^([A-Za-z@* ]*)\b($y)(\s|(?:\s|\n\s+\*)*\s)($x)\b/\1\4\3\2/mg"
+ fi
+done
diff --git a/common/bin/compare.sh b/common/bin/compare.sh
new file mode 100644
index 0000000..3385423
--- /dev/null
+++ b/common/bin/compare.sh
@@ -0,0 +1,1647 @@
+#!/bin/bash
+#
+# Copyright (c) 2012, 2016, 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.
+#
+
+# This script is processed by configure before it's usable. It is run from
+# the root of the build directory.
+
+
+################################################################################
+
+# Check that we are run via the wrapper generated by configure
+if [ -z "$SRC_ROOT" ]; then
+ echo "Error: You must run this script using build/[conf]/compare.sh"
+ exit 1
+fi
+
+if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
+ FULLDUMP_CMD="$OTOOL -v -V -h -X -d"
+ LDD_CMD="$OTOOL -L"
+ DIS_CMD="$OTOOL -v -V -t"
+ STAT_PRINT_SIZE="-f %z"
+elif [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+ FULLDUMP_CMD="$DUMPBIN -all"
+ LDD_CMD="$DUMPBIN -dependents"
+ DIS_CMD="$DUMPBIN -disasm:nobytes"
+ STAT_PRINT_SIZE="-c %s"
+elif [ "$OPENJDK_TARGET_OS" = "aix" ]; then
+ FULLDUMP_CMD="dump -h -r -t -n -X64"
+ LDD_CMD="$LDD"
+ DIS_CMD="$OBJDUMP -d"
+ STAT_PRINT_SIZE="-c %s"
+else
+ FULLDUMP_CMD="$READELF -a"
+ LDD_CMD="$LDD"
+ DIS_CMD="$OBJDUMP -d"
+ STAT_PRINT_SIZE="-c %s"
+fi
+
+COMPARE_EXCEPTIONS_INCLUDE="$SRC_ROOT/common/bin/compare_exceptions.sh.incl"
+if [ ! -e "$COMPARE_EXCEPTIONS_INCLUDE" ]; then
+ echo "Error: Cannot locate the exceptions file, it should have been here: $COMPARE_EXCEPTIONS_INCLUDE"
+ exit 1
+fi
+# Include exception definitions
+. "$COMPARE_EXCEPTIONS_INCLUDE"
+
+################################################################################
+# Compare text files and ignore specific differences:
+#
+# * Timestamps in Java sources generated by idl2java
+# * Sorting order and cleanup style in .properties files
+
+diff_text() {
+ OTHER_FILE=$1
+ THIS_FILE=$2
+
+ SUFFIX="${THIS_FILE##*.}"
+ NAME="${THIS_FILE##*/}"
+
+ TMP=1
+
+ if [[ "$THIS_FILE" = *"META-INF/MANIFEST.MF" ]]; then
+ # Filter out date string, ant version and java version differences.
+ TMP=$(LC_ALL=C $DIFF $OTHER_FILE $THIS_FILE | \
+ $GREP '^[<>]' | \
+ $SED -e '/[<>] Ant-Version: Apache Ant .*/d' \
+ -e '/[<>] Created-By: .* (Oracle [Corpatin)]*/d' \
+ -e '/[<>] [Corpatin]*)/d' \
+ -e '/[<>].*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d')
+ fi
+ if test "x$SUFFIX" = "xjava"; then
+ TMP=$(LC_ALL=C $DIFF $OTHER_FILE $THIS_FILE | \
+ $GREP '^[<>]' | \
+ $SED -e '/[<>] \* from.*\.idl/d' \
+ -e '/[<>] .*[0-9]\{4\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}_[0-9]\{2\}-b[0-9]\{2\}.*/d' \
+ -e '/[<>] .*[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}.*/d' \
+ -e '/[<>] \*.*[0-9]\{4\} [0-9][0-9]*:[0-9]\{2\}:[0-9]\{2\}.*/d' \
+ -e '/\/\/ Generated from input file.*/d' \
+ -e '/\/\/ This file was generated AUTOMATICALLY from a template file.*/d' \
+ -e '/\/\/ java GenerateCharacter.*/d')
+ fi
+ # Ignore date strings in class files.
+ # Anonymous lambda classes get randomly assigned counters in their names.
+ if test "x$SUFFIX" = "xclass"; then
+ if [ "$NAME" = "SystemModules.class" ]; then
+ # The SystemModules.class is not comparable. The way it is generated is
+ # too random. It can even be of different size for no apparent reason.
+ TMP=""
+ elif [ "$NAME" = "module-info.class" ]; then
+ # The module-info.class have several issues with random ordering of
+ # elements in HashSets.
+ MODULES_CLASS_FILTER="$SED \
+ -e 's/,$//' \
+ -e 's/;$//' \
+ -e 's/^ *[0-9]*://' \
+ -e 's/#[0-9]* */#/' \
+ -e 's/ *\/\// \/\//' \
+ -e 's/aload *[0-9]*/aload X/' \
+ -e 's/ldc_w/ldc /' \
+ | $SORT \
+ "
+ $JAVAP -c -constants -l -p "${OTHER_FILE}" \
+ | eval "$MODULES_CLASS_FILTER" > ${OTHER_FILE}.javap &
+ $JAVAP -c -constants -l -p "${THIS_FILE}" \
+ | eval "$MODULES_CLASS_FILTER" > ${THIS_FILE}.javap &
+ wait
+ TMP=$($DIFF ${OTHER_FILE}.javap ${THIS_FILE}.javap)
+ # To improve performance when large diffs are found, do a rough filtering of classes
+ # elibeble for these exceptions
+ elif $GREP -R -e '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}' \
+ -e 'lambda\$[a-zA-Z0-9]*\$[0-9]' ${THIS_FILE} > /dev/null
+ then
+ $JAVAP -c -constants -l -p "${OTHER_FILE}" > ${OTHER_FILE}.javap &
+ $JAVAP -c -constants -l -p "${THIS_FILE}" > ${THIS_FILE}.javap &
+ wait
+ TMP=$($DIFF ${OTHER_FILE}.javap ${THIS_FILE}.javap | \
+ $GREP '^[<>]' | \
+ $SED -e '/[<>].*[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}.*/d' \
+ -e '/[<>].*lambda\$[a-zA-Z0-9]*\$[0-9]*/d')
+ fi
+ fi
+ if test "x$SUFFIX" = "xproperties"; then
+ # Filter out date string differences.
+ TMP=$(LC_ALL=C $DIFF $OTHER_FILE $THIS_FILE | \
+ $GREP '^[<>]' | \
+ $SED -e '/[<>].*[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}.*/d')
+ fi
+ if test "x$SUFFIX" = "xhtml"; then
+ # Some javadoc versions do not put quotes around font size
+ HTML_FILTER="$SED \
+ -e 's/<font size=-1>/<font size=\"-1\">/g'"
+ $CAT $THIS_FILE | eval "$HTML_FILTER" > $THIS_FILE.filtered
+ $CAT $OTHER_FILE | eval "$HTML_FILTER" > $OTHER_FILE.filtered
+ TMP=$(LC_ALL=C $DIFF $OTHER_FILE.filtered $THIS_FILE.filtered | \
+ $GREP '^[<>]' | \
+ $SED -e '/[<>] <!-- Generated by javadoc .* on .* -->/d' \
+ -e '/[<>] <meta name="date" content=".*">/d' )
+ fi
+ if test -n "$TMP"; then
+ echo Files $OTHER_FILE and $THIS_FILE differ
+ return 1
+ fi
+
+ return 0
+}
+
+################################################################################
+# Compare directory structure
+
+compare_dirs() {
+ THIS_DIR=$1
+ OTHER_DIR=$2
+ WORK_DIR=$3
+
+ mkdir -p $WORK_DIR
+
+ (cd $OTHER_DIR && $FIND . -type d | $SORT > $WORK_DIR/dirs_other)
+ (cd $THIS_DIR && $FIND . -type d | $SORT > $WORK_DIR/dirs_this)
+
+ $DIFF $WORK_DIR/dirs_other $WORK_DIR/dirs_this > $WORK_DIR/dirs_diff
+
+ echo -n Directory structure...
+ if [ -s $WORK_DIR/dirs_diff ]; then
+ echo Differences found.
+ REGRESSIONS=true
+ # Differences in directories found.
+ ONLY_OTHER=$($GREP '<' $WORK_DIR/dirs_diff)
+ if [ "$ONLY_OTHER" ]; then
+ echo Only in $OTHER
+ $GREP '<' $WORK_DIR/dirs_diff | $SED 's|< ./| |g'
+ fi
+ ONLY_THIS=$($GREP '>' $WORK_DIR/dirs_diff)
+ if [ "$ONLY_THIS" ]; then
+ echo Only in $THIS
+ $GREP '>' $WORK_DIR/dirs_diff | $SED 's|> ./| |g'
+ fi
+ else
+ echo Identical!
+ fi
+}
+
+
+################################################################################
+# Compare file structure
+
+compare_files() {
+ THIS_DIR=$1
+ OTHER_DIR=$2
+ WORK_DIR=$3
+
+ $MKDIR -p $WORK_DIR
+
+ (cd $OTHER_DIR && $FIND . ! -type d | $SORT > $WORK_DIR/files_other)
+ (cd $THIS_DIR && $FIND . ! -type d | $SORT > $WORK_DIR/files_this)
+
+ $DIFF $WORK_DIR/files_other $WORK_DIR/files_this > $WORK_DIR/files_diff
+
+ echo -n File names...
+ if [ -s $WORK_DIR/files_diff ]; then
+ echo Differences found.
+ REGRESSIONS=true
+ # Differences in files found.
+ ONLY_OTHER=$($GREP '<' $WORK_DIR/files_diff)
+ if [ "$ONLY_OTHER" ]; then
+ echo Only in $OTHER
+ $GREP '<' $WORK_DIR/files_diff | $SED 's|< ./| |g'
+ fi
+ ONLY_THIS=$($GREP '>' $WORK_DIR/files_diff)
+ if [ "$ONLY_THIS" ]; then
+ echo Only in $THIS
+ $GREP '>' $WORK_DIR/files_diff | $SED 's|> ./| |g'
+ fi
+ else
+ echo Identical!
+ fi
+}
+
+
+################################################################################
+# Compare permissions
+
+compare_permissions() {
+ THIS_DIR=$1
+ OTHER_DIR=$2
+ WORK_DIR=$3
+
+ mkdir -p $WORK_DIR
+
+ echo -n Permissions...
+ found=""
+ for f in `cd $OTHER_DIR && $FIND . -type f`
+ do
+ if [ ! -f ${OTHER_DIR}/$f ]; then continue; fi
+ if [ ! -f ${THIS_DIR}/$f ]; then continue; fi
+ OP=`ls -l ${OTHER_DIR}/$f | awk '{printf("%.10s\n", $1);}'`
+ TP=`ls -l ${THIS_DIR}/$f | awk '{printf("%.10s\n", $1);}'`
+ if [ "$OP" != "$TP" ]
+ then
+ if [ -z "$found" ]; then echo ; found="yes"; fi
+ $PRINTF "\tother: ${OP} this: ${TP}\t$f\n"
+ fi
+ done
+ if [ -z "$found" ]; then
+ echo "Identical!"
+ else
+ REGRESSIONS=true
+ fi
+}
+
+################################################################################
+# Compare file command output
+
+compare_file_types() {
+ THIS_DIR=$1
+ OTHER_DIR=$2
+ WORK_DIR=$3
+
+ $MKDIR -p $WORK_DIR
+
+ FILE_TYPES_FILTER="$SED \
+ -e 's/BuildID[^,]*//' \
+ -e 's/last modified: .*//' \
+ "
+
+ echo -n File types...
+ found=""
+ for f in `cd $OTHER_DIR && $FIND . ! -type d`
+ do
+ if [ ! -f ${OTHER_DIR}/$f ]; then continue; fi
+ if [ ! -f ${THIS_DIR}/$f ]; then continue; fi
+ OF=$(cd ${OTHER_DIR} && $FILE -h $f | eval $FILE_TYPES_FILTER)
+ TF=$(cd ${THIS_DIR} && $FILE -h $f | eval $FILE_TYPES_FILTER)
+ if [ "$OF" != "$TF" ]
+ then
+ if [ "`echo $OF | $GREP -c 'Zip archive data'`" -gt 0 ] \
+ && [ "`echo $TF | $GREP -c 'Zip archive data'`" -gt 0 ]
+ then
+ # the way we produce zip-files make it so that directories are stored in
+ # old file but not in new (only files with full-path) this makes file
+ # report them as different
+ continue
+ else
+ if [ -z "$found" ]; then echo ; found="yes"; fi
+ $PRINTF "\tother: ${OF}\n\tthis : ${TF}\n"
+ fi
+ fi
+ done
+ if [ -z "$found" ]; then
+ echo "Identical!"
+ else
+ REGRESSIONS=true
+ fi
+}
+
+################################################################################
+# Compare the rest of the files
+
+compare_general_files() {
+ THIS_DIR=$1
+ OTHER_DIR=$2
+ WORK_DIR=$3
+
+ GENERAL_FILES=$(cd $THIS_DIR && $FIND . -type f ! -name "*.so" ! -name "*.jar" \
+ ! -name "*.zip" ! -name "*.debuginfo" ! -name "*.dylib" ! -name "jexec" \
+ ! -name "modules" ! -name "ct.sym" ! -name "*.diz" ! -name "*.dll" \
+ ! -name "*.cpl" ! -name "*.pdb" ! -name "*.exp" ! -name "*.ilk" \
+ ! -name "*.lib" ! -name "*.war" ! -name "JavaControlPanel" ! -name "*.jmod" \
+ ! -name "*.obj" ! -name "*.o" ! -name "JavaControlPanelHelper" \
+ ! -name "JavaUpdater" ! -name "JavaWSApplicationStub" \
+ ! -name "jspawnhelper" ! -name "JavawsLauncher" ! -name "*.a" \
+ ! -name "finish_installation" ! -name "Sparkle" ! -name "*.tar.gz" \
+ | $GREP -v "./bin/" | $SORT | $FILTER)
+
+ echo Other files with binary differences...
+ for f in $GENERAL_FILES
+ do
+ if [ -e $OTHER_DIR/$f ]; then
+ SUFFIX="${f##*.}"
+ if [ "$(basename $f)" = "release" ]; then
+ # In release file, ignore differences in change numbers and order
+ # of modules in list.
+ OTHER_FILE=$WORK_DIR/$f.other
+ THIS_FILE=$WORK_DIR/$f.this
+ $MKDIR -p $(dirname $OTHER_FILE)
+ $MKDIR -p $(dirname $THIS_FILE)
+ RELEASE_FILTER="$SED \
+ -e 's/\:[0-9a-f]\{12,12\}/:CHANGE/g' \
+ -e 's/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}/<DATE>/g' \
+ -e 's/^#.*/#COMMENT/g' \
+ -e 's/MODULES=/MODULES=\'$'\n/' \
+ -e 's/,/\'$'\n/g' \
+ | $SORT
+ "
+ $CAT $OTHER_DIR/$f | eval "$RELEASE_FILTER" > $OTHER_FILE
+ $CAT $THIS_DIR/$f | eval "$RELEASE_FILTER" > $THIS_FILE
+ elif [ "x$SUFFIX" = "xhtml" ]; then
+ # Ignore time stamps in docs files
+ OTHER_FILE=$WORK_DIR/$f.other
+ THIS_FILE=$WORK_DIR/$f.this
+ $MKDIR -p $(dirname $OTHER_FILE) $(dirname $THIS_FILE)
+ # Older versions of compare might have left soft links with
+ # these names.
+ $RM $OTHER_FILE $THIS_FILE
+ #Note that | doesn't work on mac sed.
+ HTML_FILTER="$SED \
+ -e 's/20[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}/<DATE>/g' \
+ -e 's/20[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}/<DATE>/g' \
+ -e 's/\(-- Generated by javadoc \).*\( --\)/\1(removed)\2/' \
+ -e 's/[A-Z][a-z]*, [A-Z][a-z]* [0-9][0-9]*, [0-9]\{4\} [0-9][0-9:]* [AMP]\{2,2\} [A-Z][A-Z]*/<DATE>/' \
+ -e 's/from .*\.idl/\.idl/' \
+ "
+ $CAT $OTHER_DIR/$f | eval "$HTML_FILTER" > $OTHER_FILE &
+ $CAT $THIS_DIR/$f | eval "$HTML_FILTER" > $THIS_FILE &
+ wait
+ elif [[ "$f" = *"/lib/classlist" ]]; then
+ # The classlist files may have some lines in random order
+ OTHER_FILE=$WORK_DIR/$f.other
+ THIS_FILE=$WORK_DIR/$f.this
+ $MKDIR -p $(dirname $OTHER_FILE) $(dirname $THIS_FILE)
+ $RM $OTHER_FILE $THIS_FILE
+ $CAT $OTHER_DIR/$f | $SORT > $OTHER_FILE
+ $CAT $THIS_DIR/$f | $SORT > $THIS_FILE
+ else
+ OTHER_FILE=$OTHER_DIR/$f
+ THIS_FILE=$THIS_DIR/$f
+ fi
+ DIFF_OUT=$($DIFF $OTHER_FILE $THIS_FILE 2>&1)
+ if [ -n "$DIFF_OUT" ]; then
+ echo $f
+ REGRESSIONS=true
+ if [ "$SHOW_DIFFS" = "true" ]; then
+ echo "$DIFF_OUT"
+ fi
+ fi
+ fi
+ done
+
+
+}
+
+################################################################################
+# Compare zip file
+
+compare_zip_file() {
+ THIS_DIR=$1
+ OTHER_DIR=$2
+ WORK_DIR=$3
+ ZIP_FILE=$4
+ # Optionally provide different name for other zipfile
+ OTHER_ZIP_FILE=$5
+
+ THIS_ZIP=$THIS_DIR/$ZIP_FILE
+ if [ -n "$OTHER_ZIP_FILE" ]; then
+ OTHER_ZIP=$OTHER_DIR/$OTHER_ZIP_FILE
+ else
+ OTHER_ZIP=$OTHER_DIR/$ZIP_FILE
+ fi
+
+ THIS_SUFFIX="${THIS_ZIP##*.}"
+ OTHER_SUFFIX="${OTHER_ZIP##*.}"
+ if [ "$THIS_SUFFIX" != "$OTHER_SUFFIX" ]; then
+ echo "The files do not have the same suffix type! ($THIS_SUFFIX != $OTHER_SUFFIX)"
+ return 2
+ fi
+
+ TYPE="$THIS_SUFFIX"
+
+ if $CMP $OTHER_ZIP $THIS_ZIP > /dev/null
+ then
+ return 0
+ fi
+ # Not quite identical, the might still contain the same data.
+ # Unpack the jar/zip files in temp dirs
+
+ THIS_UNZIPDIR=$WORK_DIR/$ZIP_FILE.this
+ OTHER_UNZIPDIR=$WORK_DIR/$ZIP_FILE.other
+ $RM -rf $THIS_UNZIPDIR $OTHER_UNZIPDIR
+ $MKDIR -p $THIS_UNZIPDIR
+ $MKDIR -p $OTHER_UNZIPDIR
+ if [ "$TYPE" = "jar" -o "$TYPE" = "war" -o "$TYPE" = "zip" -o "$TYPE" = "jmod" ]
+ then
+ (cd $THIS_UNZIPDIR && $UNARCHIVE $THIS_ZIP)
+ (cd $OTHER_UNZIPDIR && $UNARCHIVE $OTHER_ZIP)
+ elif [ "$TYPE" = "gz" ]
+ then
+ (cd $THIS_UNZIPDIR && $GUNZIP -c $THIS_ZIP | $TAR xf -)
+ (cd $OTHER_UNZIPDIR && $GUNZIP -c $OTHER_ZIP | $TAR xf -)
+ else
+ (cd $THIS_UNZIPDIR && $JIMAGE extract $THIS_ZIP)
+ (cd $OTHER_UNZIPDIR && $JIMAGE extract $OTHER_ZIP)
+ fi
+
+ # Find all archives inside and unzip them as well to compare the contents rather than
+ # the archives. pie.jar.pack.gz i app3.war is corrupt, skip it.
+ EXCEPTIONS="pie.jar.pack.gz"
+ for pack in $($FIND $THIS_UNZIPDIR \( -name "*.pack" -o -name "*.pack.gz" \) -a ! -name pie.jar.pack.gz); do
+ ($UNPACK200 $pack $pack.jar)
+ # Filter out the unzipped archives from the diff below.
+ EXCEPTIONS="$EXCEPTIONS $pack $pack.jar"
+ done
+ for pack in $($FIND $OTHER_UNZIPDIR \( -name "*.pack" -o -name "*.pack.gz" \) -a ! -name pie.jar.pack.gz); do
+ ($UNPACK200 $pack $pack.jar)
+ EXCEPTIONS="$EXCEPTIONS $pack $pack.jar"
+ done
+ for zip in $($FIND $THIS_UNZIPDIR -name "*.jar" -o -name "*.zip"); do
+ $MKDIR $zip.unzip
+ (cd $zip.unzip && $UNARCHIVE $zip)
+ EXCEPTIONS="$EXCEPTIONS $zip"
+ done
+ for zip in $($FIND $OTHER_UNZIPDIR -name "*.jar" -o -name "*.zip"); do
+ $MKDIR $zip.unzip
+ (cd $zip.unzip && $UNARCHIVE $zip)
+ EXCEPTIONS="$EXCEPTIONS $zip"
+ done
+
+ CONTENTS_DIFF_FILE=$WORK_DIR/$ZIP_FILE.diff
+ # On solaris, there is no -q option.
+ if [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
+ LC_ALL=C $DIFF -r $OTHER_UNZIPDIR $THIS_UNZIPDIR \
+ | $GREP -v -e "^<" -e "^>" -e "^Common subdirectories:" \
+ > $CONTENTS_DIFF_FILE
+ else
+ LC_ALL=C $DIFF -rq $OTHER_UNZIPDIR $THIS_UNZIPDIR > $CONTENTS_DIFF_FILE
+ fi
+
+ ONLY_OTHER=$($GREP "^Only in $OTHER_UNZIPDIR" $CONTENTS_DIFF_FILE)
+ ONLY_THIS=$($GREP "^Only in $THIS_UNZIPDIR" $CONTENTS_DIFF_FILE)
+
+ return_value=0
+
+ if [ -n "$ONLY_OTHER" ]; then
+ echo " Only OTHER $ZIP_FILE contains:"
+ echo "$ONLY_OTHER" | sed "s|Only in $OTHER_UNZIPDIR| |"g | sed 's|: |/|g'
+ return_value=1
+ fi
+
+ if [ -n "$ONLY_THIS" ]; then
+ echo " Only THIS $ZIP_FILE contains:"
+ echo "$ONLY_THIS" | sed "s|Only in $THIS_UNZIPDIR| |"g | sed 's|: |/|g'
+ return_value=1
+ fi
+
+ if [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
+ DIFFING_FILES=$($GREP -e 'differ$' -e '^diff ' $CONTENTS_DIFF_FILE \
+ | $SED -e 's/^Files //g' -e 's/diff -r //g' | $CUT -f 1 -d ' ' \
+ | $SED "s|$OTHER_UNZIPDIR/||g")
+ else
+ DIFFING_FILES=$($GREP -e "differ$" $CONTENTS_DIFF_FILE \
+ | $CUT -f 2 -d ' ' | $SED "s|$OTHER_UNZIPDIR/||g")
+ fi
+
+ if [ "$CMP_ZIPS_CONTENTS" = "true" ]; then
+ $RM -f $WORK_DIR/$ZIP_FILE.diffs
+ for file in $DIFFING_FILES; do
+ if [[ "$ACCEPTED_JARZIP_CONTENTS $EXCEPTIONS" != *"$file"* ]]; then
+ diff_text $OTHER_UNZIPDIR/$file $THIS_UNZIPDIR/$file >> $WORK_DIR/$ZIP_FILE.diffs
+ fi
+ done
+
+ if [ -s "$WORK_DIR/$ZIP_FILE.diffs" ]; then
+ return_value=1
+ echo " Differing files in $ZIP_FILE"
+ $CAT $WORK_DIR/$ZIP_FILE.diffs | $GREP 'differ$' | cut -f 2 -d ' ' | \
+ $SED "s|$OTHER_UNZIPDIR| |g" > $WORK_DIR/$ZIP_FILE.difflist
+ $CAT $WORK_DIR/$ZIP_FILE.difflist
+
+ if [ -n "$SHOW_DIFFS" ]; then
+ for i in $(cat $WORK_DIR/$ZIP_FILE.difflist) ; do
+ if [ -f "${OTHER_UNZIPDIR}/$i.javap" ]; then
+ LC_ALL=C $DIFF ${OTHER_UNZIPDIR}/$i.javap ${THIS_UNZIPDIR}/$i.javap
+ elif [ -f "${OTHER_UNZIPDIR}/$i.cleaned" ]; then
+ LC_ALL=C $DIFF ${OTHER_UNZIPDIR}/$i.cleaned ${THIS_UNZIPDIR}/$i
+ else
+ LC_ALL=C $DIFF ${OTHER_UNZIPDIR}/$i ${THIS_UNZIPDIR}/$i
+ fi
+ done
+ fi
+ fi
+ fi
+
+ return $return_value
+}
+
+
+################################################################################
+# Compare all zip files
+
+compare_all_zip_files() {
+ THIS_DIR=$1
+ OTHER_DIR=$2
+ WORK_DIR=$3
+
+ ZIPS=$(cd $THIS_DIR && $FIND . -type f -name "*.zip" -o -name "*.tar.gz" \
+ | $SORT | $FILTER )
+
+ if [ -n "$ZIPS" ]; then
+ echo Zip/tar.gz files...
+
+ return_value=0
+ for f in $ZIPS; do
+ if [ -f "$OTHER_DIR/$f" ]; then
+ compare_zip_file $THIS_DIR $OTHER_DIR $WORK_DIR $f
+ if [ "$?" != "0" ]; then
+ return_value=1
+ REGRESSIONS=true
+ fi
+ fi
+ done
+ fi
+
+ return $return_value
+}
+
+################################################################################
+# Compare all jar files
+
+compare_all_jar_files() {
+ THIS_DIR=$1
+ OTHER_DIR=$2
+ WORK_DIR=$3
+
+ # TODO filter?
+ ZIPS=$(cd $THIS_DIR && $FIND . -type f -name "*.jar" -o -name "*.war" \
+ -o -name "modules" | $SORT | $FILTER)
+
+ if [ -n "$ZIPS" ]; then
+ echo Jar files...
+
+ return_value=0
+ for f in $ZIPS; do
+ if [ -f "$OTHER_DIR/$f" ]; then
+ compare_zip_file $THIS_DIR $OTHER_DIR $WORK_DIR $f
+ if [ "$?" != "0" ]; then
+ return_value=1
+ REGRESSIONS=true
+ fi
+ fi
+ done
+ fi
+
+ return $return_value
+}
+
+################################################################################
+# Compare binary (executable/library) file
+
+compare_bin_file() {
+ THIS_DIR=$1
+ OTHER_DIR=$2
+ WORK_DIR=$3
+ BIN_FILE=$4
+ OTHER_BIN_FILE=$5
+
+ THIS_FILE=$THIS_DIR/$BIN_FILE
+ if [ -n "$OTHER_BIN_FILE" ]; then
+ OTHER_FILE=$OTHER_DIR/$OTHER_BIN_FILE
+ else
+ OTHER_FILE=$OTHER_DIR/$BIN_FILE
+ fi
+ NAME=$(basename $BIN_FILE)
+ WORK_FILE_BASE=$WORK_DIR/$BIN_FILE
+ FILE_WORK_DIR=$(dirname $WORK_FILE_BASE)
+
+ $MKDIR -p $FILE_WORK_DIR
+
+ # Make soft links to original files from work dir to facilitate debugging
+ $LN -f -s $THIS_FILE $WORK_FILE_BASE.this
+ $LN -f -s $OTHER_FILE $WORK_FILE_BASE.other
+
+ ORIG_THIS_FILE="$THIS_FILE"
+ ORIG_OTHER_FILE="$OTHER_FILE"
+
+ if [ "$STRIP_ALL" = "true" ] || [[ "$STRIP_BEFORE_COMPARE" = *"$BIN_FILE"* ]]; then
+ THIS_STRIPPED_FILE=$FILE_WORK_DIR/this/$NAME
+ OTHER_STRIPPED_FILE=$FILE_WORK_DIR/other/$NAME
+ $MKDIR -p $FILE_WORK_DIR/this $FILE_WORK_DIR/other
+ $CP $THIS_FILE $THIS_STRIPPED_FILE
+ $CP $OTHER_FILE $OTHER_STRIPPED_FILE
+ $STRIP $THIS_STRIPPED_FILE
+ $STRIP $OTHER_STRIPPED_FILE
+ THIS_FILE="$THIS_STRIPPED_FILE"
+ OTHER_FILE="$OTHER_STRIPPED_FILE"
+ fi
+
+ if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+ unset _NT_SYMBOL_PATH
+ if [ "$(uname -o)" = "Cygwin" ]; then
+ THIS=$(cygpath -msa $THIS)
+ OTHER=$(cygpath -msa $OTHER)
+ fi
+ # Build an _NT_SYMBOL_PATH that contains all known locations for
+ # pdb files.
+ PDB_DIRS="$(ls -d \
+ {$OTHER,$THIS}/support/modules_{cmds,libs}/{*,*/*} \
+ {$OTHER,$THIS}/support/demos/image/jvmti/*/lib \
+ {$OTHER,$THIS}/support/native/java.base/java_objs \
+ )"
+ export _NT_SYMBOL_PATH="$(echo $PDB_DIRS | tr ' ' ';')"
+ fi
+
+ if [ -z "$SKIP_BIN_DIFF" ]; then
+ if cmp $OTHER_FILE $THIS_FILE > /dev/null; then
+ # The files were bytewise identical.
+ if [ -n "$VERBOSE" ]; then
+ echo " : : : : : : $BIN_FILE"
+ fi
+ return 0
+ fi
+ BIN_MSG=" diff "
+ if [[ "$ACCEPTED_BIN_DIFF" != *"$BIN_FILE"* ]]; then
+ DIFF_BIN=true
+ if [[ "$KNOWN_BIN_DIFF" != *"$BIN_FILE"* ]]; then
+ BIN_MSG="*$BIN_MSG*"
+ REGRESSIONS=true
+ else
+ BIN_MSG=" $BIN_MSG "
+ fi
+ else
+ BIN_MSG="($BIN_MSG)"
+ DIFF_BIN=
+ fi
+ fi
+
+ if [ -n "$STAT" ]; then
+ THIS_SIZE=$($STAT $STAT_PRINT_SIZE "$THIS_FILE")
+ OTHER_SIZE=$($STAT $STAT_PRINT_SIZE "$OTHER_FILE")
+ else
+ THIS_SIZE=$(ls -l "$THIS_FILE" | awk '{ print $5 }')
+ OTHER_SIZE=$(ls -l "$OTHER_FILE" | awk '{ print $5 }')
+ fi
+ if [ $THIS_SIZE -ne $OTHER_SIZE ]; then
+ DIFF_SIZE_NUM=$($EXPR $THIS_SIZE - $OTHER_SIZE)
+ DIFF_SIZE_REL=$($EXPR $THIS_SIZE \* 100 / $OTHER_SIZE)
+ SIZE_MSG=$($PRINTF "%3d%% %4d" $DIFF_SIZE_REL $DIFF_SIZE_NUM)
+ if [[ "$ACCEPTED_SMALL_SIZE_DIFF" = *"$BIN_FILE"* ]] && [ "$DIFF_SIZE_REL" -gt 98 ] \
+ && [ "$DIFF_SIZE_REL" -lt 102 ]; then
+ SIZE_MSG="($SIZE_MSG)"
+ DIFF_SIZE=
+ elif [ "$OPENJDK_TARGET_OS" = "windows" ] \
+ && [[ "$ACCEPTED_SMALL_SIZE_DIFF" = *"$BIN_FILE"* ]] \
+ && [ "$DIFF_SIZE_NUM" = 512 ]; then
+ # On windows, size of binaries increase in 512 increments.
+ SIZE_MSG="($SIZE_MSG)"
+ DIFF_SIZE=
+ elif [ "$OPENJDK_TARGET_OS" = "windows" ] \
+ && [[ "$ACCEPTED_SMALL_SIZE_DIFF" = *"$BIN_FILE"* ]] \
+ && [ "$DIFF_SIZE_NUM" = -512 ]; then
+ # On windows, size of binaries increase in 512 increments.
+ SIZE_MSG="($SIZE_MSG)"
+ DIFF_SIZE=
+ else
+ if [[ "$ACCEPTED_SIZE_DIFF" != *"$BIN_FILE"* ]]; then
+ DIFF_SIZE=true
+ if [[ "$KNOWN_SIZE_DIFF" != *"$BIN_FILE"* ]]; then
+ SIZE_MSG="*$SIZE_MSG*"
+ REGRESSIONS=true
+ else
+ SIZE_MSG=" $SIZE_MSG "
+ fi
+ else
+ SIZE_MSG="($SIZE_MSG)"
+ DIFF_SIZE=
+ fi
+ fi
+ else
+ SIZE_MSG=" "
+ DIFF_SIZE=
+ if [[ "$KNOWN_SIZE_DIFF $ACCEPTED_SIZE_DIFF" = *"$BIN_FILE"* ]]; then
+ SIZE_MSG=" ! "
+ fi
+ fi
+
+ if [ "$SORT_ALL_SYMBOLS" = "true" ] || [[ "$SORT_SYMBOLS" = *"$BIN_FILE"* ]]; then
+ SYM_SORT_CMD="sort"
+ else
+ SYM_SORT_CMD="cat"
+ fi
+
+ if [ -n "$SYMBOLS_DIFF_FILTER" ] && [ -z "$NEED_SYMBOLS_DIFF_FILTER" ] \
+ || [[ "$NEED_SYMBOLS_DIFF_FILTER" = *"$BIN_FILE"* ]]; then
+ this_SYMBOLS_DIFF_FILTER="$SYMBOLS_DIFF_FILTER"
+ else
+ this_SYMBOLS_DIFF_FILTER="$CAT"
+ fi
+
+ # Check symbols
+ if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+ # The output from dumpbin on windows differs depending on if the debug symbol
+ # files are still around at the location the binary is pointing too. Need
+ # to filter out that extra information.
+ $DUMPBIN -exports $OTHER_FILE | $GREP -E '^ +[0-9A-F]+ +[0-9A-F]+ [0-9A-F]+' | sed 's/ = .*//g' | cut -c27- | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.other
+ $DUMPBIN -exports $THIS_FILE | $GREP -E '^ +[0-9A-F]+ +[0-9A-F]+ [0-9A-F]+' | sed 's/ = .*//g' | cut -c27- | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.this
+ elif [ "$OPENJDK_TARGET_OS" = "solaris" ]; then
+ # Some symbols get seemingly random 15 character prefixes. Filter them out.
+ $NM -a $ORIG_OTHER_FILE 2> /dev/null | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SED 's/^\([a-zA-Z] [\.\$]\)[a-zA-Z0-9_\$]\{15,15\}\./\1./g' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.other
+ $NM -a $ORIG_THIS_FILE 2> /dev/null | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SED 's/^\([a-zA-Z] [\.\$]\)[a-zA-Z0-9_\$]\{15,15\}\./\1./g' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.this
+ elif [ "$OPENJDK_TARGET_OS" = "aix" ]; then
+ $OBJDUMP -T $ORIG_OTHER_FILE 2> /dev/null | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.other
+ $OBJDUMP -T $ORIG_THIS_FILE 2> /dev/null | $GREP -v $NAME | $AWK '{print $2, $3, $4, $5}' | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.this
+ elif [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
+ $NM -j $ORIG_OTHER_FILE 2> /dev/null | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.other
+ $NM -j $ORIG_THIS_FILE 2> /dev/null | $SYM_SORT_CMD > $WORK_FILE_BASE.symbols.this
+ else
+ $NM -a $ORIG_OTHER_FILE 2> /dev/null | $GREP -v $NAME \
+ | $AWK '{print $2, $3, $4, $5}' \
+ | eval "$this_SYMBOLS_DIFF_FILTER" \
+ | $SYM_SORT_CMD \
+ > $WORK_FILE_BASE.symbols.other
+ $NM -a $ORIG_THIS_FILE 2> /dev/null | $GREP -v $NAME \
+ | $AWK '{print $2, $3, $4, $5}' \
+ | eval "$this_SYMBOLS_DIFF_FILTER" \
+ | $SYM_SORT_CMD \
+ > $WORK_FILE_BASE.symbols.this
+ fi
+
+ LC_ALL=C $DIFF $WORK_FILE_BASE.symbols.other $WORK_FILE_BASE.symbols.this > $WORK_FILE_BASE.symbols.diff
+ if [ -s $WORK_FILE_BASE.symbols.diff ]; then
+ SYM_MSG=" diff "
+ if [[ "$ACCEPTED_SYM_DIFF" != *"$BIN_FILE"* ]]; then
+ DIFF_SYM=true
+ if [[ "$KNOWN_SYM_DIFF" != *"$BIN_FILE"* ]]; then
+ SYM_MSG="*$SYM_MSG*"
+ REGRESSIONS=true
+ else
+ SYM_MSG=" $SYM_MSG "
+ fi
+ else
+ SYM_MSG="($SYM_MSG)"
+ DIFF_SYM=
+ fi
+ else
+ SYM_MSG=" "
+ DIFF_SYM=
+ if [[ "$KNOWN_SYM_DIFF $ACCEPTED_SYM_DIFF" = *"$BIN_FILE"* ]]; then
+ SYM_MSG=" ! "
+ fi
+ fi
+
+ # Check dependencies
+ if [ -n "$LDD_CMD" ]; then
+ if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+ LDD_FILTER="$GREP \.dll"
+ else
+ LDD_FILTER="$CAT"
+ fi
+ (cd $FILE_WORK_DIR && $CP $OTHER_FILE . && $LDD_CMD $NAME 2>/dev/null \
+ | $LDD_FILTER | $AWK '{ print $1;}' | $SORT \
+ | $TEE $WORK_FILE_BASE.deps.other \
+ | $UNIQ > $WORK_FILE_BASE.deps.other.uniq)
+ (cd $FILE_WORK_DIR && $CP $THIS_FILE . && $LDD_CMD $NAME 2</dev/null \
+ | $LDD_FILTER | $AWK '{ print $1;}' | $SORT \
+ | $TEE $WORK_FILE_BASE.deps.this \
+ | $UNIQ > $WORK_FILE_BASE.deps.this.uniq)
+ (cd $FILE_WORK_DIR && $RM -f $NAME)
+
+ LC_ALL=C $DIFF $WORK_FILE_BASE.deps.other $WORK_FILE_BASE.deps.this \
+ > $WORK_FILE_BASE.deps.diff
+ LC_ALL=C $DIFF $WORK_FILE_BASE.deps.other.uniq $WORK_FILE_BASE.deps.this.uniq \
+ > $WORK_FILE_BASE.deps.diff.uniq
+
+ if [ -s $WORK_FILE_BASE.deps.diff ]; then
+ if [ -s $WORK_FILE_BASE.deps.diff.uniq ]; then
+ DEP_MSG=" diff "
+ else
+ DEP_MSG=" redun "
+ fi
+ if [[ "$ACCEPTED_DEP_DIFF" != *"$BIN_FILE"* ]]; then
+ DIFF_DEP=true
+ if [[ "$KNOWN_DEP_DIFF" != *"$BIN_FILE"* ]]; then
+ DEP_MSG="*$DEP_MSG*"
+ REGRESSIONS=true
+ else
+ DEP_MSG=" $DEP_MSG "
+ fi
+ else
+ DEP_MSG="($DEP_MSG)"
+ DIFF_DEP=
+ fi
+ else
+ DEP_MSG=" "
+ DIFF_DEP=
+ if [[ "$KNOWN_DEP_DIFF $ACCEPTED_DEP_DIFF" = *"$BIN_FILE"* ]]; then
+ DEP_MSG=" ! "
+ fi
+ fi
+ else
+ DEP_MSG=" - "
+ fi
+
+ # Some linux compilers add a unique Build ID
+ if [ "$OPENJDK_TARGET_OS" = "linux" ]; then
+ BUILD_ID_FILTER="$SED -r 's/(Build ID:) [0-9a-f]{40}/\1/'"
+ else
+ BUILD_ID_FILTER="$CAT"
+ fi
+
+ # Compare fulldump output
+ if [ -n "$FULLDUMP_CMD" ] && [ -z "$SKIP_FULLDUMP_DIFF" ]; then
+ if [ -z "$FULLDUMP_DIFF_FILTER" ]; then
+ FULLDUMP_DIFF_FILTER="$CAT"
+ fi
+ $FULLDUMP_CMD $OTHER_FILE | eval "$BUILD_ID_FILTER" | eval "$FULLDUMP_DIFF_FILTER" \
+ > $WORK_FILE_BASE.fulldump.other 2>&1 &
+ $FULLDUMP_CMD $THIS_FILE | eval "$BUILD_ID_FILTER" | eval "$FULLDUMP_DIFF_FILTER" \
+ > $WORK_FILE_BASE.fulldump.this 2>&1 &
+ wait
+
+ LC_ALL=C $DIFF $WORK_FILE_BASE.fulldump.other $WORK_FILE_BASE.fulldump.this \
+ > $WORK_FILE_BASE.fulldump.diff
+
+ if [ -s $WORK_FILE_BASE.fulldump.diff ]; then
+ FULLDUMP_DIFF_SIZE=$(ls -n $WORK_FILE_BASE.fulldump.diff | awk '{print $5}')
+ FULLDUMP_MSG=$($PRINTF "%8d" $FULLDUMP_DIFF_SIZE)
+ if [[ "$ACCEPTED_FULLDUMP_DIFF" != *"$BIN_FILE"* ]]; then
+ DIFF_FULLDUMP=true
+ if [[ "$KNOWN_FULLDUMP_DIFF" != *"$BIN_FILE"* ]]; then
+ FULLDUMP_MSG="*$FULLDUMP_MSG*"
+ REGRESSIONS=true
+ else
+ FULLDUMP_MSG=" $FULLDUMP_MSG "
+ fi
+ else
+ FULLDUMP_MSG="($FULLDUMP_MSG)"
+ DIFF_FULLDUMP=
+ fi
+ else
+ FULLDUMP_MSG=" "
+ DIFF_FULLDUMP=
+ if [[ "$KNOWN_FULLDUMP_DIFF $ACCEPTED_FULLDUMP_DIFF" = *"$BIN_FILE"* ]]; then
+ FULLDUMP_MSG=" ! "
+ fi
+ fi
+ fi
+
+ # Compare disassemble output
+ if [ -n "$DIS_CMD" ] && [ -z "$SKIP_DIS_DIFF" ]; then
+ this_DIS_DIFF_FILTER="$CAT"
+ if [ -n "$DIS_DIFF_FILTER" ]; then
+ if [ -z "$NEED_DIS_DIFF_FILTER" ] \
+ || [[ "$NEED_DIS_DIFF_FILTER" = *"$BIN_FILE"* ]]; then
+ this_DIS_DIFF_FILTER="$DIS_DIFF_FILTER"
+ fi
+ fi
+ if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+ DIS_GREP_ARG=-a
+ else
+ DIS_GREP_ARG=
+ fi
+ $DIS_CMD $OTHER_FILE | $GREP $DIS_GREP_ARG -v $NAME \
+ | eval "$this_DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.other 2>&1 &
+ $DIS_CMD $THIS_FILE | $GREP $DIS_GREP_ARG -v $NAME \
+ | eval "$this_DIS_DIFF_FILTER" > $WORK_FILE_BASE.dis.this 2>&1 &
+ wait
+
+ LC_ALL=C $DIFF $WORK_FILE_BASE.dis.other $WORK_FILE_BASE.dis.this > $WORK_FILE_BASE.dis.diff
+
+ if [ -s $WORK_FILE_BASE.dis.diff ]; then
+ DIS_DIFF_SIZE=$(ls -n $WORK_FILE_BASE.dis.diff | awk '{print $5}')
+ DIS_MSG=$($PRINTF "%8d" $DIS_DIFF_SIZE)
+ if [[ "$ACCEPTED_DIS_DIFF" != *"$BIN_FILE"* ]]; then
+ DIFF_DIS=true
+ if [ "$MAX_KNOWN_DIS_DIFF_SIZE" = "" ]; then
+ MAX_KNOWN_DIS_DIFF_SIZE="0"
+ fi
+ if [[ "$KNOWN_DIS_DIFF" = *"$BIN_FILE"* ]] \
+ && [ "$DIS_DIFF_SIZE" -lt "$MAX_KNOWN_DIS_DIFF_SIZE" ]; then
+ DIS_MSG=" $DIS_MSG "
+ else
+ DIS_MSG="*$DIS_MSG*"
+ REGRESSIONS=true
+ fi
+ else
+ DIS_MSG="($DIS_MSG)"
+ DIFF_DIS=
+ fi
+ else
+ DIS_MSG=" "
+ DIFF_DIS=
+ if [[ "$KNOWN_DEP_DIFF $ACCEPTED_DEP_DIFF" = *"$BIN_FILE"* ]]; then
+ DIS_MSG=" ! "
+ fi
+ fi
+ fi
+
+
+ if [ -n "$DIFF_BIN$DIFF_SIZE$DIFF_SYM$DIFF_DEP$DIFF_FULLDUMP$DIFF_DIS" ] || [ -n "$VERBOSE" ]; then
+ if [ -n "$BIN_MSG" ]; then echo -n "$BIN_MSG:"; fi
+ if [ -n "$SIZE_MSG" ]; then echo -n "$SIZE_MSG:"; fi
+ if [ -n "$SYM_MSG" ]; then echo -n "$SYM_MSG:"; fi
+ if [ -n "$DEP_MSG" ]; then echo -n "$DEP_MSG:"; fi
+ if [ -n "$FULLDUMP_MSG" ]; then echo -n "$FULLDUMP_MSG:"; fi
+ if [ -n "$DIS_MSG" ]; then echo -n "$DIS_MSG:"; fi
+ echo " $BIN_FILE"
+ if [ "$SHOW_DIFFS" = "true" ]; then
+ if [ -s "$WORK_FILE_BASE.symbols.diff" ]; then
+ echo "Symbols diff:"
+ $CAT $WORK_FILE_BASE.symbols.diff
+ fi
+ if [ -s "$WORK_FILE_BASE.deps.diff" ]; then
+ echo "Deps diff:"
+ $CAT $WORK_FILE_BASE.deps.diff
+ fi
+ if [ -s "$WORK_FILE_BASE.fulldump.diff" ]; then
+ echo "Fulldump diff:"
+ $CAT $WORK_FILE_BASE.fulldump.diff
+ fi
+ if [ -s "$WORK_FILE_BASE.dis.diff" ]; then
+ echo "Disassembly diff:"
+ $CAT $WORK_FILE_BASE.dis.diff
+ fi
+ fi
+ return 1
+ fi
+ return 0
+}
+
+################################################################################
+# Print binary diff header
+
+print_binary_diff_header() {
+ if [ -z "$SKIP_BIN_DIFF" ]; then echo -n " Binary :"; fi
+ if [ -z "$SKIP_SIZE_DIFF" ]; then echo -n " Size :"; fi
+ if [ -z "$SKIP_SYM_DIFF" ]; then echo -n " Symbols :"; fi
+ if [ -z "$SKIP_DEP_DIFF" ]; then echo -n " Deps :"; fi
+ if [ -z "$SKIP_FULLDUMP_DIFF" ]; then echo -n " Fulldump :"; fi
+ if [ -z "$SKIP_DIS_DIFF" ]; then echo -n " Disass :"; fi
+ echo
+}
+
+################################################################################
+# Compare all libraries
+
+compare_all_libs() {
+ THIS_DIR=$1
+ OTHER_DIR=$2
+ WORK_DIR=$3
+
+ LIBS=$(cd $THIS_DIR && $FIND . -type f \( -name 'lib*.so' -o -name '*.dylib' \
+ -o -name '*.dll' -o -name '*.obj' -o -name '*.o' -o -name '*.a' \
+ -o -name '*.cpl' \) | $SORT | $FILTER)
+
+ if [ -n "$LIBS" ]; then
+ echo Libraries...
+ print_binary_diff_header
+ for l in $LIBS; do
+ if [ -f "$OTHER_DIR/$l" ]; then
+ compare_bin_file $THIS_DIR $OTHER_DIR $WORK_DIR $l
+ if [ "$?" != "0" ]; then
+ return_value=1
+ fi
+ fi
+ done
+ fi
+
+ return $return_value
+}
+
+################################################################################
+# Compare all executables
+
+compare_all_execs() {
+ THIS_DIR=$1
+ OTHER_DIR=$2
+ WORK_DIR=$3
+
+ if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+ EXECS=$(cd $THIS_DIR && $FIND . -type f -name '*.exe' | $SORT | $FILTER)
+ else
+ EXECS=$(cd $THIS_DIR && $FIND . -name db -prune -o -type f -perm -100 \! \
+ \( -name '*.so' -o -name '*.dylib' -o -name '*.dll' -o -name '*.cgi' \
+ -o -name '*.jar' -o -name '*.diz' -o -name 'jcontrol' -o -name '*.properties' \
+ -o -name '*.data' -o -name '*.bfc' -o -name '*.src' -o -name '*.txt' \
+ -o -name '*.cfg' -o -name 'meta-index' -o -name '*.properties.ja' \
+ -o -name '*.xml' -o -name '*.html' -o -name '*.png' -o -name 'README' \
+ -o -name '*.zip' -o -name '*.jimage' -o -name '*.java' -o -name '*.mf' \
+ -o -name '*.jpg' -o -name '*.wsdl' -o -name '*.js' -o -name '*.sh' \
+ -o -name '*.bat' -o -name '*LICENSE' -o -name '*.d' -o -name '*store' \
+ -o -name 'blacklist' -o -name '*certs' -o -name '*.ttf' \
+ -o -name '*.jfc' -o -name '*.dat' -o -name 'release' -o -name '*.dir'\
+ -o -name '*.sym' -o -name '*.idl' -o -name '*.h' -o -name '*.access' \
+ -o -name '*.template' -o -name '*.policy' -o -name '*.security' \
+ -o -name 'COPYRIGHT' -o -name '*.1' \
+ -o -name 'classlist' \) | $SORT | $FILTER)
+ fi
+
+ if [ -n "$EXECS" ]; then
+ echo Executables...
+ print_binary_diff_header
+ for e in $EXECS; do
+ if [ -f "$OTHER_DIR/$e" ]; then
+ compare_bin_file $THIS_DIR $OTHER_DIR $WORK_DIR $e
+ if [ "$?" != "0" ]; then
+ return_value=1
+ fi
+ fi
+ done
+ fi
+
+ return $return_value
+}
+
+################################################################################
+# Initiate configuration
+
+THIS="$SCRIPT_DIR"
+echo "$THIS"
+THIS_SCRIPT="$0"
+
+if [ -z "$1" ] || [ "$1" = "-h" ] || [ "$1" = "-?" ] || [ "$1" = "/h" ] || [ "$1" = "/?" ] || [ "$1" = "-help" ] || [ "$1" = "--help" ]; then
+ echo "bash ./compare.sh [OPTIONS] [FILTER]"
+ echo ""
+ echo "-all Compare all files in all known ways"
+ echo "-names Compare the file names and directory structure"
+ echo "-perms Compare the permission bits on all files and directories"
+ echo "-types Compare the output of the file command on all files"
+ echo "-general Compare the files not convered by the specialized comparisons"
+ echo "-zips Compare the contents of all zip files and files in them"
+ echo "-zips-names Compare the file names inside all zip files"
+ echo "-jars Compare the contents of all jar files"
+ echo "-libs Compare all native libraries"
+ echo "-execs Compare all executables"
+ echo "-v Verbose output, does not hide known differences"
+ echo "-vv More verbose output, shows diff output of all comparisons"
+ echo "-o [OTHER] Compare with build in other directory. Will default to the old build directory"
+ echo ""
+ echo "--sort-symbols Sort all symbols before comparing"
+ echo "--strip Strip all binaries before comparing"
+ echo "--clean Clean all previous comparison results first"
+ echo ""
+ echo "[FILTER] List filenames in the image to compare, works for jars, zips, libs and execs"
+ echo "Example:"
+ echo "bash ./common/bin/compareimages.sh CodePointIM.jar"
+ echo ""
+ echo "-2zips <file1> <file2> Compare two zip files only"
+ echo "-2bins <file1> <file2> Compare two binary files only"
+ echo "-2dirs <dir1> <dir2> Compare two directories as if they were images"
+ echo ""
+ exit 10
+fi
+
+CMP_NAMES=false
+CMP_PERMS=false
+CMP_TYPES=false
+CMP_GENERAL=false
+CMP_ZIPS=false
+CMP_ZIPS_CONTENTS=true
+CMP_JARS=false
+CMP_LIBS=false
+CMP_EXECS=false
+
+while [ -n "$1" ]; do
+ case "$1" in
+ -v)
+ VERBOSE=true
+ ;;
+ -vv)
+ VERBOSE=true
+ SHOW_DIFFS=true
+ ;;
+ -o)
+ OTHER="$2"
+ shift
+ ;;
+ -all)
+ CMP_NAMES=true
+ if [ "$OPENJDK_TARGET_OS" != "windows" ]; then
+ CMP_PERMS=true
+ fi
+ CMP_TYPES=true
+ CMP_GENERAL=true
+ CMP_ZIPS=true
+ CMP_JARS=true
+ CMP_LIBS=true
+ CMP_EXECS=true
+ ;;
+ -names)
+ CMP_NAMES=true
+ ;;
+ -perms)
+ CMP_PERMS=true
+ ;;
+ -types)
+ CMP_TYPES=true
+ ;;
+ -general)
+ CMP_GENERAL=true
+ ;;
+ -zips)
+ CMP_ZIPS=true
+ CMP_ZIPS_CONTENTS=true
+ ;;
+ -zips-names)
+ CMP_ZIPS=true
+ CMP_ZIPS_CONTENTS=false
+ ;;
+ -jars)
+ CMP_JARS=true
+ ;;
+ -libs)
+ CMP_LIBS=true
+ ;;
+ -execs)
+ CMP_EXECS=true
+ ;;
+ -2dirs)
+ THIS="$(cd "$2" > /dev/null && pwd )"
+ OTHER="$(cd "$3" > /dev/null && pwd )"
+ THIS_BASE_DIR="$THIS"
+ OTHER_BASE_DIR="$OTHER"
+ SKIP_DEFAULT=true
+ shift
+ shift
+ ;;
+ -2zips)
+ CMP_2_ZIPS=true
+ THIS_FILE=$2
+ OTHER_FILE=$3
+ shift
+ shift
+ ;;
+ -2bins)
+ CMP_2_BINS=true
+ THIS_FILE=$2
+ OTHER_FILE=$3
+ shift
+ shift
+ ;;
+ --sort-symbols)
+ SORT_ALL_SYMBOLS=true
+ ;;
+ --strip)
+ STRIP_ALL=true
+ ;;
+ --clean)
+ CLEAN_OUTPUT=true
+ ;;
+ *)
+ CMP_NAMES=false
+ CMP_PERMS=false
+ CMP_TYPES=false
+ CMP_ZIPS=true
+ CMP_JARS=true
+ CMP_LIBS=true
+ CMP_EXECS=true
+
+ if [ -z "$FILTER" ]; then
+ FILTER="$GREP"
+ fi
+ FILTER="$FILTER -e $1"
+ ;;
+ esac
+ shift
+done
+
+if [ "$STRIP_ALL" = "true" ] && [ -z "$STRIP" ]; then
+ echo Warning: Not stripping even with --strip, since strip is missing on this platform
+ STRIP_ALL=false
+fi
+
+COMPARE_ROOT=/tmp/cimages.$USER
+if [ "$CLEAN_OUTPUT" = "true" ]; then
+ echo Cleaning old output in $COMPARE_ROOT.
+ $RM -rf $COMPARE_ROOT
+fi
+$MKDIR -p $COMPARE_ROOT
+if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+ if [ "$(uname -o)" = "Cygwin" ]; then
+ COMPARE_ROOT=$(cygpath -msa $COMPARE_ROOT)
+ fi
+fi
+
+if [ "$CMP_2_ZIPS" = "true" ]; then
+ THIS_DIR="$(dirname $THIS_FILE)"
+ THIS_DIR="$(cd "$THIS_DIR" > /dev/null && pwd )"
+ OTHER_DIR="$(dirname $OTHER_FILE)"
+ OTHER_DIR="$(cd "$OTHER_DIR" > /dev/null && pwd )"
+ THIS_FILE_NAME="$(basename $THIS_FILE)"
+ OTHER_FILE_NAME="$(basename $OTHER_FILE)"
+ echo Comparing $THIS_DIR/$THIS_FILE_NAME and $OTHER_DIR/$OTHER_FILE_NAME
+ compare_zip_file $THIS_DIR $OTHER_DIR $COMPARE_ROOT/2zips $THIS_FILE_NAME $OTHER_FILE_NAME
+ exit
+fi
+
+if [ "$CMP_2_BINS" = "true" ]; then
+ THIS_DIR="$(dirname $THIS_FILE)"
+ THIS_DIR="$(cd "$THIS_DIR" > /dev/null && pwd )"
+ OTHER_DIR="$(dirname $OTHER_FILE)"
+ OTHER_DIR="$(cd "$OTHER_DIR" > /dev/null && pwd )"
+ THIS_FILE_NAME="$(basename $THIS_FILE)"
+ OTHER_FILE_NAME="$(basename $OTHER_FILE)"
+ echo Comparing $THIS_DIR/$THIS_FILE_NAME and $OTHER_DIR/$OTHER_FILE_NAME
+ compare_bin_file $THIS_DIR $OTHER_DIR $COMPARE_ROOT/2bins $THIS_FILE_NAME $OTHER_FILE_NAME
+ exit
+fi
+
+if [ "$CMP_NAMES" = "false" ] && [ "$CMP_TYPES" = "false" ] && [ "$CMP_PERMS" = "false" ] && [ "$CMP_GENERAL" = "false" ] && [ "$CMP_ZIPS" = "false" ] && [ "$CMP_JARS" = "false" ] && [ "$CMP_LIBS" = "false" ] && [ "$CMP_EXECS" = "false" ]; then
+ CMP_NAMES=true
+ CMP_PERMS=true
+ CMP_TYPES=true
+ CMP_GENERAL=true
+ CMP_ZIPS=true
+ CMP_JARS=true
+ CMP_LIBS=true
+ CMP_EXECS=true
+fi
+
+if [ -z "$FILTER" ]; then
+ FILTER="$CAT"
+fi
+
+if [ "$SKIP_DEFAULT" != "true" ]; then
+ if [ -z "$OTHER" ]; then
+ echo "Nothing to compare to, set with -o"
+ exit 1
+ else
+ if [ ! -d "$OTHER" ]; then
+ echo "Other build directory does not exist:"
+ echo "$OTHER"
+ exit 1
+ fi
+ OTHER="$( cd "$OTHER" > /dev/null && pwd )"
+ echo "Comparing to:"
+ echo "$OTHER"
+ echo
+ fi
+
+
+ # Find the common images to compare, prioritizing later build stages
+ if [ -d "$THIS/install/jdk" ] && [ -d "$OTHER/install/jdk" ]; then
+ THIS_JDK="$THIS/install/jdk"
+ THIS_JRE="$THIS/install/jre"
+ OTHER_JDK="$OTHER/install/jdk"
+ OTHER_JRE="$OTHER/install/jre"
+ echo "Selecting install images for compare"
+ elif [ -d "$THIS/images/jdk" ] && [ -d "$OTHER/deploy/images/jdk" ]; then
+ THIS_JDK="$THIS/images/jdk"
+ THIS_JRE="$THIS/images/jre"
+ OTHER_JDK="$OTHER/deploy/images/jdk"
+ OTHER_JRE="$OTHER/deploy/images/jre"
+ echo "Selecting deploy images for compare"
+ elif [ -d "$THIS/images/jdk" ] && [ -d "$OTHER/images/jdk" ]; then
+ THIS_JDK="$THIS/images/jdk"
+ THIS_JRE="$THIS/images/jre"
+ OTHER_JDK="$OTHER/images/jdk"
+ OTHER_JRE="$OTHER/images/jre"
+ echo "Selecting jdk images for compare"
+ elif [ -d "$(ls -d $THIS/licensee-src/build/*/images/jdk 2> /dev/null)" ] \
+ && [ -d "$(ls -d $OTHER/licensee-src/build/*/images/jdk 2> /dev/null)" ]
+ then
+ echo "Selecting licensee images for compare"
+ # Simply override the THIS and OTHER dir with the build dir from
+ # the nested licensee source build for the rest of the script
+ # execution.
+ OLD_THIS="$THIS"
+ OLD_OTHER="$OTHER"
+ THIS="$(ls -d $THIS/licensee-src/build/*)"
+ OTHER="$(ls -d $OTHER/licensee-src/build/*)"
+ THIS_JDK="$THIS/images/jdk"
+ THIS_JRE="$THIS/images/jre"
+ OTHER_JDK="$OTHER/images/jdk"
+ OTHER_JRE="$OTHER/images/jre"
+ # Rewrite the path to tools that are used from the build
+ JIMAGE="$(echo "$JIMAGE" | $SED "s|$OLD_THIS|$THIS|g")"
+ JAVAP="$(echo "$JAVAP" | $SED "s|$OLD_THIS|$THIS|g")"
+ else
+ echo "No common images found."
+ exit 1
+ fi
+ echo " $THIS_JDK"
+ echo " $OTHER_JDK"
+
+ if [ -d "$THIS/images/jdk-bundle" -o -d "$THIS/deploy/images/jdk-bundle" ] \
+ && [ -d "$OTHER/images/jdk-bundle" -o -d "$OTHER/deploy/images/jdk-bundle" ]; then
+ if [ -d "$THIS/deploy/images/jdk-bundle" ]; then
+ THIS_JDK_BUNDLE="$THIS/deploy/images/jdk-bundle"
+ THIS_JRE_BUNDLE="$THIS/deploy/images/jre-bundle"
+ else
+ THIS_JDK_BUNDLE="$THIS/images/jdk-bundle"
+ THIS_JRE_BUNDLE="$THIS/images/jre-bundle"
+ fi
+ if [ -d "$OTHER/deploy/images/jdk-bundle" ]; then
+ OTHER_JDK_BUNDLE="$OTHER/deploy/images/jdk-bundle"
+ OTHER_JRE_BUNDLE="$OTHER/deploy/images/jre-bundle"
+ else
+ OTHER_JDK_BUNDLE="$OTHER/images/jdk-bundle"
+ OTHER_JRE_BUNDLE="$OTHER/images/jre-bundle"
+ fi
+ echo "Also comparing jdk macosx bundles"
+ echo " $THIS_JDK_BUNDLE"
+ echo " $OTHER_JDK_BUNDLE"
+ fi
+
+ if [ -d "$THIS/deploy/bundles" -o -d "$THIS/deploy/images/bundles" ] \
+ && [ -d "$OTHER/deploy/bundles" -o -d "$OTHER/deploy/images/bundles" ]; then
+ if [ -d "$THIS/deploy/images/bundles" ]; then
+ THIS_DEPLOY_BUNDLE_DIR="$THIS/deploy/images/bundles"
+ else
+ THIS_DEPLOY_BUNDLE_DIR="$THIS/deploy/bundles"
+ fi
+ if [ -d "$OTHER/deploy/images/bundles" ]; then
+ OTHER_DEPLOY_BUNDLE_DIR="$OTHER/deploy/images/bundles"
+ else
+ OTHER_DEPLOY_BUNDLE_DIR="$OTHER/deploy/bundles"
+ fi
+ echo "Also comparing deploy javadoc bundles"
+ fi
+
+ if [ -d "$THIS/images/JavaAppletPlugin.plugin" ] \
+ && [ -d "$OTHER/images/JavaAppletPlugin.plugin" -o -d "$OTHER/deploy/images/JavaAppletPlugin.plugin" ]; then
+ if [ -d "$THIS/images/JavaAppletPlugin.plugin" ]; then
+ THIS_DEPLOY_APPLET_PLUGIN_DIR="$THIS/images/JavaAppletPlugin.plugin"
+ else
+ THIS_DEPLOY_APPLET_PLUGIN_DIR="$THIS/deploy/images/JavaAppletPlugin.plugin"
+ fi
+ if [ -d "$OTHER/images/JavaAppletPlugin.plugin" ]; then
+ OTHER_DEPLOY_APPLET_PLUGIN_DIR="$OTHER/images/JavaAppletPlugin.plugin"
+ else
+ OTHER_DEPLOY_APPLET_PLUGIN_DIR="$OTHER/deploy/images/JavaAppletPlugin.plugin"
+ fi
+ echo "Also comparing deploy applet image"
+ echo " $THIS_DEPLOY_APPLET_PLUGIN_DIR"
+ echo " $OTHER_DEPLOY_APPLET_PLUGIN_DIR"
+ fi
+
+ if [ -d "$THIS/install/sparkle/Sparkle.framework" ] \
+ && [ -d "$OTHER/install/sparkle/Sparkle.framework" ]; then
+ THIS_SPARKLE_DIR="$THIS/install/sparkle/Sparkle.framework"
+ OTHER_SPARKLE_DIR="$OTHER/install/sparkle/Sparkle.framework"
+ echo "Also comparing install sparkle framework"
+ echo " $THIS_SPARKLE_DIR"
+ echo " $OTHER_SPARKLE_DIR"
+ fi
+
+ if [ -d "$OTHER/images" ]; then
+ OTHER_SEC_DIR="$OTHER/images"
+ else
+ OTHER_SEC_DIR="$OTHER/tmp"
+ fi
+ OTHER_SEC_BIN="$OTHER_SEC_DIR/sec-bin.zip"
+ THIS_SEC_DIR="$THIS/images"
+ THIS_SEC_BIN="$THIS_SEC_DIR/sec-bin.zip"
+ if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+ if [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; then
+ JGSS_WINDOWS_BIN="jgss-windows-x64-bin.zip"
+ else
+ JGSS_WINDOWS_BIN="jgss-windows-i586-bin.zip"
+ fi
+ OTHER_SEC_WINDOWS_BIN="$OTHER_SEC_DIR/sec-windows-bin.zip"
+ OTHER_JGSS_WINDOWS_BIN="$OTHER_SEC_DIR/$JGSS_WINDOWS_BIN"
+ THIS_SEC_WINDOWS_BIN="$THIS_SEC_DIR/sec-windows-bin.zip"
+ THIS_JGSS_WINDOWS_BIN="$THIS_SEC_DIR/$JGSS_WINDOWS_BIN"
+ fi
+
+ if [ -d "$THIS/images/docs" ] && [ -d "$OTHER/images/docs" ]; then
+ THIS_DOCS="$THIS/images/docs"
+ OTHER_DOCS="$OTHER/images/docs"
+ echo "Also comparing docs"
+ else
+ echo "WARNING! Docs haven't been built and won't be compared."
+ fi
+fi
+
+################################################################################
+# Do the work
+
+if [ "$CMP_NAMES" = "true" ]; then
+ if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
+ echo -n "JDK "
+ compare_dirs $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
+ echo -n "JRE "
+ compare_dirs $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre
+
+ echo -n "JDK "
+ compare_files $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
+ echo -n "JRE "
+ compare_files $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre
+ fi
+ if [ -n "$THIS_JDK_BUNDLE" ] && [ -n "$OTHER_JDK_BUNDLE" ]; then
+ echo -n "JDK Bundle "
+ compare_dirs $THIS_JDK_BUNDLE $OTHER_JDK_BUNDLE $COMPARE_ROOT/jdk-bundle
+ echo -n "JRE Bundle "
+ compare_dirs $THIS_JRE_BUNDLE $OTHER_JRE_BUNDLE $COMPARE_ROOT/jre-bundle
+
+ echo -n "JDK Bundle "
+ compare_files $THIS_JDK_BUNDLE $OTHER_JDK_BUNDLE $COMPARE_ROOT/jdk-bundle
+ echo -n "JRE Bundle "
+ compare_files $THIS_JRE_BUNDLE $OTHER_JRE_BUNDLE $COMPARE_ROOT/jre-bundle
+ fi
+ if [ -n "$THIS_DOCS" ] && [ -n "$OTHER_DOCS" ]; then
+ echo -n "Docs "
+ compare_dirs $THIS_DOCS $OTHER_DOCS $COMPARE_ROOT/docs
+ echo -n "Docs "
+ compare_files $THIS_DOCS $OTHER_DOCS $COMPARE_ROOT/docs
+ fi
+ if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then
+ compare_dirs $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir
+ compare_files $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir
+ fi
+ if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then
+ echo -n "JavaAppletPlugin "
+ compare_dirs $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
+ echo -n "JavaAppletPlugin "
+ compare_files $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
+ fi
+ if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then
+ echo -n "Sparkle.framework "
+ compare_dirs $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle
+ echo -n "Sparkle.framework "
+ compare_files $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle
+ fi
+fi
+
+if [ "$CMP_PERMS" = "true" ]; then
+ if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
+ echo -n "JDK "
+ compare_permissions $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
+ echo -n "JRE "
+ compare_permissions $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre
+ fi
+ if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then
+ compare_permissions $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir
+ fi
+ if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then
+ echo -n "JavaAppletPlugin "
+ compare_permissions $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
+ fi
+ if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then
+ echo -n "Sparkle.framework "
+ compare_permissions $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle
+ fi
+fi
+
+if [ "$CMP_TYPES" = "true" ]; then
+ if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
+ echo -n "JDK "
+ compare_file_types $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
+ echo -n "JRE "
+ compare_file_types $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre
+ fi
+ if [ -n "$THIS_JDK_BUNDLE" ] && [ -n "$OTHER_JDK_BUNDLE" ]; then
+ echo -n "JDK Bundle "
+ compare_file_types $THIS_JDK_BUNDLE $OTHER_JDK_BUNDLE $COMPARE_ROOT/jdk-bundle
+ echo -n "JRE Bundle "
+ compare_file_types $THIS_JRE_BUNDLE $OTHER_JRE_BUNDLE $COMPARE_ROOT/jre-bundle
+ fi
+ if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then
+ compare_file_types $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir
+ fi
+ if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then
+ echo -n "JavaAppletPlugin "
+ compare_file_types $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
+ fi
+ if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then
+ echo -n "Sparkle.framework "
+ compare_file_types $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle
+ fi
+fi
+
+if [ "$CMP_GENERAL" = "true" ]; then
+ if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
+ echo -n "JDK "
+ compare_general_files $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
+ echo -n "JRE "
+ compare_general_files $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre
+ fi
+ if [ -n "$THIS_JDK_BUNDLE" ] && [ -n "$OTHER_JDK_BUNDLE" ]; then
+ echo -n "JDK Bundle "
+ compare_general_files $THIS_JDK_BUNDLE $OTHER_JDK_BUNDLE $COMPARE_ROOT/jdk-bundle
+ echo -n "JRE Bundle "
+ compare_general_files $THIS_JRE_BUNDLE $OTHER_JRE_BUNDLE $COMPARE_ROOT/jre-bundle
+ fi
+ if [ -n "$THIS_DOCS" ] && [ -n "$OTHER_DOCS" ]; then
+ echo -n "Docs "
+ compare_general_files $THIS_DOCS $OTHER_DOCS $COMPARE_ROOT/docs
+ fi
+ if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then
+ compare_general_files $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir
+ fi
+ if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then
+ echo -n "JavaAppletPlugin "
+ compare_general_files $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
+ fi
+ if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then
+ echo -n "Sparkle.framework "
+ compare_general_files $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle
+ fi
+fi
+
+if [ "$CMP_ZIPS" = "true" ]; then
+ if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
+ compare_all_zip_files $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
+ fi
+ if [ -n "$THIS_SEC_BIN" ] && [ -n "$OTHER_SEC_BIN" ]; then
+ if [ -n "$(echo $THIS_SEC_BIN | $FILTER)" ]; then
+ echo "sec-bin.zip..."
+ compare_zip_file $THIS_SEC_DIR $OTHER_SEC_DIR $COMPARE_ROOT/sec-bin sec-bin.zip
+ fi
+ fi
+ if [ -n "$THIS_SEC_WINDOWS_BIN" ] && [ -n "$OTHER_SEC_WINDOWS_BIN" ]; then
+ if [ -n "$(echo $THIS_SEC_WINDOWS_BIN | $FILTER)" ]; then
+ echo "sec-windows-bin.zip..."
+ compare_zip_file $THIS_SEC_DIR $OTHER_SEC_DIR $COMPARE_ROOT/sec-bin sec-windows-bin.zip
+ fi
+ fi
+ if [ -n "$THIS_JGSS_WINDOWS_BIN" ] && [ -n "$OTHER_JGSS_WINDOWS_BIN" ]; then
+ if [ -n "$(echo $THIS_JGSS_WINDOWS_BIN | $FILTER)" ]; then
+ echo "$JGSS_WINDOWS_BIN..."
+ compare_zip_file $THIS_SEC_DIR $OTHER_SEC_DIR $COMPARE_ROOT/sec-bin $JGSS_WINDOWS_BIN
+ fi
+ fi
+ if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then
+ compare_all_zip_files $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir
+ fi
+ if [ -n "$THIS_DEPLOY_BUNDLE_DIR" ] && [ -n "$OTHER_DEPLOY_BUNDLE_DIR" ]; then
+ compare_all_zip_files $THIS_DEPLOY_BUNDLE_DIR $OTHER_DEPLOY_BUNDLE_DIR $COMPARE_ROOT/deploy-bundle
+ fi
+ if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then
+ compare_all_zip_files $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
+ fi
+fi
+
+if [ "$CMP_JARS" = "true" ]; then
+ if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
+ compare_all_jar_files $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
+ fi
+ if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then
+ compare_all_jar_files $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir
+ fi
+ if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then
+ compare_all_jar_files $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
+ fi
+fi
+
+if [ "$CMP_LIBS" = "true" ]; then
+ if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
+ echo -n "JDK "
+ compare_all_libs $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
+ if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
+ echo -n "JRE "
+ compare_all_libs $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre
+ fi
+ fi
+ if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then
+ compare_all_libs $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir
+ fi
+ if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then
+ echo -n "JavaAppletPlugin "
+ compare_all_libs $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
+ fi
+ if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then
+ echo -n "Sparkle.framework "
+ compare_all_libs $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle
+ fi
+fi
+
+if [ "$CMP_EXECS" = "true" ]; then
+ if [ -n "$THIS_JDK" ] && [ -n "$OTHER_JDK" ]; then
+ compare_all_execs $THIS_JDK $OTHER_JDK $COMPARE_ROOT/jdk
+ if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
+ echo -n "JRE "
+ compare_all_execs $THIS_JRE $OTHER_JRE $COMPARE_ROOT/jre
+ fi
+ fi
+ if [ -n "$THIS_BASE_DIR" ] && [ -n "$OTHER_BASE_DIR" ]; then
+ compare_all_execs $THIS_BASE_DIR $OTHER_BASE_DIR $COMPARE_ROOT/base_dir
+ fi
+ if [ -n "$THIS_DEPLOY_APPLET_PLUGIN_DIR" ] && [ -n "$OTHER_DEPLOY_APPLET_PLUGIN_DIR" ]; then
+ echo -n "JavaAppletPlugin "
+ compare_all_execs $THIS_DEPLOY_APPLET_PLUGIN_DIR $OTHER_DEPLOY_APPLET_PLUGIN_DIR $COMPARE_ROOT/plugin
+ fi
+ if [ -n "$THIS_SPARKLE_DIR" ] && [ -n "$OTHER_SPARKLE_DIR" ]; then
+ echo -n "Sparkle.framework "
+ compare_all_execs $THIS_SPARKLE_DIR $OTHER_SPARKLE_DIR $COMPARE_ROOT/sparkle
+ fi
+fi
+
+echo
+
+if [ -n "$REGRESSIONS" ]; then
+ echo "REGRESSIONS FOUND!"
+ echo
+ exit 1
+else
+ echo "No regressions found"
+ echo
+ exit 0
+fi
diff --git a/common/bin/compare_exceptions.sh.incl b/common/bin/compare_exceptions.sh.incl
new file mode 100644
index 0000000..f3158f3
--- /dev/null
+++ b/common/bin/compare_exceptions.sh.incl
@@ -0,0 +1,597 @@
+#!/bin/bash
+#
+# Copyright (c) 2012, 2016, 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.
+#
+
+# This script is not to be run as stand-alone, it should be included from
+# compare.sh.
+
+##########################################################################################
+# Check that we are run via inclusion from compare.sh and not as stand-alone.
+if [ -z "$COMPARE_EXCEPTIONS_INCLUDE" ]; then
+ echo "Error: This script should not be run as stand-alone. It is included by compare.sh"
+ exit 1
+fi
+
+##########################################################################################
+# Diff exceptions
+
+if [ "$OPENJDK_TARGET_OS" = "linux" ]; then
+
+ STRIP_BEFORE_COMPARE="
+ "
+
+ ACCEPTED_BIN_DIFF="
+ ./lib/client/libjsig.so
+ ./lib/client/libjvm.so
+ ./lib/libattach.so
+ ./lib/libdt_socket.so
+ ./lib/libinstrument.so
+ ./lib/libjsdt.so
+ ./lib/libjsig.so
+ ./lib/libmanagement.so
+ ./lib/libnet.so
+ ./lib/libnpt.so
+ ./lib/libverify.so
+ ./lib/minimal/libjsig.so
+ ./lib/minimal/libjvm.so
+ ./lib/server/libjsig.so
+ ./lib/server/libjvm.so
+ ./bin/appletviewer
+ ./bin/idlj
+ ./bin/jar
+ ./bin/jarsigner
+ ./bin/java
+ ./bin/javac
+ ./bin/javadoc
+ ./bin/javah
+ ./bin/javap
+ ./bin/jdeps
+ ./bin/jcmd
+ ./bin/jconsole
+ ./bin/jdb
+ ./bin/jhsdb
+ ./bin/jimage
+ ./bin/jinfo
+ ./bin/jjs
+ ./bin/jlink
+ ./bin/jmap
+ ./bin/jmod
+ ./bin/jps
+ ./bin/jrunscript
+ ./bin/jsadebugd
+ ./bin/jshell
+ ./bin/jstack
+ ./bin/jstat
+ ./bin/jstatd
+ ./bin/keytool
+ ./bin/orbd
+ ./bin/pack200
+ ./bin/policytool
+ ./bin/rmic
+ ./bin/rmid
+ ./bin/rmiregistry
+ ./bin/schemagen
+ ./bin/serialver
+ ./bin/servertool
+ ./bin/tnameserv
+ ./bin/wsgen
+ ./bin/wsimport
+ ./bin/xjc
+ "
+
+ if [ "$OPENJDK_TARGET_CPU" = "arm" ]; then
+ # NOTE: When comparing the old and new hotspot builds, the link time
+ # optimization makes good comparisons impossible. Fulldump compare always
+ # fails and disassembly can end up with some functions in different order.
+ # So for now, accept the difference but put a limit on the size. The
+ # different order of functions shouldn't result in a very big diff.
+ KNOWN_FULLDUMP_DIFF="
+ ./lib/minimal/libjvm.so
+ "
+
+ # Link time optimization adds random numbers to symbol names
+ NEED_DIS_DIFF_FILTER="
+ ./lib/minimal/libjvm.so
+ "
+ DIS_DIFF_FILTER="$SED -r \
+ -e 's/\.[0-9]+/.X/g' \
+ -e 's/\t[0-9a-f]{4} [0-9a-f]{4} /\tXXXX XXXX /' \
+ -e 's/\t[0-9a-f]{5,} /\t<HEX> /' \
+ "
+ KNOWN_DIS_DIFF="
+ ./lib/minimal/libjvm.so
+ "
+ MAX_KNOWN_DIS_DIFF_SIZE="3000"
+
+ NEED_SYMBOLS_DIFF_FILTER="
+ ./lib/minimal/libjvm.so
+ "
+ SYMBOLS_DIFF_FILTER="$SED -r \
+ -e 's/\.[0-9]+/.X/g'
+ "
+ fi
+fi
+
+if [ "$OPENJDK_TARGET_OS" = "solaris" ] && [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; then
+
+ STRIP_BEFORE_COMPARE="
+ "
+
+ SORT_SYMBOLS="
+ ./lib/server/libjvm.so
+ ./lib/libfontmanager.so
+ ./lib/libjimage.so
+ ./lib/libsaproc.so
+ ./lib/libunpack.so
+ ./bin/unpack200
+ "
+
+ SKIP_BIN_DIFF="true"
+
+ ACCEPTED_SMALL_SIZE_DIFF="
+ ./lib/jli/libjli.so
+ ./lib/jspawnhelper
+ ./lib/libJdbcOdbc.so
+ ./lib/libattach.so
+ ./lib/libawt.so
+ ./lib/libawt_headless.so
+ ./lib/libawt_xawt.so
+ ./lib/libdcpr.so
+ ./lib/libdt_socket.so
+ ./lib/libfontmanager.so
+ ./lib/libinstrument.so
+ ./lib/libj2gss.so
+ ./lib/libj2pcsc.so
+ ./lib/libj2pkcs11.so
+ ./lib/libj2ucrypto.so
+ ./lib/libjaas_unix.so
+ ./lib/libjava.so
+ ./lib/libjawt.so
+ ./lib/libjdwp.so
+ ./lib/libjpeg.so
+ ./lib/libjsdt.so
+ ./lib/libjsound.so
+ ./lib/libkcms.so
+ ./lib/liblcms.so
+ ./lib/libmanagement.so
+ ./lib/libmlib_image.so
+ ./lib/libnet.so
+ ./lib/libnio.so
+ ./lib/libnpt.so
+ ./lib/libsctp.so
+ ./lib/libsplashscreen.so
+ ./lib/libsunec.so
+ ./lib/libsunwjdga.so
+ ./lib/libt2k.so
+ ./lib/libunpack.so
+ ./lib/libverify.so
+ ./lib/libzip.so
+ ./lib/server/64/libjvm_db.so
+ ./lib/server/64/libjvm_dtrace.so
+ ./lib/server/libjvm.so
+ ./lib/server/libjvm_db.so
+ ./lib/server/libjvm_dtrace.so
+ ./bin/appletviewer
+ ./bin/idlj
+ ./bin/jar
+ ./bin/jarsigner
+ ./bin/java
+ ./bin/javac
+ ./bin/javadoc
+ ./bin/javah
+ ./bin/javap
+ ./bin/jdeps
+ ./bin/jcmd
+ ./bin/jconsole
+ ./bin/jdb
+ ./bin/jimage
+ ./bin/jinfo
+ ./bin/jjs
+ ./bin/jlink
+ ./bin/jmap
+ ./bin/jmod
+ ./bin/jps
+ ./bin/jrunscript
+ ./bin/jsadebugd
+ ./bin/jstack
+ ./bin/jstat
+ ./bin/jstatd
+ ./bin/keytool
+ ./bin/orbd
+ ./bin/pack200
+ ./bin/policytool
+ ./bin/rmic
+ ./bin/rmid
+ ./bin/rmiregistry
+ ./bin/schemagen
+ ./bin/serialver
+ ./bin/servertool
+ ./bin/tnameserv
+ ./bin/unpack200
+ ./bin/wsgen
+ ./bin/wsimport
+ ./bin/xjc
+ "
+
+ SKIP_FULLDUMP_DIFF="true"
+
+ # Random strings looking like this differ: <.XAKoKoPIac2W0OA.
+ DIS_DIFF_FILTER="$SED \
+ -e 's/<\.[A-Za-z0-9]\{\15}\./<.SYM./' \
+ "
+
+fi
+
+if [ "$OPENJDK_TARGET_OS" = "solaris" ] && [ "$OPENJDK_TARGET_CPU" = "sparcv9" ]; then
+
+ STRIP_BEFORE_COMPARE="
+ "
+
+ SORT_SYMBOLS="
+ ./lib/libjsig.so
+ ./lib/libfontmanager.so
+ ./lib/libjimage.so
+ ./lib/libsaproc.so
+ ./lib/libunpack.so
+ ./lib/server/libjvm.so
+ ./lib/server/libjvm_dtrace.so
+ ./bin/unpack200
+ "
+
+ SKIP_BIN_DIFF="true"
+
+ ACCEPTED_SMALL_SIZE_DIFF="
+ ./lib/client/libjvm.so
+ ./lib/jli/libjli.so
+ ./lib/jspawnhelper
+ ./lib/libJdbcOdbc.so
+ ./lib/libattach.so
+ ./lib/libawt.so
+ ./lib/libawt_headless.so
+ ./lib/libawt_xawt.so
+ ./lib/libdcpr.so
+ ./lib/libdt_socket.so
+ ./lib/libfontmanager.so
+ ./lib/libinstrument.so
+ ./lib/libj2gss.so
+ ./lib/libj2pcsc.so
+ ./lib/libj2pkcs11.so
+ ./lib/libj2ucrypto.so
+ ./lib/libjaas_unix.so
+ ./lib/libjava.so
+ ./lib/libjawt.so
+ ./lib/libjdwp.so
+ ./lib/libjpeg.so
+ ./lib/libjsdt.so
+ ./lib/libjsound.so
+ ./lib/libkcms.so
+ ./lib/liblcms.so
+ ./lib/libmanagement.so
+ ./lib/libmlib_image.so
+ ./lib/libmlib_image_v.so
+ ./lib/libnet.so
+ ./lib/libnio.so
+ ./lib/libnpt.so
+ ./lib/libsctp.so
+ ./lib/libsplashscreen.so
+ ./lib/libsunec.so
+ ./lib/libsunwjdga.so
+ ./lib/libt2k.so
+ ./lib/libunpack.so
+ ./lib/libverify.so
+ ./lib/libzip.so
+ ./lib/server/libjvm.so
+ ./bin/appletviewer
+ ./bin/idlj
+ ./bin/jar
+ ./bin/jarsigner
+ ./bin/java
+ ./bin/javac
+ ./bin/javadoc
+ ./bin/javah
+ ./bin/javap
+ ./bin/jdeps
+ ./bin/jcmd
+ ./bin/jconsole
+ ./bin/jdb
+ ./bin/jimage
+ ./bin/jinfo
+ ./bin/jjs
+ ./bin/jlink
+ ./bin/jmap
+ ./bin/jmod
+ ./bin/jps
+ ./bin/jrunscript
+ ./bin/jsadebugd
+ ./bin/jstack
+ ./bin/jstat
+ ./bin/jstatd
+ ./bin/keytool
+ ./bin/orbd
+ ./bin/pack200
+ ./bin/policytool
+ ./bin/rmic
+ ./bin/rmid
+ ./bin/rmiregistry
+ ./bin/schemagen
+ ./bin/serialver
+ ./bin/servertool
+ ./bin/tnameserv
+ ./bin/unpack200
+ ./bin/wsgen
+ ./bin/wsimport
+ ./bin/xjc
+ "
+
+ DIS_DIFF_FILTER="$SED \
+ -e 's/^[0-9a-f]\{16\}/<ADDR>:/' \
+ -e 's/^ *[0-9a-f]\{3,8\}:/ <ADDR>:/' \
+ -e 's/: [0-9a-f][0-9a-f]\( [0-9a-f][0-9a-f]\)\{2,10\}/: <NUMS>/' \
+ -e 's/\$[a-zA-Z0-9_\$]\{15\}\./<SYM>./' \
+ -e 's/, [0-9a-fx\-]\{1,8\}/, <ADDR>/g' \
+ -e 's/0x[0-9a-f]\{1,8\}/<HEX>/g' \
+ -e 's/\! [0-9a-f]\{1,8\} /! <ADDR> /' \
+ -e 's/call [0-9a-f]\{4,7\}/call <ADDR>/' \
+ -e 's/%hi(0),/%hi(<HEX>),/' \
+ "
+
+ KNOWN_DIS_DIFF="
+ ./lib/libsaproc.so
+ "
+
+ MAX_KNOWN_DIS_DIFF_SIZE="3000"
+
+ # On slowdebug the disassembly can differ randomly.
+ if [ "$DEBUG_LEVEL" = "slowdebug" ]; then
+ ACCEPTED_DIS_DIFF="
+ ./lib/libfontmanager.so
+ ./lib/server/libjvm.so
+ "
+ fi
+
+ SKIP_FULLDUMP_DIFF="true"
+
+fi
+
+
+if [ "$OPENJDK_TARGET_OS" = "windows" ]; then
+
+ ACCEPTED_JARZIP_CONTENTS="
+ /modules_libs/java.security.jgss/w2k_lsa_auth.diz
+ /modules_libs/java.security.jgss/w2k_lsa_auth.pdb
+ /modules_libs/java.security.jgss/w2k_lsa_auth.map
+ /modules_libs/java.security.jgss/w2k_lsa_auth.dll
+ "
+
+ # Probably should add all libs here
+ ACCEPTED_SMALL_SIZE_DIFF="
+ ./bin/attach.dll
+ ./bin/jsoundds.dll
+ ./bin/client/jvm.dll
+ ./bin/server/jvm.dll
+ ./bin/appletviewer.exe
+ ./bin/idlj.exe
+ ./bin/jar.exe
+ ./bin/jarsigner.exe
+ ./bin/java-rmi.exe
+ ./bin/java.exe
+ ./bin/javac.exe
+ ./bin/javadoc.exe
+ ./bin/javah.exe
+ ./bin/javap.exe
+ ./bin/jdeps.exe
+ ./bin/javaw.exe
+ ./bin/jcmd.exe
+ ./bin/jconsole.exe
+ ./bin/jdb.exe
+ ./bin/jimage.exe
+ ./bin/jinfo.exe
+ ./bin/jjs.exe
+ ./bin/jlink.exe
+ ./bin/jmap.exe
+ ./bin/jmod.exe
+ ./bin/jps.exe
+ ./bin/jrunscript.exe
+ ./bin/jsadebugd.exe
+ ./bin/jstack.exe
+ ./bin/jstat.exe
+ ./bin/jstatd.exe
+ ./bin/keytool.exe
+ ./bin/kinit.exe
+ ./bin/klist.exe
+ ./bin/ktab.exe
+ ./bin/orbd.exe
+ ./bin/pack200.exe
+ ./bin/policytool.exe
+ ./bin/rmic.exe
+ ./bin/rmid.exe
+ ./bin/rmiregistry.exe
+ ./bin/schemagen.exe
+ ./bin/serialver.exe
+ ./bin/servertool.exe
+ ./bin/tnameserv.exe
+ ./bin/unpack200.exe
+ ./bin/wsgen.exe
+ ./bin/wsimport.exe
+ ./bin/xjc.exe
+ "
+
+ ACCEPTED_DIS_DIFF="
+ ./bin/jabswitch.exe
+ "
+
+ if [ "$OPENJDK_TARGET_CPU" = "x86" ]; then
+ DIS_DIFF_FILTER="$SED -r \
+ -e 's/^ [0-9A-F]{16}: //' \
+ -e 's/^ [0-9A-F]{8}: / <ADDR>: /' \
+ -e 's/(offset \?\?)_C@_.*/\1<SYM>/' \
+ -e 's/[@?][A-Za-z0-9_]{1,25}/<SYM>/' \
+ -e 's/([-,+])[0-9A-F]{2,16}/\1<HEXSTR>/g' \
+ -e 's/\[[0-9A-F]{4,16}h\]/[<HEXSTR>]/' \
+ -e 's/: ([a-z]{2}[a-z ]{2}) [0-9A-F]{2,16}h?$/: \1 <HEXSTR>/' \
+ -e 's/_20[0-9]{2}_[0-1][0-9]_[0-9]{2}/_<DATE>/' \
+ "
+ elif [ "$OPENJDK_TARGET_CPU" = "x86_64" ]; then
+ DIS_DIFF_FILTER="$SED -r \
+ -e 's/^ [0-9A-F]{16}: //' \
+ -e 's/\[[0-9A-F]{4,16}h\]/[<HEXSTR>]/' \
+ -e 's/([,+])[0-9A-F]{2,16}h/\1<HEXSTR>/' \
+ -e 's/([a-z]{2}[a-z ]{2}) [0-9A-F]{4,16}$/\1 <HEXSTR>/' \
+ -e 's/\[\?\?_C@_.*/[<SYM>]/' \
+ "
+ fi
+
+ SKIP_BIN_DIFF="true"
+ SKIP_FULLDUMP_DIFF="true"
+
+ # NOTE: When comparing the old and new hotspot builds, the server jvm.dll
+ # cannot be made equal in disassembly. Some functions just always end up
+ # in different order. So for now, accept the difference but put a limit
+ # on the size. The different order of functions shouldn't result in a very
+ # big diff.
+ KNOWN_DIS_DIFF="
+ ./bin/server/jvm.dll
+ "
+ MAX_KNOWN_DIS_DIFF_SIZE="2000000"
+fi
+
+
+if [ "$OPENJDK_TARGET_OS" = "macosx" ]; then
+
+ ACCEPTED_JARZIP_CONTENTS="
+ /META-INF/INDEX.LIST
+ "
+
+ ACCEPTED_BIN_DIFF="
+ ./bin/appletviewer
+ ./bin/idlj
+ ./bin/jar
+ ./bin/jarsigner
+ ./bin/java
+ ./bin/javac
+ ./bin/javadoc
+ ./bin/javah
+ ./bin/javap
+ ./bin/javaws
+ ./bin/jdeps
+ ./bin/jcmd
+ ./bin/jconsole
+ ./bin/jdb
+ ./bin/jimage
+ ./bin/jinfo
+ ./bin/jjs
+ ./bin/jlink
+ ./bin/jmap
+ ./bin/jmod
+ ./bin/jps
+ ./bin/jrunscript
+ ./bin/jsadebugd
+ ./bin/jstack
+ ./bin/jstat
+ ./bin/jstatd
+ ./bin/keytool
+ ./bin/orbd
+ ./bin/pack200
+ ./bin/policytool
+ ./bin/rmic
+ ./bin/rmid
+ ./bin/rmiregistry
+ ./bin/schemagen
+ ./bin/serialver
+ ./bin/servertool
+ ./bin/tnameserv
+ ./bin/wsgen
+ ./bin/wsimport
+ ./bin/xjc
+ ./Contents/Home/bin/_javaws
+ ./Contents/Home/bin/javaws
+ ./Contents/Home/bin/idlj
+ ./Contents/Home/bin/servertool
+ ./Contents/Home/lib/shortcuts/JavaWSApplicationStub
+ ./Contents/Home/lib/jli/libjli.dylib
+ ./Contents/Home/lib/jspawnhelper
+ ./Contents/Home/lib/libAppleScriptEngine.dylib
+ ./Contents/Home/lib/libattach.dylib
+ ./Contents/Home/lib/libawt_lwawt.dylib
+ ./Contents/Home/lib/libdeploy.dylib
+ ./Contents/Home/lib/libdt_socket.dylib
+ ./Contents/Home/lib/libinstrument.dylib
+ ./Contents/Home/lib/libjdwp.dylib
+ ./Contents/Home/lib/libjsdt.dylib
+ ./Contents/Home/lib/libjsig.dylib
+ ./Contents/Home/lib/libmanagement.dylib
+ ./Contents/Home/lib/libnpjp2.dylib
+ ./Contents/Home/lib/libosx.dylib
+ ./Contents/Home/lib/libosxapp.dylib
+ ./Contents/Home/lib/libosxui.dylib
+ ./Contents/Home/lib/libverify.dylib
+ ./Contents/Home/lib/libsaproc.dylib
+ ./Contents/Home/lib/libsplashscreen.dylib
+ ./Contents/Home/lib/server/libjsig.dylib
+ ./Contents/Home/lib/server/libjvm.dylib
+ ./Contents/Home/lib/deploy/JavaControlPanel.prefPane/Contents/MacOS/JavaControlPanel
+ ./Contents/Resources/JavaControlPanelHelper
+ ./Contents/Resources/JavaUpdater.app/Contents/MacOS/JavaUpdater
+ ./Contents/Resources/JavawsLauncher.app/Contents/MacOS/JavawsLauncher
+ ./lib/shortcuts/JavaWSApplicationStub
+ ./lib/jli/libjli.dylib
+ ./lib/jspawnhelper
+ ./lib/libAppleScriptEngine.dylib
+ ./lib/libattach.dylib
+ ./lib/libawt_lwawt.dylib
+ ./lib/libdeploy.dylib
+ ./lib/libdt_socket.dylib
+ ./lib/libinstrument.dylib
+ ./lib/libjdwp.dylib
+ ./lib/libjsdt.dylib
+ ./lib/libjsig.dylib
+ ./lib/libmanagement.dylib
+ ./lib/libnpjp2.dylib
+ ./lib/libosx.dylib
+ ./lib/libosxapp.dylib
+ ./lib/libosxui.dylib
+ ./lib/libverify.dylib
+ ./lib/libsaproc.dylib
+ ./lib/libsplashscreen.dylib
+ ./lib/server/libjsig.dylib
+ ./lib/server/libjvm.dylib
+ ./lib/deploy/JavaControlPanel.prefPane/Contents/MacOS/JavaControlPanel
+ ./Versions/A/Resources/finish_installation.app/Contents/MacOS/finish_installation
+ ./Versions/A/Sparkle
+ "
+
+ SORT_SYMBOLS="
+ ./Contents/Home/lib/libsaproc.dylib
+ ./lib/libsaproc.dylib
+ ./lib/libjsig.dylib
+ "
+
+ ACCEPTED_SMALL_SIZE_DIFF="$ACCEPTED_BIN_DIFF"
+
+ DIS_DIFF_FILTER="LANG=C $SED \
+ -e 's/0x[0-9a-f]\{3,16\}/<HEXSTR>/g' -e 's/^[0-9a-f]\{12,20\}/<ADDR>/' \
+ -e 's/-20[0-9][0-9]-[0-1][0-9]-[0-3][0-9]-[0-2][0-9]\{5\}/<DATE>/g' \
+ -e 's/), built on .*/), <DATE>/' \
+ "
+
+fi
diff --git a/common/bin/hgforest.sh b/common/bin/hgforest.sh
new file mode 100644
index 0000000..b5d6a6c
--- /dev/null
+++ b/common/bin/hgforest.sh
@@ -0,0 +1,444 @@
+#!/bin/sh
+#
+# Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# 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.
+#
+
+# Shell script for a fast parallel forest/trees command
+
+usage() {
+ echo "usage: $0 [-h|--help] [-q|--quiet] [-v|--verbose] [-s|--sequential] [--] <command> [commands...]" > ${status_output}
+ echo "command format : mercurial-command [ "jdk" ] [ extra-url ]"
+ echo "command option: jdk : used only with clone command to request just the extra repos for JDK-only builds"
+ echo "command option : extra-url : server hosting the extra repositories"
+ echo "Environment variables which modify behaviour:"
+ echo " HGFOREST_QUIET : (boolean) If 'true' then standard output is redirected to /dev/null"
+ echo " HGFOREST_VERBOSE : (boolean) If 'true' then Mercurial asked to produce verbose output"
+ echo " HGFOREST_SEQUENTIAL : (boolean) If 'true' then repos are processed sequentially. Disables concurrency"
+ echo " HGFOREST_GLOBALOPTS : (string, must begin with space) Additional Mercurial global options"
+ echo " HGFOREST_REDIRECT : (file path) Redirect standard output to specified file"
+ echo " HGFOREST_FIFOS : (boolean) Default behaviour for FIFO detection. Does not override FIFOs disabled"
+ echo " HGFOREST_CONCURRENCY: (positive integer) Number of repos to process concurrently"
+ echo " HGFOREST_DEBUG : (boolean) If 'true' then temp files are retained"
+ exit 1
+}
+
+global_opts="${HGFOREST_GLOBALOPTS:-}"
+status_output="${HGFOREST_REDIRECT:-/dev/stdout}"
+qflag="${HGFOREST_QUIET:-false}"
+vflag="${HGFOREST_VERBOSE:-false}"
+sflag="${HGFOREST_SEQUENTIAL:-false}"
+while [ $# -gt 0 ]
+do
+ case $1 in
+ -h | --help )
+ usage
+ ;;
+
+ -q | --quiet )
+ qflag="true"
+ ;;
+
+ -v | --verbose )
+ vflag="true"
+ ;;
+
+ -s | --sequential )
+ sflag="true"
+ ;;
+
+ '--' ) # no more options
+ shift; break
+ ;;
+
+ -*) # bad option
+ usage
+ ;;
+
+ * ) # non option
+ break
+ ;;
+ esac
+ shift
+done
+
+# debug mode
+if [ "${HGFOREST_DEBUG:-false}" = "true" ] ; then
+ global_opts="${global_opts} --debug"
+fi
+
+# silence standard output?
+if [ ${qflag} = "true" ] ; then
+ global_opts="${global_opts} -q"
+ status_output="/dev/null"
+fi
+
+# verbose output?
+if [ ${vflag} = "true" ] ; then
+ global_opts="${global_opts} -v"
+fi
+
+# Make sure we have a command.
+if [ ${#} -lt 1 -o -z "${1:-}" ] ; then
+ echo "ERROR: No command to hg supplied!" > ${status_output}
+ usage > ${status_output}
+fi
+
+# grab command
+command="${1}"; shift
+
+if [ ${vflag} = "true" ] ; then
+ echo "# Mercurial command: ${command}" > ${status_output}
+fi
+
+# At this point all command options and args are in "$@".
+# Always use "$@" (within double quotes) to avoid breaking
+# args with spaces into separate args.
+
+if [ ${vflag} = "true" ] ; then
+ echo "# Mercurial command argument count: $#" > ${status_output}
+ for cmdarg in "$@" ; do
+ echo "# Mercurial command argument: ${cmdarg}" > ${status_output}
+ done
+fi
+
+# Clean out the temporary directory that stores the pid files.
+tmp=/tmp/forest.$$
+rm -f -r ${tmp}
+mkdir -p ${tmp}
+
+
+if [ "${HGFOREST_DEBUG:-false}" = "true" ] ; then
+ # ignores redirection.
+ echo "DEBUG: temp files are in: ${tmp}" >&2
+fi
+
+# Check if we can use fifos for monitoring sub-process completion.
+echo "1" > ${tmp}/read
+while_subshell=1
+while read line; do
+ while_subshell=0
+ break;
+done < ${tmp}/read
+rm ${tmp}/read
+
+on_windows=`uname -s | egrep -ic -e 'cygwin|msys'`
+
+if [ ${while_subshell} = "1" -o ${on_windows} = "1" ]; then
+ # cygwin has (2014-04-18) broken (single writer only) FIFOs
+ # msys has (2014-04-18) no FIFOs.
+ # older shells create a sub-shell for redirect to while
+ have_fifos="false"
+else
+ have_fifos="${HGFOREST_FIFOS:-true}"
+fi
+
+safe_interrupt () {
+ if [ -d ${tmp} ]; then
+ if [ "`ls ${tmp}/*.pid`" != "" ]; then
+ echo "Waiting for processes ( `cat ${tmp}/.*.pid ${tmp}/*.pid 2> /dev/null | tr '\n' ' '`) to terminate nicely!" > ${status_output}
+ sleep 1
+ # Pipe stderr to dev/null to silence kill, that complains when trying to kill
+ # a subprocess that has already exited.
+ kill -TERM `cat ${tmp}/*.pid | tr '\n' ' '` 2> /dev/null
+ wait
+ echo "Interrupt complete!" > ${status_output}
+ fi
+ rm -f -r ${tmp}
+ fi
+ exit 130
+}
+
+nice_exit () {
+ if [ -d ${tmp} ]; then
+ if [ "`ls -A ${tmp} 2> /dev/null`" != "" ]; then
+ wait
+ fi
+ if [ "${HGFOREST_DEBUG:-false}" != "true" ] ; then
+ rm -f -r ${tmp}
+ fi
+ fi
+}
+
+trap 'safe_interrupt' INT QUIT
+trap 'nice_exit' EXIT
+
+subrepos="corba jaxp jaxws langtools jdk hotspot nashorn"
+jdk_subrepos_extra="closed jdk/src/closed jdk/make/closed jdk/test/closed hotspot/make/closed hotspot/src/closed hotspot/test/closed"
+subrepos_extra="$jdk_subrepos_extra deploy install sponsors"
+
+# Only look in specific locations for possible forests (avoids long searches)
+pull_default=""
+repos=""
+repos_extra=""
+if [ "${command}" = "clone" -o "${command}" = "fclone" -o "${command}" = "tclone" ] ; then
+ # we must be a clone
+ if [ ! -f .hg/hgrc ] ; then
+ echo "ERROR: Need initial repository to use this script" > ${status_output}
+ exit 1
+ fi
+
+ # the clone must know where it came from (have a default pull path).
+ pull_default=`hg paths default`
+ if [ "${pull_default}" = "" ] ; then
+ echo "ERROR: Need initial clone with 'hg paths default' defined" > ${status_output}
+ exit 1
+ fi
+
+ # determine which sub repos need to be cloned.
+ for i in ${subrepos} ; do
+ if [ ! -f ${i}/.hg/hgrc ] ; then
+ repos="${repos} ${i}"
+ fi
+ done
+
+ pull_default_tail=`echo ${pull_default} | sed -e 's@^.*://[^/]*/\(.*\)@\1@'`
+
+ if [ $# -gt 0 ] ; then
+ if [ "x${1}" = "xjdk" ] ; then
+ subrepos_extra=$jdk_subrepos_extra
+ echo "subrepos being cloned are $subrepos_extra"
+ shift
+ fi
+ # if there is an "extra sources" path then reparent "extra" repos to that path
+ if [ "x${pull_default}" = "x${pull_default_tail}" ] ; then
+ echo "ERROR: Need initial clone from non-local source" > ${status_output}
+ exit 1
+ fi
+ # assume that "extra sources" path is the first arg
+ pull_extra="${1}/${pull_default_tail}"
+
+ # determine which extra subrepos need to be cloned.
+ for i in ${subrepos_extra} ; do
+ if [ ! -f ${i}/.hg/hgrc ] ; then
+ repos_extra="${repos_extra} ${i}"
+ fi
+ done
+ else
+ if [ "x${pull_default}" = "x${pull_default_tail}" ] ; then
+ # local source repo. Clone the "extra" subrepos that exist there.
+ for i in ${subrepos_extra} ; do
+ if [ -f ${pull_default}/${i}/.hg/hgrc -a ! -f ${i}/.hg/hgrc ] ; then
+ # sub-repo there in source but not here
+ repos_extra="${repos_extra} ${i}"
+ fi
+ done
+ fi
+ fi
+
+ # Any repos to deal with?
+ if [ "${repos}" = "" -a "${repos_extra}" = "" ] ; then
+ echo "No repositories to process." > ${status_output}
+ exit
+ fi
+
+ # Repos to process concurrently. Clone does better with low concurrency.
+ at_a_time="${HGFOREST_CONCURRENCY:-2}"
+else
+ # Process command for all of the present repos
+ for i in . ${subrepos} ${subrepos_extra} ; do
+ if [ -d ${i}/.hg ] ; then
+ repos="${repos} ${i}"
+ fi
+ done
+
+ # Any repos to deal with?
+ if [ "${repos}" = "" ] ; then
+ echo "No repositories to process." > ${status_output}
+ exit
+ fi
+
+ # any of the repos locked?
+ locked=""
+ for i in ${repos} ; do
+ if [ -h ${i}/.hg/store/lock -o -f ${i}/.hg/store/lock ] ; then
+ locked="${i} ${locked}"
+ fi
+ done
+ if [ "${locked}" != "" ] ; then
+ echo "ERROR: These repositories are locked: ${locked}" > ${status_output}
+ exit 1
+ fi
+
+ # Repos to process concurrently.
+ at_a_time="${HGFOREST_CONCURRENCY:-8}"
+fi
+
+# Echo out what repositories we do a command on.
+echo "# Repositories: ${repos} ${repos_extra}" > ${status_output}
+
+if [ "${command}" = "serve" ] ; then
+ # "serve" is run for all the repos as one command.
+ (
+ (
+ cwd=`pwd`
+ serving=`basename ${cwd}`
+ (
+ echo "[web]"
+ echo "description = ${serving}"
+ echo "allow_push = *"
+ echo "push_ssl = False"
+
+ echo "[paths]"
+ for i in ${repos} ; do
+ if [ "${i}" != "." ] ; then
+ echo "/${serving}/${i} = ${i}"
+ else
+ echo "/${serving} = ${cwd}"
+ fi
+ done
+ ) > ${tmp}/serve.web-conf
+
+ echo "serving root repo ${serving}" > ${status_output}
+
+ echo "hg${global_opts} serve ${@}" > ${status_output}
+ (PYTHONUNBUFFERED=true hg${global_opts} serve -A ${status_output} -E ${status_output} --pid-file ${tmp}/serve.pid --web-conf ${tmp}/serve.web-conf "${@}"; echo "$?" > ${tmp}/serve.pid.rc ) 2>&1 &
+ ) 2>&1 | sed -e "s@^@serve: @" > ${status_output}
+ ) &
+else
+ # Run the supplied command on all repos in parallel.
+
+ # n is the number of subprocess started or which might still be running.
+ n=0
+ if [ ${have_fifos} = "true" ]; then
+ # if we have fifos use them to detect command completion.
+ mkfifo ${tmp}/fifo
+ exec 3<>${tmp}/fifo
+ fi
+
+ # iterate over all of the subrepos.
+ for i in ${repos} ${repos_extra} ; do
+ n=`expr ${n} '+' 1`
+ repopidfile=`echo ${i} | sed -e 's@./@@' -e 's@/@_@g'`
+ reponame=`echo ${i} | sed -e :a -e 's/^.\{1,20\}$/ &/;ta'`
+ pull_base="${pull_default}"
+
+ # regular repo or "extra" repo?
+ for j in ${repos_extra} ; do
+ if [ "${i}" = "${j}" ] ; then
+ # it's an "extra"
+ if [ -n "${pull_extra}" ]; then
+ # if no pull_extra is defined, assume that pull_default is valid
+ pull_base="${pull_extra}"
+ fi
+ fi
+ done
+
+ # remove trailing slash
+ pull_base="`echo ${pull_base} | sed -e 's@[/]*$@@'`"
+
+ # execute the command on the subrepo
+ (
+ (
+ if [ "${command}" = "clone" -o "${command}" = "fclone" -o "${command}" = "tclone" ] ; then
+ # some form of clone
+ clone_newrepo="${pull_base}/${i}"
+ parent_path="`dirname ${i}`"
+ if [ "${parent_path}" != "." ] ; then
+ times=0
+ while [ ! -d "${parent_path}" ] ; do ## nested repo, ensure containing dir exists
+ if [ "${sflag}" = "true" ] ; then
+ # Missing parent is fatal during sequential operation.
+ echo "ERROR: Missing parent path: ${parent_path}" > ${status_output}
+ exit 1
+ fi
+ times=`expr ${times} '+' 1`
+ if [ `expr ${times} '%' 10` -eq 0 ] ; then
+ echo "${parent_path} still not created, waiting..." > ${status_output}
+ fi
+ sleep 5
+ done
+ fi
+ # run the clone command.
+ echo "hg${global_opts} clone ${clone_newrepo} ${i}" > ${status_output}
+ (PYTHONUNBUFFERED=true hg${global_opts} clone ${clone_newrepo} ${i}; echo "$?" > ${tmp}/${repopidfile}.pid.rc ) 2>&1 &
+ else
+ # run the command.
+ echo "cd ${i} && hg${global_opts} ${command} ${@}" > ${status_output}
+ cd ${i} && (PYTHONUNBUFFERED=true hg${global_opts} ${command} "${@}"; echo "$?" > ${tmp}/${repopidfile}.pid.rc ) 2>&1 &
+ fi
+
+ echo $! > ${tmp}/${repopidfile}.pid
+ ) 2>&1 | sed -e "s@^@${reponame}: @" > ${status_output}
+ # tell the fifo waiter that this subprocess is done.
+ if [ ${have_fifos} = "true" ]; then
+ echo "${i}" >&3
+ fi
+ ) &
+
+ if [ "${sflag}" = "true" ] ; then
+ # complete this task before starting another.
+ wait
+ else
+ if [ "${have_fifos}" = "true" ]; then
+ # check on count of running subprocesses and possibly wait for completion
+ if [ ${n} -ge ${at_a_time} ] ; then
+ # read will block until there are completed subprocesses
+ while read repo_done; do
+ n=`expr ${n} '-' 1`
+ if [ ${n} -lt ${at_a_time} ] ; then
+ # we should start more subprocesses
+ break;
+ fi
+ done <&3
+ fi
+ else
+ # Compare completions to starts
+ completed="`(ls -a1 ${tmp}/*.pid.rc 2> /dev/null | wc -l) || echo 0`"
+ while [ `expr ${n} '-' ${completed}` -ge ${at_a_time} ] ; do
+ # sleep a short time to give time for something to complete
+ sleep 1
+ completed="`(ls -a1 ${tmp}/*.pid.rc 2> /dev/null | wc -l) || echo 0`"
+ done
+ fi
+ fi
+ done
+
+ if [ ${have_fifos} = "true" ]; then
+ # done with the fifo
+ exec 3>&-
+ fi
+fi
+
+# Wait for all subprocesses to complete
+wait
+
+# Terminate with exit 0 only if all subprocesses were successful
+# Terminate with highest exit code of subprocesses
+ec=0
+if [ -d ${tmp} ]; then
+ rcfiles="`(ls -a ${tmp}/*.pid.rc 2> /dev/null) || echo ''`"
+ for rc in ${rcfiles} ; do
+ exit_code=`cat ${rc} | tr -d ' \n\r'`
+ if [ "${exit_code}" != "0" ] ; then
+ if [ ${exit_code} -gt 1 ]; then
+ # mercurial exit codes greater than "1" signal errors.
+ repo="`echo ${rc} | sed -e 's@^'${tmp}'@@' -e 's@/*\([^/]*\)\.pid\.rc$@\1@' -e 's@_@/@g'`"
+ echo "WARNING: ${repo} exited abnormally (${exit_code})" > ${status_output}
+ fi
+ if [ ${exit_code} -gt ${ec} ]; then
+ # assume that larger exit codes are more significant
+ ec=${exit_code}
+ fi
+ fi
+ done
+fi
+exit ${ec}
diff --git a/common/bin/hide_important_warnings_from_javac.sh b/common/bin/hide_important_warnings_from_javac.sh
new file mode 100644
index 0000000..0433635
--- /dev/null
+++ b/common/bin/hide_important_warnings_from_javac.sh
@@ -0,0 +1,41 @@
+#!/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.
+#
+
+if [ -x /usr/bin/ggrep ] ; then
+ # Gnu grep on Solaris
+ # (reference configure and build/solaris-i586-clientANDserver-release/spec.gmk
+ GREP=/usr/bin/ggrep
+else
+ GREP=grep
+fi
+#
+EXP="Note: Some input files use or override a deprecated API."
+EXP="${EXP}|Note: Recompile with -Xlint:deprecation for details."
+EXP="${EXP}|Note: Some input files use unchecked or unsafe operations."
+EXP="${EXP}|Note: Recompile with -Xlint:unchecked for details."
+EXP="${EXP}| warning"
+EXP="${EXP}|uses or overrides a deprecated API."
+EXP="${EXP}|uses unchecked or unsafe operations."
+#
+${GREP} --line-buffered -v -E "${EXP}"
diff --git a/common/bin/idea.sh b/common/bin/idea.sh
new file mode 100644
index 0000000..2cd6f92
--- /dev/null
+++ b/common/bin/idea.sh
@@ -0,0 +1,209 @@
+#!/bin/sh
+#
+# Copyright (c) 2009, 2014, 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.
+#
+
+# Shell script for generating an IDEA project from a given list of modules
+
+usage() {
+ echo "usage: $0 [-h|--help] [-v|--verbose] [-o|--output <path>] [modules]+"
+ exit 1
+}
+
+SCRIPT_DIR=`dirname $0`
+PWD=`pwd`
+cd $SCRIPT_DIR; SCRIPT_DIR=`pwd`
+cd ../../; TOP=`pwd`; cd $PWD
+
+IDEA_OUTPUT=$TOP/.idea
+VERBOSE="false"
+while [ $# -gt 0 ]
+do
+ case $1 in
+ -h | --help )
+ usage
+ ;;
+
+ -v | --vebose )
+ VERBOSE="true"
+ ;;
+
+ -o | --output )
+ IDEA_OUTPUT=$2
+ shift
+ ;;
+
+ -*) # bad option
+ usage
+ ;;
+
+ * ) # non option
+ break
+ ;;
+ esac
+ shift
+done
+
+mkdir $IDEA_OUTPUT || exit 1
+cd $IDEA_OUTPUT; IDEA_OUTPUT=`pwd`
+
+IDEA_MAKE="$TOP/make/idea"
+IDEA_TEMPLATE="$IDEA_MAKE/template"
+IML_TEMPLATE="$IDEA_TEMPLATE/jdk.iml"
+ANT_TEMPLATE="$IDEA_TEMPLATE/ant.xml"
+IDEA_IML="$IDEA_OUTPUT/jdk.iml"
+IDEA_ANT="$IDEA_OUTPUT/ant.xml"
+
+if [ "$VERBOSE" = "true" ] ; then
+ echo "output dir: $IDEA_OUTPUT"
+ echo "idea template dir: $IDEA_TEMPLATE"
+fi
+
+if [ ! -f "$IML_TEMPLATE" ] ; then
+ echo "FATAL: cannot find $IML_TEMPLATE" >&2; exit 1
+fi
+
+if [ ! -f "$ANT_TEMPLATE" ] ; then
+ echo "FATAL: cannot find $ANT_TEMPLATE" >&2; exit 1
+fi
+
+cp -r "$IDEA_TEMPLATE"/* "$IDEA_OUTPUT"
+cd $TOP ; make -f "$IDEA_MAKE/idea.gmk" -I make/common idea MAKEOVERRIDES= OUT=$IDEA_OUTPUT/env.cfg MODULES="$*" || exit 1
+cd $SCRIPT_DIR
+
+. $IDEA_OUTPUT/env.cfg
+
+# Expect MODULE_ROOTS, MODULE_NAMES, BOOT_JDK & SPEC to be set
+if [ "x$MODULE_ROOTS" = "x" ] ; then
+ echo "FATAL: MODULE_ROOTS is empty" >&2; exit 1
+fi
+
+if [ "x$MODULE_NAMES" = "x" ] ; then
+ echo "FATAL: MODULE_NAMES is empty" >&2; exit 1
+fi
+
+if [ "x$BOOT_JDK" = "x" ] ; then
+ echo "FATAL: BOOT_JDK is empty" >&2; exit 1
+fi
+
+if [ "x$SPEC" = "x" ] ; then
+ echo "FATAL: SPEC is empty" >&2; exit 1
+fi
+
+SOURCE_FOLDER=" <sourceFolder url=\"file://\$MODULE_DIR\$/####\" isTestSource=\"false\" />"
+SOURCE_FOLDERS_DONE="false"
+
+addSourceFolder() {
+ root=$@
+ relativePath="`echo "$root" | sed -e s@"$TOP/\(.*$\)"@"\1"@`"
+ folder="`echo "$SOURCE_FOLDER" | sed -e s@"\(.*/\)####\(.*\)"@"\1$relativePath\2"@`"
+ printf "%s\n" "$folder" >> $IDEA_IML
+}
+
+### Generate project iml
+RELATIVE_BUILD_DIR="`dirname $SPEC | sed -e s@"$TOP/\(.*$\)"@"\1"@`"
+rm -f $IDEA_IML
+while IFS= read -r line
+do
+ if echo "$line" | egrep "^ .* <sourceFolder.*####" > /dev/null ; then
+ if [ "$SOURCE_FOLDERS_DONE" = "false" ] ; then
+ SOURCE_FOLDERS_DONE="true"
+ for root in $MODULE_ROOTS; do
+ addSourceFolder $root
+ done
+ fi
+ elif echo "$line" | egrep "^ .* <excludeFolder.*####" > /dev/null ; then
+ ul="`echo "$line" | sed -e s@"\(.*/\)####\(.*\)"@"\1$RELATIVE_BUILD_DIR\2"@`"
+ printf "%s\n" "$ul" >> $IDEA_IML
+ else
+ printf "%s\n" "$line" >> $IDEA_IML
+ fi
+done < "$IML_TEMPLATE"
+
+
+MODULE_NAME=" <property name=\"module.name\" value=\"####\" />"
+
+addModuleName() {
+ mn="`echo "$MODULE_NAME" | sed -e s@"\(.*\)####\(.*\)"@"\1$MODULE_NAMES\2"@`"
+ printf "%s\n" "$mn" >> $IDEA_ANT
+}
+
+BUILD_DIR=" <property name=\"build.target.dir\" value=\"####\" />"
+
+addBuildDir() {
+ DIR=`dirname $SPEC`
+ mn="`echo "$BUILD_DIR" | sed -e s@"\(.*\)####\(.*\)"@"\1$DIR\2"@`"
+ printf "%s\n" "$mn" >> $IDEA_ANT
+}
+
+JTREG_HOME=" <property name=\"jtreg.home\" value=\"####\" />"
+
+addJtregHome() {
+ DIR=`dirname $SPEC`
+ mn="`echo "$JTREG_HOME" | sed -e s@"\(.*\)####\(.*\)"@"\1$JT_HOME\2"@`"
+ printf "%s\n" "$mn" >> $IDEA_ANT
+}
+
+### Generate ant.xml
+
+rm -f $IDEA_ANT
+while IFS= read -r line
+do
+ if echo "$line" | egrep "^ .* <property name=\"module.name\"" > /dev/null ; then
+ addModuleName
+ elif echo "$line" | egrep "^ .* <property name=\"jtreg.home\"" > /dev/null ; then
+ addJtregHome
+ elif echo "$line" | egrep "^ .* <property name=\"build.target.dir\"" > /dev/null ; then
+ addBuildDir
+ else
+ printf "%s\n" "$line" >> $IDEA_ANT
+ fi
+done < "$ANT_TEMPLATE"
+
+### Compile the custom Logger
+
+CLASSES=$IDEA_OUTPUT/classes
+
+if [ "x$ANT_HOME" = "x" ] ; then
+ # try some common locations, before giving up
+ if [ -f "/usr/share/ant/lib/ant.jar" ] ; then
+ ANT_HOME="/usr/share/ant"
+ elif [ -f "/usr/local/Cellar/ant/1.9.4/libexec/lib/ant.jar" ] ; then
+ ANT_HOME="/usr/local/Cellar/ant/1.9.4/libexec"
+ else
+ echo "FATAL: cannot find ant. Try setting ANT_HOME." >&2; exit 1
+ fi
+fi
+CP=$ANT_HOME/lib/ant.jar
+rm -rf $CLASSES; mkdir $CLASSES
+
+if [ "x$CYGPATH" = "x" ] ; then ## CYGPATH may be set in env.cfg
+ JAVAC_SOURCE_FILE=$IDEA_OUTPUT/src/idea/JdkIdeaAntLogger.java
+ JAVAC_CLASSES=$CLASSES
+ JAVAC_CP=$CP
+else
+ JAVAC_SOURCE_FILE=`cygpath -am $IDEA_OUTPUT/src/idea/JdkIdeaAntLogger.java`
+ JAVAC_CLASSES=`cygpath -am $CLASSES`
+ JAVAC_CP=`cygpath -am $CP`
+fi
+
+$BOOT_JDK/bin/javac -d $JAVAC_CLASSES -cp $JAVAC_CP $JAVAC_SOURCE_FILE
diff --git a/common/bin/jib.sh b/common/bin/jib.sh
new file mode 100644
index 0000000..ceac118
--- /dev/null
+++ b/common/bin/jib.sh
@@ -0,0 +1,149 @@
+#!/bin/bash
+#
+# Copyright (c) 2015, 2016, 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.
+#
+
+# This script installs the JIB tool into it's own local repository and
+# puts a wrapper scripts into <source-root>/.jib
+
+mydir="$(dirname "${BASH_SOURCE[0]}")"
+myname="$(basename "${BASH_SOURCE[0]}")"
+
+installed_jib_script=${mydir}/../../.jib/jib
+install_data=${mydir}/../../.jib/.data
+
+setup_url() {
+ if [ -f ~/.config/jib/jib.conf ]; then
+ source ~/.config/jib/jib.conf
+ fi
+
+ jib_repository="jdk-virtual"
+ jib_organization="jpg/infra/builddeps"
+ jib_module="jib"
+ jib_revision="2.0-SNAPSHOT"
+ jib_ext="jib.sh.gz"
+
+ closed_script="${mydir}/../../closed/conf/jib-install.conf"
+ if [ -f "${closed_script}" ]; then
+ source "${closed_script}"
+ fi
+
+ if [ -n "${JIB_SERVER}" ]; then
+ jib_server="${JIB_SERVER}"
+ fi
+ if [ -n "${JIB_SERVER_MIRRORS}" ]; then
+ jib_server_mirrors="${JIB_SERVER_MIRRORS}"
+ fi
+ if [ -n "${JIB_REPOSITORY}" ]; then
+ jib_repository="${JIB_REPOSITORY}"
+ fi
+ if [ -n "${JIB_ORGANIZATION}" ]; then
+ jib_organization="${JIB_ORGANIZATION}"
+ fi
+ if [ -n "${JIB_MODULE}" ]; then
+ jib_module="${JIB_MODULE}"
+ fi
+ if [ -n "${JIB_REVISION}" ]; then
+ jib_revision="${JIB_REVISION}"
+ fi
+ if [ -n "${JIB_EXTENSION}" ]; then
+ jib_extension="${JIB_EXTENSION}"
+ fi
+
+ if [ -n "${JIB_URL}" ]; then
+ jib_url="${JIB_URL}"
+ data_string="${jib_url}"
+ else
+ jib_path="${jib_repository}/${jib_organization}/${jib_module}/${jib_revision}/${jib_module}-${jib_revision}.${jib_ext}"
+ data_string="${jib_path}"
+ jib_url="${jib_server}/${jib_path}"
+ fi
+}
+
+install_jib() {
+ if [ -z "${jib_server}" -a -z "${JIB_URL}" ]; then
+ echo "No jib server or URL provided, set either"
+ echo "JIB_SERVER=<base server address>"
+ echo "or"
+ echo "JIB_URL=<full path to install script>"
+ exit 1
+ fi
+
+ if command -v curl > /dev/null; then
+ getcmd="curl -s -L --retry 3 --retry-delay 5"
+ elif command -v wget > /dev/null; then
+ getcmd="wget --quiet -O -"
+ else
+ echo "Could not find either curl or wget"
+ exit 1
+ fi
+
+ if ! command -v gunzip > /dev/null; then
+ echo "Could not find gunzip"
+ exit 1
+ fi
+
+ echo "Downloading JIB bootstrap script"
+ mkdir -p "${installed_jib_script%/*}"
+ rm -f "${installed_jib_script}.gz"
+ ${getcmd} ${jib_url} > "${installed_jib_script}.gz"
+ if [ ! -s "${installed_jib_script}.gz" ]; then
+ echo "Failed to download ${jib_url}"
+ if [ -n "${jib_path}" -a -n "${jib_server_mirrors}" ]; then
+ OLD_IFS="${IFS}"
+ IFS=" ,"
+ for mirror in ${jib_server_mirrors}; do
+ echo "Trying mirror ${mirror}"
+ jib_url="${mirror}/${jib_path}"
+ ${getcmd} ${jib_url} > "${installed_jib_script}.gz"
+ if [ -s "${installed_jib_script}.gz" ]; then
+ echo "Download from mirror successful"
+ break
+ else
+ echo "Failed to download ${jib_url}"
+ fi
+ done
+ IFS="${OLD_IFS}"
+ fi
+ if [ ! -s "${installed_jib_script}.gz" ]; then
+ exit 1
+ fi
+ fi
+ echo "Extracting JIB bootstrap script"
+ rm -f "${installed_jib_script}"
+ gunzip "${installed_jib_script}.gz"
+ chmod +x "${installed_jib_script}"
+ echo "${data_string}" > "${install_data}"
+}
+
+# Main body starts here
+
+setup_url
+
+if [ ! -x "${installed_jib_script}" ]; then
+ install_jib
+elif [ ! -e "${install_data}" ] || [ "${data_string}" != "$(cat "${install_data}")" ]; then
+ echo "Install url changed since last time, reinstalling"
+ install_jib
+fi
+
+${installed_jib_script} "$@"
diff --git a/common/bin/logger.sh b/common/bin/logger.sh
new file mode 100644
index 0000000..1ead00c
--- /dev/null
+++ b/common/bin/logger.sh
@@ -0,0 +1,59 @@
+#!/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.
+#
+
+# Usage: ./logger.sh theloggfile acommand arg1 arg2
+#
+# Execute acommand with args, in such a way that
+# both stdout and stderr from acommand are appended to
+# theloggfile.
+#
+# Preserve stdout and stderr, so that the stdout
+# from logger.sh is the same from acommand and equally
+# for stderr.
+#
+# Propagate the result code from acommand so that
+# ./logger.sh exits with the same result code.
+
+# Create a temporary directory to store the result code from
+# the wrapped command.
+RCDIR=`mktemp -dt jdk-build-logger.tmp.XXXXXX` || exit $?
+trap "rm -rf \"$RCDIR\"" EXIT
+LOGFILE=$1
+shift
+
+# We need to handle command likes like "VAR1=val1 /usr/bin/cmd VAR2=val2".
+# Do this by shifting away prepended variable assignments, and export them
+# instead.
+is_prefix=true
+for opt; do
+ if [[ "$is_prefix" = true && "$opt" =~ ^.*=.*$ ]]; then
+ export $opt
+ shift
+ else
+ is_prefix=false
+ fi
+done
+
+(exec 3>&1 ; ("$@" 2>&1 1>&3; echo $? > "$RCDIR/rc") | tee -a $LOGFILE 1>&2 ; exec 3>&-) | tee -a $LOGFILE
+exit `cat "$RCDIR/rc"`
diff --git a/common/bin/print-config.js b/common/bin/print-config.js
new file mode 100644
index 0000000..1abb206
--- /dev/null
+++ b/common/bin/print-config.js
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2015, 2016, 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 little utility can be used to expand the jib-profiles configuration
+ * files into plain json.
+ *
+ * Usage:
+ *
+ * jjs -scripting print-config.js -- [<jib-profiles.js>]
+ *
+ */
+
+var file = $ARG[0];
+if (file == null) {
+ file = new java.io.File(__DIR__, "../conf/jib-profiles.js").getCanonicalPath();
+}
+load(file);
+var input = {};
+input.get = function(dependencyName, attribute) {
+ return "\${" + dependencyName + "." + attribute + "}";
+};
+print(JSON.stringify(getJibProfiles(input), null, 2));
diff --git a/common/bin/shell-tracer.sh b/common/bin/shell-tracer.sh
new file mode 100644
index 0000000..5c7cc44
--- /dev/null
+++ b/common/bin/shell-tracer.sh
@@ -0,0 +1,47 @@
+#!/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.
+#
+
+# Usage: sh shell-tracer.sh <TIME_CMD> <OUTPUT_FILE> <OLD_SHELL> <shell command line>
+#
+# This shell script is supposed to be set as a replacement for SHELL in make,
+# causing it to be called whenever make wants to execute shell commands.
+# The <shell command line> is suitable for passing on to the old shell,
+# typically beginning with -c.
+#
+# This script will make sure the shell command line is executed with
+# OLD_SHELL -x, and it will also store a simple log of the the time it takes to
+# execute the command in the OUTPUT_FILE, using the "time" utility as pointed
+# to by TIME_CMD. If TIME_CMD is "-", no timestamp will be stored.
+
+TIME_CMD="$1"
+OUTPUT_FILE="$2"
+OLD_SHELL="$3"
+shift
+shift
+shift
+if [ "$TIME_CMD" != "-" ]; then
+"$TIME_CMD" -f "[TIME:%E] $*" -a -o "$OUTPUT_FILE" "$OLD_SHELL" -x "$@"
+else
+"$OLD_SHELL" -x "$@"
+fi
diff --git a/common/bin/unshuffle_list.txt b/common/bin/unshuffle_list.txt
new file mode 100644
index 0000000..73ccb0a
--- /dev/null
+++ b/common/bin/unshuffle_list.txt
@@ -0,0 +1,1499 @@
+#
+# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation.
+#
+# 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.
+#
+
+corba/src/java.corba/share/classes/com/sun/corba/se : corba/src/share/classes/com/sun/corba/se
+corba/src/java.corba/share/classes/com/sun/org/omg : corba/src/share/classes/com/sun/org/omg
+corba/src/java.corba/share/classes/com/sun/tools/corba/se/idl : corba/src/share/classes/com/sun/tools/corba/se/idl
+corba/src/java.corba/share/classes/javax/activity : corba/src/share/classes/javax/activity
+corba/src/java.corba/share/classes/javax/rmi : corba/src/share/classes/javax/rmi
+corba/src/java.corba/share/classes/org/omg : corba/src/share/classes/org/omg
+corba/src/java.corba/share/classes/sun/corba : corba/src/share/classes/sun/corba
+corba/src/java.corba/share/classes/com/sun/jndi/cosnaming : jdk/src/share/classes/com/sun/jndi/cosnaming
+corba/src/java.corba/share/classes/com/sun/jndi/toolkit/corba : jdk/src/share/classes/com/sun/jndi/toolkit/corba
+corba/src/java.corba/share/classes/com/sun/jndi/url/corbaname : jdk/src/share/classes/com/sun/jndi/url/corbaname
+corba/src/java.corba/share/classes/com/sun/jndi/url/iiop : jdk/src/share/classes/com/sun/jndi/url/iiop
+corba/src/java.corba/share/classes/com/sun/jndi/url/iiopname : jdk/src/share/classes/com/sun/jndi/url/iiopname
+corba/src/jdk.rmic/share/classes/sun/rmi/rmic/iiop : corba/src/share/classes/sun/rmi/rmic/iiop
+jaxp/src/java.xml/share/classes/com/sun/java_cup/internal/runtime : jaxp/src/com/sun/java_cup/internal/runtime
+jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal : jaxp/src/com/sun/org/apache/bcel/internal
+jaxp/src/java.xml/share/classes/com/sun/org/apache/regexp/internal : jaxp/src/com/sun/org/apache/regexp/internal
+jaxp/src/java.xml/share/classes/com/sun/org/apache/xalan : jaxp/src/com/sun/org/apache/xalan
+jaxp/src/java.xml/share/classes/com/sun/org/apache/xerces : jaxp/src/com/sun/org/apache/xerces
+jaxp/src/java.xml/share/classes/com/sun/org/apache/xml/internal/dtm : jaxp/src/com/sun/org/apache/xml/internal/dtm
+jaxp/src/java.xml/share/classes/com/sun/org/apache/xml/internal/res : jaxp/src/com/sun/org/apache/xml/internal/res
+jaxp/src/java.xml/share/classes/com/sun/org/apache/xml/internal/resolver : jaxp/src/com/sun/org/apache/xml/internal/resolver
+jaxp/src/java.xml/share/classes/com/sun/org/apache/xml/internal/serialize : jaxp/src/com/sun/org/apache/xml/internal/serialize
+jaxp/src/java.xml/share/classes/com/sun/org/apache/xml/internal/serializer : jaxp/src/com/sun/org/apache/xml/internal/serializer
+jaxp/src/java.xml/share/classes/com/sun/org/apache/xml/internal/utils : jaxp/src/com/sun/org/apache/xml/internal/utils
+jaxp/src/java.xml/share/classes/com/sun/org/apache/xpath : jaxp/src/com/sun/org/apache/xpath
+jaxp/src/java.xml/share/classes/com/sun/xml/internal/stream : jaxp/src/com/sun/xml/internal/stream
+jaxp/src/java.xml/share/classes/javax/xml/datatype : jaxp/src/javax/xml/datatype
+jaxp/src/java.xml/share/classes/javax/xml/namespace : jaxp/src/javax/xml/namespace
+jaxp/src/java.xml/share/classes/javax/xml/parsers : jaxp/src/javax/xml/parsers
+jaxp/src/java.xml/share/classes/javax/xml/stream : jaxp/src/javax/xml/stream
+jaxp/src/java.xml/share/classes/javax/xml/transform : jaxp/src/javax/xml/transform
+jaxp/src/java.xml/share/classes/javax/xml/validation : jaxp/src/javax/xml/validation
+jaxp/src/java.xml/share/classes/javax/xml/XMLConstants.java : jaxp/src/javax/xml/XMLConstants.java
+jaxp/src/java.xml/share/classes/javax/xml/xpath : jaxp/src/javax/xml/xpath
+jaxp/src/java.xml/share/classes/org/w3c/dom : jaxp/src/org/w3c/dom
+jaxp/src/java.xml/share/classes/org/xml/sax : jaxp/src/org/xml/sax
+jaxws/src/java.activation/share/classes/com/sun/activation/registries : jaxws/src/share/jaf_classes/com/sun/activation/registries
+jaxws/src/java.activation/share/classes/javax/activation : jaxws/src/share/jaf_classes/javax/activation
+jaxws/src/java.activation/share/classes/META-INF : jaxws/src/share/jaf_classes/META-INF
+jaxws/src/java.xml.ws.annotation/share/classes/javax/annotation : jaxws/src/share/jaxws_classes/javax/annotation
+jaxws/src/java.xml.bind/share/classes/com/sun/istack/internal : jaxws/src/share/jaxws_classes/com/sun/istack/internal
+jaxws/src/java.xml.bind/share/classes/com/sun/istack/internal/localization : jaxws/src/share/jaxws_classes/com/sun/istack/internal/localization
+jaxws/src/java.xml.bind/share/classes/com/sun/istack/internal/logging/Logger.java : jaxws/src/share/jaxws_classes/com/sun/istack/internal/logging/Logger.java
+jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/bind : jaxws/src/share/jaxws_classes/com/sun/xml/internal/bind
+jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/fastinfoset : jaxws/src/share/jaxws_classes/com/sun/xml/internal/fastinfoset
+jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/org : jaxws/src/share/jaxws_classes/com/sun/xml/internal/org
+jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/txw2 : jaxws/src/share/jaxws_classes/com/sun/xml/internal/txw2
+jaxws/src/java.xml.bind/share/classes/javax/xml/bind : jaxws/src/share/jaxws_classes/javax/xml/bind
+jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging : jaxws/src/share/jaxws_classes/com/sun/xml/internal/messaging
+jaxws/src/java.xml.ws/share/classes/javax/xml/soap : jaxws/src/share/jaxws_classes/javax/xml/soap
+jaxws/src/java.xml.ws/share/classes/com/oracle/webservices/internal : jaxws/src/share/jaxws_classes/com/oracle/webservices/internal
+jaxws/src/java.xml.ws/share/classes/com/oracle/xmlns/internal : jaxws/src/share/jaxws_classes/com/oracle/xmlns/internal
+jaxws/src/java.xml.ws/share/classes/com/sun/org/glassfish : jaxws/src/share/jaxws_classes/com/sun/org/glassfish
+jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/stream : jaxws/src/share/jaxws_classes/com/sun/xml/internal/stream
+jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/ws : jaxws/src/share/jaxws_classes/com/sun/xml/internal/ws
+jaxws/src/java.xml.ws/share/classes/javax/jws : jaxws/src/share/jaxws_classes/javax/jws
+jaxws/src/java.xml.ws/share/classes/javax/xml/ws : jaxws/src/share/jaxws_classes/javax/xml/ws
+jaxws/src/jdk.xml.bind/share/classes/com/sun/codemodel : jaxws/src/share/jaxws_classes/com/sun/codemodel
+jaxws/src/jdk.xml.bind/share/classes/com/sun/istack/internal/tools : jaxws/src/share/jaxws_classes/com/sun/istack/internal/tools
+jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal : jaxws/src/share/jaxws_classes/com/sun/tools/internal
+jaxws/src/jdk.xml.bind/share/classes/com/sun/xml/internal/dtdparser : jaxws/src/share/jaxws_classes/com/sun/xml/internal/dtdparser
+jaxws/src/jdk.xml.bind/share/classes/com/sun/xml/internal/rngom : jaxws/src/share/jaxws_classes/com/sun/xml/internal/rngom
+jaxws/src/jdk.xml.bind/share/classes/com/sun/xml/internal/xsom : jaxws/src/share/jaxws_classes/com/sun/xml/internal/xsom
+jaxws/src/jdk.xml.bind/share/classes/META-INF/services/com.sun.tools.internal.xjc.Plugin : jaxws/src/share/jaxws_classes/com/sun/tools/etc/META-INF/services/com.sun.tools.internal.xjc.Plugin
+jaxws/src/jdk.xml.bind/share/classes/org/relaxng/datatype : jaxws/src/share/jaxws_classes/org/relaxng/datatype
+jaxws/src/jdk.xml.ws/share/classes/com/sun/tools/internal/ws : jaxws/src/share/jaxws_classes/com/sun/tools/internal/ws
+jaxws/src/jdk.xml.ws/share/classes/META-INF/services/com.sun.tools.internal.ws.wscompile.Plugin : jaxws/src/share/jaxws_classes/com/sun/tools/etc/META-INF/services/com.sun.tools.internal.ws.wscompile.Plugin
+jdk/src/demo/share : jdk/src/share/demo
+jdk/src/demo/share/jpda/com/sun/tools/example : jdk/src/share/classes/com/sun/tools/example
+jdk/src/demo/solaris/jni/Poller : jdk/src/solaris/demo/jni/Poller
+jdk/src/demo/unix/jvmti/hprof/hprof_md.c : jdk/src/solaris/demo/jvmti/hprof/hprof_md.c
+jdk/src/demo/windows/jvmti/hprof : jdk/src/windows/demo/jvmti/hprof
+jdk/src/java.base/aix/conf/tzmappings : jdk/src/aix/lib/tzmappings
+jdk/src/java.base/aix/native/libnet/java/net : jdk/src/aix/native/java/net
+jdk/src/java.base/aix/native/libnio/ch : jdk/src/aix/native/sun/nio/ch
+jdk/src/java.base/aix/native/libnio/fs/AixNativeDispatcher.c : jdk/src/aix/native/sun/nio/fs/AixNativeDispatcher.c
+jdk/src/java.base/macosx/classes/java/lang/ClassLoaderHelper.java : jdk/src/macosx/classes/java/lang/ClassLoaderHelper.java
+jdk/src/java.base/macosx/classes/java/net/DefaultInterface.java : jdk/src/macosx/classes/java/net/DefaultInterface.java
+jdk/src/java.base/macosx/classes/sun/nio/ch : jdk/src/macosx/classes/sun/nio/ch
+jdk/src/java.base/macosx/classes/sun/util/locale/provider : jdk/src/macosx/classes/sun/util/locale/provider
+jdk/src/java.base/macosx/conf/x86_64/jvm.cfg : jdk/src/macosx/bin/x86_64/jvm.cfg
+jdk/src/java.base/macosx/native/include/jni_md.h : jdk/src/macosx/javavm/export/jni_md.h
+jdk/src/java.base/macosx/native/include/jvm_md.h : jdk/src/macosx/javavm/export/jvm_md.h
+jdk/src/java.base/macosx/native/launcher/Info-cmdline.plist : jdk/src/macosx/lib/Info-cmdline.plist
+jdk/src/java.base/macosx/native/launcher/Info-privileged.plist : jdk/src/macosx/lib/Info-privileged.plist
+jdk/src/java.base/macosx/native/launcher/jexec.c : jdk/src/macosx/bin/jexec.c
+jdk/src/java.base/macosx/native/libjava/HostLocaleProviderAdapter_md.c : jdk/src/macosx/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
+jdk/src/java.base/macosx/native/libjli/java_md_macosx.c : jdk/src/macosx/bin/java_md_macosx.c
+jdk/src/java.base/macosx/native/libjli/java_md_macosx.h : jdk/src/macosx/bin/java_md_macosx.h
+jdk/src/java.base/share/classes/com/sun/crypto/provider : jdk/src/share/classes/com/sun/crypto/provider
+jdk/src/java.base/share/classes/com/sun/java/util/jar/pack : jdk/src/share/classes/com/sun/java/util/jar/pack
+jdk/src/java.base/share/classes/com/sun/net/ssl/internal/ssl : jdk/src/share/classes/com/sun/net/ssl/internal/ssl
+jdk/src/java.base/share/classes/com/sun/net/ssl/internal/www/protocol/https : jdk/src/share/classes/com/sun/net/ssl/internal/www/protocol/https
+jdk/src/java.base/share/classes/com/sun/net/ssl : jdk/src/share/classes/com/sun/net/ssl
+jdk/src/java.base/share/classes/com/sun/nio/file : jdk/src/share/classes/com/sun/nio/file
+jdk/src/java.base/share/classes/com/sun/security/cert/internal/x509 : jdk/src/share/classes/com/sun/security/cert/internal/x509
+jdk/src/java.base/share/classes/com/sun/security/ntlm : jdk/src/share/classes/com/sun/security/ntlm
+jdk/src/java.base/share/classes/java/io : jdk/src/share/classes/java/io
+jdk/src/java.base/share/classes/java/lang/annotation : jdk/src/share/classes/java/lang/annotation
+jdk/src/java.base/share/classes/java/lang/doc-files : jdk/src/share/classes/java/lang/doc-files
+jdk/src/java.base/share/classes/java/lang/invoke : jdk/src/share/classes/java/lang/invoke
+jdk/src/java.base/share/classes/java/lang : jdk/src/share/classes/java/lang
+jdk/src/java.base/share/classes/java/lang/ref : jdk/src/share/classes/java/lang/ref
+jdk/src/java.base/share/classes/java/lang/reflect : jdk/src/share/classes/java/lang/reflect
+jdk/src/java.base/share/classes/java/math : jdk/src/share/classes/java/math
+jdk/src/java.base/share/classes/java/net : jdk/src/share/classes/java/net
+jdk/src/java.base/share/classes/java/nio : jdk/src/share/classes/java/nio
+jdk/src/java.base/share/classes/java/security/acl : jdk/src/share/classes/java/security/acl
+jdk/src/java.base/share/classes/java/security/cert : jdk/src/share/classes/java/security/cert
+jdk/src/java.base/share/classes/java/security/interfaces : jdk/src/share/classes/java/security/interfaces
+jdk/src/java.base/share/classes/java/security : jdk/src/share/classes/java/security
+jdk/src/java.base/share/classes/java/security/spec : jdk/src/share/classes/java/security/spec
+jdk/src/java.base/share/classes/java/text : jdk/src/share/classes/java/text
+jdk/src/java.base/share/classes/java/time : jdk/src/share/classes/java/time
+jdk/src/java.base/share/classes/java/util/concurrent : jdk/src/share/classes/java/util/concurrent
+jdk/src/java.base/share/classes/java/util/function : jdk/src/share/classes/java/util/function
+jdk/src/java.base/share/classes/java/util/jar : jdk/src/share/classes/java/util/jar
+jdk/src/java.base/share/classes/java/util : jdk/src/share/classes/java/util
+jdk/src/java.base/share/classes/java/util/regex : jdk/src/share/classes/java/util/regex
+jdk/src/java.base/share/classes/java/util/spi : jdk/src/share/classes/java/util/spi
+jdk/src/java.base/share/classes/java/util/stream : jdk/src/share/classes/java/util/stream
+jdk/src/java.base/share/classes/java/util/zip : jdk/src/share/classes/java/util/zip
+jdk/src/java.base/share/classes/javax/crypto : jdk/src/share/classes/javax/crypto
+jdk/src/java.base/share/classes/javax/net : jdk/src/share/classes/javax/net
+jdk/src/java.base/share/classes/javax/security/auth/callback : jdk/src/share/classes/javax/security/auth/callback
+jdk/src/java.base/share/classes/javax/security/auth : jdk/src/share/classes/javax/security/auth
+jdk/src/java.base/share/classes/javax/security/auth/login : jdk/src/share/classes/javax/security/auth/login
+jdk/src/java.base/share/classes/javax/security/auth/spi : jdk/src/share/classes/javax/security/auth/spi
+jdk/src/java.base/share/classes/javax/security/auth/x500 : jdk/src/share/classes/javax/security/auth/x500
+jdk/src/java.base/share/classes/javax/security/cert : jdk/src/share/classes/javax/security/cert
+jdk/src/java.base/share/classes/jdk/internal/org/objectweb : jdk/src/share/classes/jdk/internal/org/objectweb
+jdk/src/java.base/share/classes/jdk/internal/org/xml/sax : jdk/src/share/classes/jdk/internal/org/xml/sax
+jdk/src/java.base/share/classes/jdk/internal/util/xml : jdk/src/share/classes/jdk/internal/util/xml
+jdk/src/java.base/share/classes/jdk/net : jdk/src/share/classes/jdk/net
+jdk/src/java.base/share/classes/overview-core.html : jdk/src/share/classes/overview-core.html
+jdk/src/java.base/share/classes/sun/invoke : jdk/src/share/classes/sun/invoke
+jdk/src/java.base/share/classes/sun/launcher : jdk/src/share/classes/sun/launcher
+jdk/src/java.base/share/classes/sun/misc : jdk/src/share/classes/sun/misc
+jdk/src/java.base/share/classes/sun/net/dns : jdk/src/share/classes/sun/net/dns
+jdk/src/java.base/share/classes/sun/net/ftp/impl : jdk/src/share/classes/sun/net/ftp/impl
+jdk/src/java.base/share/classes/sun/net/ftp : jdk/src/share/classes/sun/net/ftp
+jdk/src/java.base/share/classes/sun/net/idn : jdk/src/share/classes/sun/net/idn
+jdk/src/java.base/share/classes/sun/net : jdk/src/share/classes/sun/net
+jdk/src/java.base/share/classes/sun/net/sdp : jdk/src/share/classes/sun/net/sdp
+jdk/src/java.base/share/classes/sun/net/smtp : jdk/src/share/classes/sun/net/smtp
+jdk/src/java.base/share/classes/sun/net/spi/DefaultProxySelector.java : jdk/src/share/classes/sun/net/spi/DefaultProxySelector.java
+jdk/src/java.base/share/classes/sun/net/spi/nameservice : jdk/src/share/classes/sun/net/spi/nameservice
+jdk/src/java.base/share/classes/sun/net/util : jdk/src/share/classes/sun/net/util
+jdk/src/java.base/share/classes/sun/net/www/content/text : jdk/src/share/classes/sun/net/www/content/text
+jdk/src/java.base/share/classes/sun/net/www/http : jdk/src/share/classes/sun/net/www/http
+jdk/src/java.base/share/classes/sun/net/www : jdk/src/share/classes/sun/net/www
+jdk/src/java.base/share/classes/sun/net/www/protocol/file : jdk/src/share/classes/sun/net/www/protocol/file
+jdk/src/java.base/share/classes/sun/net/www/protocol/ftp : jdk/src/share/classes/sun/net/www/protocol/ftp
+jdk/src/java.base/share/classes/sun/net/www/protocol/http : jdk/src/share/classes/sun/net/www/protocol/http
+jdk/src/java.base/share/classes/sun/net/www/protocol/http/ntlm : jdk/src/share/classes/sun/net/www/protocol/http/ntlm
+jdk/src/java.base/share/classes/sun/net/www/protocol/https : jdk/src/share/classes/sun/net/www/protocol/https
+jdk/src/java.base/share/classes/sun/net/www/protocol/jar : jdk/src/share/classes/sun/net/www/protocol/jar
+jdk/src/java.base/share/classes/sun/net/www/protocol/mailto : jdk/src/share/classes/sun/net/www/protocol/mailto
+jdk/src/java.base/share/classes/sun/net/www/protocol/netdoc/Handler.java : jdk/src/share/classes/sun/net/www/protocol/netdoc/Handler.java
+jdk/src/java.base/share/classes/sun/nio/ByteBuffered.java : jdk/src/share/classes/sun/nio/ByteBuffered.java
+jdk/src/java.base/share/classes/sun/nio/ch : jdk/src/share/classes/sun/nio/ch
+jdk/src/java.base/share/classes/sun/nio/cs : jdk/src/share/classes/sun/nio/cs
+jdk/src/java.base/share/classes/sun/nio/fs : jdk/src/share/classes/sun/nio/fs
+jdk/src/java.base/share/classes/sun/reflect : jdk/src/share/classes/sun/reflect
+jdk/src/java.base/share/classes/sun/security/action : jdk/src/share/classes/sun/security/action
+jdk/src/java.base/share/classes/sun/security/internal : jdk/src/share/classes/sun/security/internal
+jdk/src/java.base/share/classes/sun/security/jca : jdk/src/share/classes/sun/security/jca
+jdk/src/java.base/share/classes/sun/security/pkcs10 : jdk/src/share/classes/sun/security/pkcs10
+jdk/src/java.base/share/classes/sun/security/pkcs12 : jdk/src/share/classes/sun/security/pkcs12
+jdk/src/java.base/share/classes/sun/security/pkcs : jdk/src/share/classes/sun/security/pkcs
+jdk/src/java.base/share/classes/sun/security/provider/certpath : jdk/src/share/classes/sun/security/provider/certpath
+jdk/src/java.base/share/classes/sun/security/provider/certpath/ssl : jdk/src/share/classes/sun/security/provider/certpath/ssl
+jdk/src/java.base/share/classes/sun/security/provider : jdk/src/share/classes/sun/security/provider
+jdk/src/java.base/share/classes/sun/security/rsa : jdk/src/share/classes/sun/security/rsa
+jdk/src/java.base/share/classes/sun/security/ssl : jdk/src/share/classes/sun/security/ssl
+jdk/src/java.base/share/classes/sun/security/timestamp : jdk/src/share/classes/sun/security/timestamp
+jdk/src/java.base/share/classes/sun/security/tools : jdk/src/share/classes/sun/security/tools
+jdk/src/java.base/share/classes/sun/security/tools/keytool : jdk/src/share/classes/sun/security/tools/keytool
+jdk/src/java.base/share/classes/sun/security/util : jdk/src/share/classes/sun/security/util
+jdk/src/java.base/share/classes/sun/security/validator : jdk/src/share/classes/sun/security/validator
+jdk/src/java.base/share/classes/sun/security/x509 : jdk/src/share/classes/sun/security/x509
+jdk/src/java.base/share/classes/sun/text/bidi : jdk/src/share/classes/sun/text/bidi
+jdk/src/java.base/share/classes/sun/text : jdk/src/share/classes/sun/text
+jdk/src/java.base/share/classes/sun/text/normalizer : jdk/src/share/classes/sun/text/normalizer
+jdk/src/java.base/share/classes/sun/text/resources/en : jdk/src/share/classes/sun/text/resources/en
+jdk/src/java.base/share/classes/sun/text/resources : jdk/src/share/classes/sun/text/resources
+jdk/src/java.base/share/classes/sun/util/calendar : jdk/src/share/classes/sun/util/calendar
+jdk/src/java.base/share/classes/sun/util/cldr/CLDRLocaleProviderAdapter.java : jdk/src/share/classes/sun/util/cldr/CLDRLocaleProviderAdapter.java
+jdk/src/java.base/share/classes/sun/util : jdk/src/share/classes/sun/util
+jdk/src/java.base/share/classes/sun/util/locale : jdk/src/share/classes/sun/util/locale
+jdk/src/java.base/share/classes/sun/util/locale/provider : jdk/src/share/classes/sun/util/locale/provider
+jdk/src/java.base/share/classes/sun/util/logging : jdk/src/share/classes/sun/util/logging
+jdk/src/java.base/share/classes/sun/util/resources/en : jdk/src/share/classes/sun/util/resources/en
+jdk/src/java.base/share/classes/sun/util/resources : jdk/src/share/classes/sun/util/resources
+jdk/src/java.base/share/classes/sun/util/spi : jdk/src/share/classes/sun/util/spi
+jdk/src/java.base/share/conf/calendars.properties : jdk/src/share/lib/calendars.properties
+jdk/src/java.base/share/conf/hijrah-config-umalqura.properties : jdk/src/share/lib/hijrah-config-umalqura.properties
+jdk/src/java.base/share/conf/net.properties : jdk/src/share/lib/net.properties
+jdk/src/java.base/share/conf/security : jdk/src/share/lib/security
+jdk/src/java.base/share/native/include/classfile_constants.h : jdk/src/share/javavm/export/classfile_constants.h
+jdk/src/java.base/share/native/include/jni.h : jdk/src/share/javavm/export/jni.h
+jdk/src/java.base/share/native/include/jvm.h : jdk/src/share/javavm/export/jvm.h
+jdk/src/java.base/share/native/include/jvmticmlr.h : jdk/src/share/javavm/export/jvmticmlr.h
+jdk/src/java.base/share/native/include/jvmti.h : jdk/src/share/javavm/export/jvmti.h
+jdk/src/java.base/share/native/launcher/defines.h : jdk/src/share/bin/defines.h
+jdk/src/java.base/share/native/launcher/main.c : jdk/src/share/bin/main.c
+jdk/src/java.base/share/native/libfdlibm/e_acos.c : jdk/src/share/native/java/lang/fdlibm/src/e_acos.c
+jdk/src/java.base/share/native/libfdlibm/e_asin.c : jdk/src/share/native/java/lang/fdlibm/src/e_asin.c
+jdk/src/java.base/share/native/libfdlibm/e_atan2.c : jdk/src/share/native/java/lang/fdlibm/src/e_atan2.c
+jdk/src/java.base/share/native/libfdlibm/e_atanh.c : jdk/src/share/native/java/lang/fdlibm/src/e_atanh.c
+jdk/src/java.base/share/native/libfdlibm/e_cosh.c : jdk/src/share/native/java/lang/fdlibm/src/e_cosh.c
+jdk/src/java.base/share/native/libfdlibm/e_exp.c : jdk/src/share/native/java/lang/fdlibm/src/e_exp.c
+jdk/src/java.base/share/native/libfdlibm/e_fmod.c : jdk/src/share/native/java/lang/fdlibm/src/e_fmod.c
+jdk/src/java.base/share/native/libfdlibm/e_hypot.c : jdk/src/share/native/java/lang/fdlibm/src/e_hypot.c
+jdk/src/java.base/share/native/libfdlibm/e_log10.c : jdk/src/share/native/java/lang/fdlibm/src/e_log10.c
+jdk/src/java.base/share/native/libfdlibm/e_log.c : jdk/src/share/native/java/lang/fdlibm/src/e_log.c
+jdk/src/java.base/share/native/libfdlibm/e_pow.c : jdk/src/share/native/java/lang/fdlibm/src/e_pow.c
+jdk/src/java.base/share/native/libfdlibm/e_remainder.c : jdk/src/share/native/java/lang/fdlibm/src/e_remainder.c
+jdk/src/java.base/share/native/libfdlibm/e_rem_pio2.c : jdk/src/share/native/java/lang/fdlibm/src/e_rem_pio2.c
+jdk/src/java.base/share/native/libfdlibm/e_scalb.c : jdk/src/share/native/java/lang/fdlibm/src/e_scalb.c
+jdk/src/java.base/share/native/libfdlibm/e_sinh.c : jdk/src/share/native/java/lang/fdlibm/src/e_sinh.c
+jdk/src/java.base/share/native/libfdlibm/e_sqrt.c : jdk/src/share/native/java/lang/fdlibm/src/e_sqrt.c
+jdk/src/java.base/share/native/libfdlibm/fdlibm.h : jdk/src/share/native/java/lang/fdlibm/include/fdlibm.h
+jdk/src/java.base/share/native/libfdlibm/jfdlibm.h : jdk/src/share/native/java/lang/fdlibm/include/jfdlibm.h
+jdk/src/java.base/share/native/libfdlibm/k_cos.c : jdk/src/share/native/java/lang/fdlibm/src/k_cos.c
+jdk/src/java.base/share/native/libfdlibm/k_rem_pio2.c : jdk/src/share/native/java/lang/fdlibm/src/k_rem_pio2.c
+jdk/src/java.base/share/native/libfdlibm/k_sin.c : jdk/src/share/native/java/lang/fdlibm/src/k_sin.c
+jdk/src/java.base/share/native/libfdlibm/k_standard.c : jdk/src/share/native/java/lang/fdlibm/src/k_standard.c
+jdk/src/java.base/share/native/libfdlibm/k_tan.c : jdk/src/share/native/java/lang/fdlibm/src/k_tan.c
+jdk/src/java.base/share/native/libfdlibm/s_atan.c : jdk/src/share/native/java/lang/fdlibm/src/s_atan.c
+jdk/src/java.base/share/native/libfdlibm/s_cbrt.c : jdk/src/share/native/java/lang/fdlibm/src/s_cbrt.c
+jdk/src/java.base/share/native/libfdlibm/s_ceil.c : jdk/src/share/native/java/lang/fdlibm/src/s_ceil.c
+jdk/src/java.base/share/native/libfdlibm/s_copysign.c : jdk/src/share/native/java/lang/fdlibm/src/s_copysign.c
+jdk/src/java.base/share/native/libfdlibm/s_cos.c : jdk/src/share/native/java/lang/fdlibm/src/s_cos.c
+jdk/src/java.base/share/native/libfdlibm/s_expm1.c : jdk/src/share/native/java/lang/fdlibm/src/s_expm1.c
+jdk/src/java.base/share/native/libfdlibm/s_fabs.c : jdk/src/share/native/java/lang/fdlibm/src/s_fabs.c
+jdk/src/java.base/share/native/libfdlibm/s_finite.c : jdk/src/share/native/java/lang/fdlibm/src/s_finite.c
+jdk/src/java.base/share/native/libfdlibm/s_floor.c : jdk/src/share/native/java/lang/fdlibm/src/s_floor.c
+jdk/src/java.base/share/native/libfdlibm/s_frexp.c : jdk/src/share/native/java/lang/fdlibm/src/s_frexp.c
+jdk/src/java.base/share/native/libfdlibm/s_ilogb.c : jdk/src/share/native/java/lang/fdlibm/src/s_ilogb.c
+jdk/src/java.base/share/native/libfdlibm/s_isnan.c : jdk/src/share/native/java/lang/fdlibm/src/s_isnan.c
+jdk/src/java.base/share/native/libfdlibm/s_ldexp.c : jdk/src/share/native/java/lang/fdlibm/src/s_ldexp.c
+jdk/src/java.base/share/native/libfdlibm/s_lib_version.c : jdk/src/share/native/java/lang/fdlibm/src/s_lib_version.c
+jdk/src/java.base/share/native/libfdlibm/s_log1p.c : jdk/src/share/native/java/lang/fdlibm/src/s_log1p.c
+jdk/src/java.base/share/native/libfdlibm/s_logb.c : jdk/src/share/native/java/lang/fdlibm/src/s_logb.c
+jdk/src/java.base/share/native/libfdlibm/s_matherr.c : jdk/src/share/native/java/lang/fdlibm/src/s_matherr.c
+jdk/src/java.base/share/native/libfdlibm/s_modf.c : jdk/src/share/native/java/lang/fdlibm/src/s_modf.c
+jdk/src/java.base/share/native/libfdlibm/s_nextafter.c : jdk/src/share/native/java/lang/fdlibm/src/s_nextafter.c
+jdk/src/java.base/share/native/libfdlibm/s_rint.c : jdk/src/share/native/java/lang/fdlibm/src/s_rint.c
+jdk/src/java.base/share/native/libfdlibm/s_scalbn.c : jdk/src/share/native/java/lang/fdlibm/src/s_scalbn.c
+jdk/src/java.base/share/native/libfdlibm/s_signgam.c : jdk/src/share/native/java/lang/fdlibm/src/s_signgam.c
+jdk/src/java.base/share/native/libfdlibm/s_significand.c : jdk/src/share/native/java/lang/fdlibm/src/s_significand.c
+jdk/src/java.base/share/native/libfdlibm/s_sin.c : jdk/src/share/native/java/lang/fdlibm/src/s_sin.c
+jdk/src/java.base/share/native/libfdlibm/s_tan.c : jdk/src/share/native/java/lang/fdlibm/src/s_tan.c
+jdk/src/java.base/share/native/libfdlibm/s_tanh.c : jdk/src/share/native/java/lang/fdlibm/src/s_tanh.c
+jdk/src/java.base/share/native/libfdlibm/w_acos.c : jdk/src/share/native/java/lang/fdlibm/src/w_acos.c
+jdk/src/java.base/share/native/libfdlibm/w_asin.c : jdk/src/share/native/java/lang/fdlibm/src/w_asin.c
+jdk/src/java.base/share/native/libfdlibm/w_atan2.c : jdk/src/share/native/java/lang/fdlibm/src/w_atan2.c
+jdk/src/java.base/share/native/libfdlibm/w_atanh.c : jdk/src/share/native/java/lang/fdlibm/src/w_atanh.c
+jdk/src/java.base/share/native/libfdlibm/w_cosh.c : jdk/src/share/native/java/lang/fdlibm/src/w_cosh.c
+jdk/src/java.base/share/native/libfdlibm/w_exp.c : jdk/src/share/native/java/lang/fdlibm/src/w_exp.c
+jdk/src/java.base/share/native/libfdlibm/w_fmod.c : jdk/src/share/native/java/lang/fdlibm/src/w_fmod.c
+jdk/src/java.base/share/native/libfdlibm/w_hypot.c : jdk/src/share/native/java/lang/fdlibm/src/w_hypot.c
+jdk/src/java.base/share/native/libfdlibm/w_log10.c : jdk/src/share/native/java/lang/fdlibm/src/w_log10.c
+jdk/src/java.base/share/native/libfdlibm/w_log.c : jdk/src/share/native/java/lang/fdlibm/src/w_log.c
+jdk/src/java.base/share/native/libfdlibm/w_pow.c : jdk/src/share/native/java/lang/fdlibm/src/w_pow.c
+jdk/src/java.base/share/native/libfdlibm/w_remainder.c : jdk/src/share/native/java/lang/fdlibm/src/w_remainder.c
+jdk/src/java.base/share/native/libfdlibm/w_scalb.c : jdk/src/share/native/java/lang/fdlibm/src/w_scalb.c
+jdk/src/java.base/share/native/libfdlibm/w_sinh.c : jdk/src/share/native/java/lang/fdlibm/src/w_sinh.c
+jdk/src/java.base/share/native/libfdlibm/w_sqrt.c : jdk/src/share/native/java/lang/fdlibm/src/w_sqrt.c
+jdk/src/java.base/share/native/libjava/AccessController.c : jdk/src/share/native/java/security/AccessController.c
+jdk/src/java.base/share/native/libjava/Array.c : jdk/src/share/native/java/lang/reflect/Array.c
+jdk/src/java.base/share/native/libjava/AtomicLong.c : jdk/src/share/native/java/util/concurrent/atomic/AtomicLong.c
+jdk/src/java.base/share/native/libjava/Bits.c : jdk/src/share/native/java/nio/Bits.c
+jdk/src/java.base/share/native/libjava/check_version.c : jdk/src/share/native/common/check_version.c
+jdk/src/java.base/share/native/libjava/Class.c : jdk/src/share/native/java/lang/Class.c
+jdk/src/java.base/share/native/libjava/ClassLoader.c : jdk/src/share/native/java/lang/ClassLoader.c
+jdk/src/java.base/share/native/libjava/Compiler.c : jdk/src/share/native/java/lang/Compiler.c
+jdk/src/java.base/share/native/libjava/ConstantPool.c : jdk/src/share/native/sun/reflect/ConstantPool.c
+jdk/src/java.base/share/native/libjava/Double.c : jdk/src/share/native/java/lang/Double.c
+jdk/src/java.base/share/native/libjava/Executable.c : jdk/src/share/native/java/lang/reflect/Executable.c
+jdk/src/java.base/share/native/libjava/Field.c : jdk/src/share/native/java/lang/reflect/Field.c
+jdk/src/java.base/share/native/libjava/FileInputStream.c : jdk/src/share/native/java/io/FileInputStream.c
+jdk/src/java.base/share/native/libjava/Float.c : jdk/src/share/native/java/lang/Float.c
+jdk/src/java.base/share/native/libjava/GC.c : jdk/src/share/native/sun/misc/GC.c
+jdk/src/java.base/share/native/libjava/gdefs.h : jdk/src/share/native/common/gdefs.h
+jdk/src/java.base/share/native/libjava/io_util.c : jdk/src/share/native/java/io/io_util.c
+jdk/src/java.base/share/native/libjava/io_util.h : jdk/src/share/native/java/io/io_util.h
+jdk/src/java.base/share/native/libjava/java_props.h : jdk/src/share/native/java/lang/java_props.h
+jdk/src/java.base/share/native/libjava/jdk_util.c : jdk/src/share/native/common/jdk_util.c
+jdk/src/java.base/share/native/libjava/jdk_util.h : jdk/src/share/native/common/jdk_util.h
+jdk/src/java.base/share/native/libjava/jio.c : jdk/src/share/native/common/jio.c
+jdk/src/java.base/share/native/libjava/jlong.h : jdk/src/share/native/common/jlong.h
+jdk/src/java.base/share/native/libjava/jni_util.c : jdk/src/share/native/common/jni_util.c
+jdk/src/java.base/share/native/libjava/jni_util.h : jdk/src/share/native/common/jni_util.h
+jdk/src/java.base/share/native/libjava/MessageUtils.c : jdk/src/share/native/sun/misc/MessageUtils.c
+jdk/src/java.base/share/native/libjava/NativeAccessors.c : jdk/src/share/native/sun/reflect/NativeAccessors.c
+jdk/src/java.base/share/native/libjava/NativeSignalHandler.c : jdk/src/share/native/sun/misc/NativeSignalHandler.c
+jdk/src/java.base/share/native/libjava/Object.c : jdk/src/share/native/java/lang/Object.c
+jdk/src/java.base/share/native/libjava/ObjectInputStream.c : jdk/src/share/native/java/io/ObjectInputStream.c
+jdk/src/java.base/share/native/libjava/ObjectOutputStream.c : jdk/src/share/native/java/io/ObjectOutputStream.c
+jdk/src/java.base/share/native/libjava/ObjectStreamClass.c : jdk/src/share/native/java/io/ObjectStreamClass.c
+jdk/src/java.base/share/native/libjava/Package.c : jdk/src/share/native/java/lang/Package.c
+jdk/src/java.base/share/native/libjava/Proxy.c : jdk/src/share/native/java/lang/reflect/Proxy.c
+jdk/src/java.base/share/native/libjava/RandomAccessFile.c : jdk/src/share/native/java/io/RandomAccessFile.c
+jdk/src/java.base/share/native/libjava/Reflection.c : jdk/src/share/native/sun/reflect/Reflection.c
+jdk/src/java.base/share/native/libjava/Runtime.c : jdk/src/share/native/java/lang/Runtime.c
+jdk/src/java.base/share/native/libjava/SecurityManager.c : jdk/src/share/native/java/lang/SecurityManager.c
+jdk/src/java.base/share/native/libjava/Shutdown.c : jdk/src/share/native/java/lang/Shutdown.c
+jdk/src/java.base/share/native/libjava/Signal.c : jdk/src/share/native/sun/misc/Signal.c
+jdk/src/java.base/share/native/libjava/sizecalc.h : jdk/src/share/native/common/sizecalc.h
+jdk/src/java.base/share/native/libjava/StrictMath.c : jdk/src/share/native/java/lang/StrictMath.c
+jdk/src/java.base/share/native/libjava/String.c : jdk/src/share/native/java/lang/String.c
+jdk/src/java.base/share/native/libjava/System.c : jdk/src/share/native/java/lang/System.c
+jdk/src/java.base/share/native/libjava/Thread.c : jdk/src/share/native/java/lang/Thread.c
+jdk/src/java.base/share/native/libjava/Throwable.c : jdk/src/share/native/java/lang/Throwable.c
+jdk/src/java.base/share/native/libjava/TimeZone.c : jdk/src/share/native/java/util/TimeZone.c
+jdk/src/java.base/share/native/libjava/verify_stub.c : jdk/src/share/native/common/verify_stub.c
+jdk/src/java.base/share/native/libjava/Version.c : jdk/src/share/native/sun/misc/Version.c
+jdk/src/java.base/share/native/libjava/VM.c : jdk/src/share/native/sun/misc/VM.c
+jdk/src/java.base/share/native/libjava/VMSupport.c : jdk/src/share/native/sun/misc/VMSupport.c
+jdk/src/java.base/share/native/libjli/emessages.h : jdk/src/share/bin/emessages.h
+jdk/src/java.base/share/native/libjli/java.c : jdk/src/share/bin/java.c
+jdk/src/java.base/share/native/libjli/java.h : jdk/src/share/bin/java.h
+jdk/src/java.base/share/native/libjli/jli_util.c : jdk/src/share/bin/jli_util.c
+jdk/src/java.base/share/native/libjli/jli_util.h : jdk/src/share/bin/jli_util.h
+jdk/src/java.base/share/native/libjli/manifest_info.h : jdk/src/share/bin/manifest_info.h
+jdk/src/java.base/share/native/libjli/parse_manifest.c : jdk/src/share/bin/parse_manifest.c
+jdk/src/java.base/share/native/libjli/splashscreen.h : jdk/src/share/bin/splashscreen.h
+jdk/src/java.base/share/native/libjli/splashscreen_stubs.c : jdk/src/share/bin/splashscreen_stubs.c
+jdk/src/java.base/share/native/libjli/version_comp.c : jdk/src/share/bin/version_comp.c
+jdk/src/java.base/share/native/libjli/version_comp.h : jdk/src/share/bin/version_comp.h
+jdk/src/java.base/share/native/libjli/wildcard.c : jdk/src/share/bin/wildcard.c
+jdk/src/java.base/share/native/libjli/wildcard.h : jdk/src/share/bin/wildcard.h
+jdk/src/java.base/share/native/libnet : jdk/src/share/native/java/net
+jdk/src/java.base/share/native/libnio/ch/nio.h : jdk/src/share/native/sun/nio/ch/nio.h
+jdk/src/java.base/share/native/libverify/check_code.c : jdk/src/share/native/common/check_code.c
+jdk/src/java.base/share/native/libverify/check_format.c : jdk/src/share/native/common/check_format.c
+jdk/src/java.base/share/native/libverify/opcodes.in_out : jdk/src/share/native/common/opcodes.in_out
+jdk/src/java.base/share/native/libzip : jdk/src/share/native/java/util/zip
+jdk/src/java.base/share/native/libzip/zlib : jdk/src/share/native/java/util/zip/zlib
+jdk/src/java.base/share/native/libzip/zlib/patches/ChangeLog_java : jdk/src/share/native/java/util/zip/zlib/patches/ChangeLog_java
+jdk/src/java.base/unix/classes/java/io : jdk/src/solaris/classes/java/io
+jdk/src/java.base/unix/classes/java/lang : jdk/src/solaris/classes/java/lang
+jdk/src/java.base/unix/classes/java/net : jdk/src/solaris/classes/java/net
+jdk/src/java.base/unix/classes/sun/misc : jdk/src/solaris/classes/sun/misc
+jdk/src/java.base/unix/classes/sun/net/dns/ResolverConfigurationImpl.java : jdk/src/solaris/classes/sun/net/dns/ResolverConfigurationImpl.java
+jdk/src/java.base/unix/classes/sun/net : jdk/src/solaris/classes/sun/net
+jdk/src/java.base/unix/classes/sun/net/sdp/SdpProvider.java : jdk/src/solaris/classes/sun/net/sdp/SdpProvider.java
+jdk/src/java.base/unix/classes/sun/net/www/content-types.properties : jdk/src/solaris/classes/sun/net/www/content-types.properties
+jdk/src/java.base/unix/classes/sun/net/www/protocol/file/Handler.java : jdk/src/solaris/classes/sun/net/www/protocol/file/Handler.java
+jdk/src/java.base/unix/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java : jdk/src/solaris/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java
+jdk/src/java.base/unix/classes/sun/net/www/protocol/jar/JarFileFactory.java : jdk/src/solaris/classes/sun/net/www/protocol/jar/JarFileFactory.java
+jdk/src/java.base/unix/classes/sun/nio/ch : jdk/src/solaris/classes/sun/nio/ch
+jdk/src/java.base/unix/classes/sun/nio/fs : jdk/src/solaris/classes/sun/nio/fs
+jdk/src/java.base/unix/classes/sun/security/provider : jdk/src/solaris/classes/sun/security/provider
+jdk/src/java.base/unix/classes/sun/util/locale/provider/HostLocaleProviderAdapterImpl.java : jdk/src/solaris/classes/sun/util/locale/provider/HostLocaleProviderAdapterImpl.java
+jdk/src/java.base/unix/conf/amd64/jvm.cfg : jdk/src/solaris/bin/amd64/jvm.cfg
+jdk/src/java.base/unix/conf/arm/jvm.cfg : jdk/src/solaris/bin/arm/jvm.cfg
+jdk/src/java.base/unix/conf/i586/jvm.cfg : jdk/src/solaris/bin/i586/jvm.cfg
+jdk/src/java.base/unix/conf/ia64/jvm.cfg : jdk/src/solaris/bin/ia64/jvm.cfg
+jdk/src/java.base/unix/conf/ppc64/jvm.cfg : jdk/src/solaris/bin/ppc64/jvm.cfg
+jdk/src/java.base/unix/conf/ppc64le/jvm.cfg : jdk/src/solaris/bin/ppc64le/jvm.cfg
+jdk/src/java.base/unix/conf/ppc/jvm.cfg : jdk/src/solaris/bin/ppc/jvm.cfg
+jdk/src/java.base/unix/conf/sdp/sdp.conf.template : jdk/src/solaris/lib/sdp/sdp.conf.template
+jdk/src/java.base/unix/conf/sparc/jvm.cfg : jdk/src/solaris/bin/sparc/jvm.cfg
+jdk/src/java.base/unix/conf/sparcv9/jvm.cfg : jdk/src/solaris/bin/sparcv9/jvm.cfg
+jdk/src/java.base/unix/conf/zero/jvm.cfg : jdk/src/solaris/bin/zero/jvm.cfg
+jdk/src/java.base/unix/native/include/jni_md.h : jdk/src/solaris/javavm/export/jni_md.h
+jdk/src/java.base/unix/native/include/jvm_md.h : jdk/src/solaris/javavm/export/jvm_md.h
+jdk/src/java.base/unix/native/jspawnhelper/jspawnhelper.c : jdk/src/solaris/native/java/lang/jspawnhelper.c
+jdk/src/java.base/unix/native/launcher/jexec.c : jdk/src/solaris/bin/jexec.c
+jdk/src/java.base/unix/native/libjava/canonicalize_md.c : jdk/src/solaris/native/java/io/canonicalize_md.c
+jdk/src/java.base/unix/native/libjava/childproc.c : jdk/src/solaris/native/java/lang/childproc.c
+jdk/src/java.base/unix/native/libjava/childproc.h : jdk/src/solaris/native/java/lang/childproc.h
+jdk/src/java.base/unix/native/libjava/Console_md.c : jdk/src/solaris/native/java/io/Console_md.c
+jdk/src/java.base/unix/native/libjava/FileDescriptor_md.c : jdk/src/solaris/native/java/io/FileDescriptor_md.c
+jdk/src/java.base/unix/native/libjava/FileInputStream_md.c : jdk/src/solaris/native/java/io/FileInputStream_md.c
+jdk/src/java.base/unix/native/libjava/FileOutputStream_md.c : jdk/src/solaris/native/java/io/FileOutputStream_md.c
+jdk/src/java.base/unix/native/libjava/gdefs_md.h : jdk/src/solaris/native/common/gdefs_md.h
+jdk/src/java.base/unix/native/libjava/io_util_md.c : jdk/src/solaris/native/java/io/io_util_md.c
+jdk/src/java.base/unix/native/libjava/io_util_md.h : jdk/src/solaris/native/java/io/io_util_md.h
+jdk/src/java.base/unix/native/libjava/java_props_macosx.c : jdk/src/solaris/native/java/lang/java_props_macosx.c
+jdk/src/java.base/unix/native/libjava/java_props_macosx.h : jdk/src/solaris/native/java/lang/java_props_macosx.h
+jdk/src/java.base/unix/native/libjava/java_props_md.c : jdk/src/solaris/native/java/lang/java_props_md.c
+jdk/src/java.base/unix/native/libjava/jdk_util_md.c : jdk/src/solaris/native/common/jdk_util_md.c
+jdk/src/java.base/unix/native/libjava/jdk_util_md.h : jdk/src/solaris/native/common/jdk_util_md.h
+jdk/src/java.base/unix/native/libjava/jlong_md.h : jdk/src/solaris/native/common/jlong_md.h
+jdk/src/java.base/unix/native/libjava/jni_util_md.c : jdk/src/solaris/native/common/jni_util_md.c
+jdk/src/java.base/unix/native/libjava/locale_str.h : jdk/src/solaris/native/java/lang/locale_str.h
+jdk/src/java.base/unix/native/libjava/ProcessEnvironment_md.c : jdk/src/solaris/native/java/lang/ProcessEnvironment_md.c
+jdk/src/java.base/unix/native/libjava/RandomAccessFile_md.c : jdk/src/solaris/native/java/io/RandomAccessFile_md.c
+jdk/src/java.base/unix/native/libjava/TimeZone_md.c : jdk/src/solaris/native/java/util/TimeZone_md.c
+jdk/src/java.base/unix/native/libjava/TimeZone_md.h : jdk/src/solaris/native/java/util/TimeZone_md.h
+jdk/src/java.base/unix/native/libjava/UnixFileSystem_md.c : jdk/src/solaris/native/java/io/UnixFileSystem_md.c
+jdk/src/java.base/unix/native/libjava/UNIXProcess_md.c : jdk/src/solaris/native/java/lang/UNIXProcess_md.c
+jdk/src/java.base/unix/native/libjava/VM_md.c : jdk/src/solaris/native/sun/misc/VM_md.c
+jdk/src/java.base/unix/native/libjli/ergo.c : jdk/src/solaris/bin/ergo.c
+jdk/src/java.base/unix/native/libjli/ergo.h : jdk/src/solaris/bin/ergo.h
+jdk/src/java.base/unix/native/libjli/ergo_i586.c : jdk/src/solaris/bin/ergo_i586.c
+jdk/src/java.base/unix/native/libjli/java_md_common.c : jdk/src/solaris/bin/java_md_common.c
+jdk/src/java.base/unix/native/libjli/java_md.h : jdk/src/solaris/bin/java_md.h
+jdk/src/java.base/unix/native/libjli/java_md_solinux.c : jdk/src/solaris/bin/java_md_solinux.c
+jdk/src/java.base/unix/native/libjli/java_md_solinux.h : jdk/src/solaris/bin/java_md_solinux.h
+jdk/src/java.base/unix/native/libnet/bsd_close.c : jdk/src/solaris/native/java/net/bsd_close.c
+jdk/src/java.base/unix/native/libnet/DefaultProxySelector.c : jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c
+jdk/src/java.base/unix/native/libnet/ExtendedOptionsImpl.c : jdk/src/solaris/native/java/net/ExtendedOptionsImpl.c
+jdk/src/java.base/unix/native/libnet/Inet4AddressImpl.c : jdk/src/solaris/native/java/net/Inet4AddressImpl.c
+jdk/src/java.base/unix/native/libnet/Inet6AddressImpl.c : jdk/src/solaris/native/java/net/Inet6AddressImpl.c
+jdk/src/java.base/unix/native/libnet/InetAddressImplFactory.c : jdk/src/solaris/native/java/net/InetAddressImplFactory.c
+jdk/src/java.base/unix/native/libnet/linux_close.c : jdk/src/solaris/native/java/net/linux_close.c
+jdk/src/java.base/unix/native/libnet/net_util_md.c : jdk/src/solaris/native/java/net/net_util_md.c
+jdk/src/java.base/unix/native/libnet/net_util_md.h : jdk/src/solaris/native/java/net/net_util_md.h
+jdk/src/java.base/unix/native/libnet/NetworkInterface.c : jdk/src/solaris/native/java/net/NetworkInterface.c
+jdk/src/java.base/unix/native/libnet/PlainDatagramSocketImpl.c : jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
+jdk/src/java.base/unix/native/libnet/PlainSocketImpl.c : jdk/src/solaris/native/java/net/PlainSocketImpl.c
+jdk/src/java.base/unix/native/libnet/portconfig.c : jdk/src/solaris/native/sun/net/portconfig.c
+jdk/src/java.base/unix/native/libnet/ResolverConfigurationImpl.c : jdk/src/solaris/native/sun/net/dns/ResolverConfigurationImpl.c
+jdk/src/java.base/unix/native/libnet/SdpSupport.c : jdk/src/solaris/native/sun/net/sdp/SdpSupport.c
+jdk/src/java.base/unix/native/libnet/SocketInputStream.c : jdk/src/solaris/native/java/net/SocketInputStream.c
+jdk/src/java.base/unix/native/libnet/SocketOutputStream.c : jdk/src/solaris/native/java/net/SocketOutputStream.c
+jdk/src/java.base/unix/native/libnet/solaris_close.c : jdk/src/solaris/native/java/net/solaris_close.c
+jdk/src/java.base/unix/native/libnio/ch : jdk/src/solaris/native/sun/nio/ch
+jdk/src/java.base/unix/native/libnio/fs : jdk/src/solaris/native/sun/nio/fs
+jdk/src/java.base/unix/native/libnio/MappedByteBuffer.c : jdk/src/solaris/native/java/nio/MappedByteBuffer.c
+jdk/src/java.base/windows/classes/java/io : jdk/src/windows/classes/java/io
+jdk/src/java.base/windows/classes/java/lang : jdk/src/windows/classes/java/lang
+jdk/src/java.base/windows/classes/java/net : jdk/src/windows/classes/java/net
+jdk/src/java.base/windows/classes/sun/misc : jdk/src/windows/classes/sun/misc
+jdk/src/java.base/windows/classes/sun/net/dns/ResolverConfigurationImpl.java : jdk/src/windows/classes/sun/net/dns/ResolverConfigurationImpl.java
+jdk/src/java.base/windows/classes/sun/net : jdk/src/windows/classes/sun/net
+jdk/src/java.base/windows/classes/sun/net/www/content-types.properties : jdk/src/windows/classes/sun/net/www/content-types.properties
+jdk/src/java.base/windows/classes/sun/net/www/protocol/file/Handler.java : jdk/src/windows/classes/sun/net/www/protocol/file/Handler.java
+jdk/src/java.base/windows/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java : jdk/src/windows/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java
+jdk/src/java.base/windows/classes/sun/net/www/protocol/jar/JarFileFactory.java : jdk/src/windows/classes/sun/net/www/protocol/jar/JarFileFactory.java
+jdk/src/java.base/windows/classes/sun/nio/ch : jdk/src/windows/classes/sun/nio/ch
+jdk/src/java.base/windows/classes/sun/nio/fs : jdk/src/windows/classes/sun/nio/fs
+jdk/src/java.base/windows/classes/sun/security/provider : jdk/src/windows/classes/sun/security/provider
+jdk/src/java.base/windows/classes/sun/util/locale/provider/HostLocaleProviderAdapterImpl.java : jdk/src/windows/classes/sun/util/locale/provider/HostLocaleProviderAdapterImpl.java
+jdk/src/java.base/windows/conf/amd64/jvm.cfg : jdk/src/windows/bin/amd64/jvm.cfg
+jdk/src/java.base/windows/conf/i586/jvm.cfg : jdk/src/windows/bin/i586/jvm.cfg
+jdk/src/java.base/windows/conf/ia64/jvm.cfg : jdk/src/windows/bin/ia64/jvm.cfg
+jdk/src/java.base/windows/conf/tzmappings : jdk/src/windows/lib/tzmappings
+jdk/src/java.base/windows/native/common/version.rc : jdk/src/windows/resource/version.rc
+jdk/src/java.base/windows/native/include/jni_md.h : jdk/src/windows/javavm/export/jni_md.h
+jdk/src/java.base/windows/native/include/jvm_md.h : jdk/src/windows/javavm/export/jvm_md.h
+jdk/src/java.base/windows/native/launcher/icons/awt.ico : jdk/src/windows/resource/icons/awt.ico
+jdk/src/java.base/windows/native/launcher/java.manifest : jdk/src/windows/resource/java.manifest
+jdk/src/java.base/windows/native/launcher/java.rc : jdk/src/windows/resource/java.rc
+jdk/src/java.base/windows/native/libjava/canonicalize_md.c : jdk/src/windows/native/java/io/canonicalize_md.c
+jdk/src/java.base/windows/native/libjava/Console_md.c : jdk/src/windows/native/java/io/Console_md.c
+jdk/src/java.base/windows/native/libjava/dirent_md.c : jdk/src/windows/native/java/io/dirent_md.c
+jdk/src/java.base/windows/native/libjava/dirent_md.h : jdk/src/windows/native/java/io/dirent_md.h
+jdk/src/java.base/windows/native/libjava/FileDescriptor_md.c : jdk/src/windows/native/java/io/FileDescriptor_md.c
+jdk/src/java.base/windows/native/libjava/FileInputStream_md.c : jdk/src/windows/native/java/io/FileInputStream_md.c
+jdk/src/java.base/windows/native/libjava/FileOutputStream_md.c : jdk/src/windows/native/java/io/FileOutputStream_md.c
+jdk/src/java.base/windows/native/libjava/gdefs_md.h : jdk/src/windows/native/common/gdefs_md.h
+jdk/src/java.base/windows/native/libjava/HostLocaleProviderAdapter_md.c : jdk/src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
+jdk/src/java.base/windows/native/libjava/io_util_md.c : jdk/src/windows/native/java/io/io_util_md.c
+jdk/src/java.base/windows/native/libjava/io_util_md.h : jdk/src/windows/native/java/io/io_util_md.h
+jdk/src/java.base/windows/native/libjava/java_main_md.h : jdk/src/windows/native/common/java_main_md.h
+jdk/src/java.base/windows/native/libjava/java_props_md.c : jdk/src/windows/native/java/lang/java_props_md.c
+jdk/src/java.base/windows/native/libjava/jdk_util_md.c : jdk/src/windows/native/common/jdk_util_md.c
+jdk/src/java.base/windows/native/libjava/jdk_util_md.h : jdk/src/windows/native/common/jdk_util_md.h
+jdk/src/java.base/windows/native/libjava/jlong_md.h : jdk/src/windows/native/common/jlong_md.h
+jdk/src/java.base/windows/native/libjava/jni_util_md.c : jdk/src/windows/native/common/jni_util_md.c
+jdk/src/java.base/windows/native/libjava/locale_str.h : jdk/src/windows/native/common/locale_str.h
+jdk/src/java.base/windows/native/libjava/ProcessEnvironment_md.c : jdk/src/windows/native/java/lang/ProcessEnvironment_md.c
+jdk/src/java.base/windows/native/libjava/ProcessImpl_md.c : jdk/src/windows/native/java/lang/ProcessImpl_md.c
+jdk/src/java.base/windows/native/libjava/RandomAccessFile_md.c : jdk/src/windows/native/java/io/RandomAccessFile_md.c
+jdk/src/java.base/windows/native/libjava/TimeZone_md.c : jdk/src/windows/native/java/util/TimeZone_md.c
+jdk/src/java.base/windows/native/libjava/TimeZone_md.h : jdk/src/windows/native/java/util/TimeZone_md.h
+jdk/src/java.base/windows/native/libjava/VM_md.c : jdk/src/windows/native/sun/misc/VM_md.c
+jdk/src/java.base/windows/native/libjava/Win32ErrorMode.c : jdk/src/windows/native/sun/io/Win32ErrorMode.c
+jdk/src/java.base/windows/native/libjava/WinCAPISeedGenerator.c : jdk/src/windows/native/sun/security/provider/WinCAPISeedGenerator.c
+jdk/src/java.base/windows/native/libjava/WinNTFileSystem_md.c : jdk/src/windows/native/java/io/WinNTFileSystem_md.c
+jdk/src/java.base/windows/native/libjli : jdk/src/windows/bin
+jdk/src/java.base/windows/native/libnet/DefaultProxySelector.c : jdk/src/windows/native/sun/net/spi/DefaultProxySelector.c
+jdk/src/java.base/windows/native/libnet/DualStackPlainDatagramSocketImpl.c : jdk/src/windows/native/java/net/DualStackPlainDatagramSocketImpl.c
+jdk/src/java.base/windows/native/libnet/DualStackPlainSocketImpl.c : jdk/src/windows/native/java/net/DualStackPlainSocketImpl.c
+jdk/src/java.base/windows/native/libnet/ExtendedOptionsImpl.c : jdk/src/windows/native/java/net/ExtendedOptionsImpl.c
+jdk/src/java.base/windows/native/libnet/icmp.h : jdk/src/windows/native/java/net/icmp.h
+jdk/src/java.base/windows/native/libnet/Inet4AddressImpl.c : jdk/src/windows/native/java/net/Inet4AddressImpl.c
+jdk/src/java.base/windows/native/libnet/Inet6AddressImpl.c : jdk/src/windows/native/java/net/Inet6AddressImpl.c
+jdk/src/java.base/windows/native/libnet/InetAddressImplFactory.c : jdk/src/windows/native/java/net/InetAddressImplFactory.c
+jdk/src/java.base/windows/native/libnet/net_util_md.c : jdk/src/windows/native/java/net/net_util_md.c
+jdk/src/java.base/windows/native/libnet/net_util_md.h : jdk/src/windows/native/java/net/net_util_md.h
+jdk/src/java.base/windows/native/libnet/NetworkInterface.c : jdk/src/windows/native/java/net/NetworkInterface.c
+jdk/src/java.base/windows/native/libnet/NetworkInterface.h : jdk/src/windows/native/java/net/NetworkInterface.h
+jdk/src/java.base/windows/native/libnet/NetworkInterface_winXP.c : jdk/src/windows/native/java/net/NetworkInterface_winXP.c
+jdk/src/java.base/windows/native/libnet/NTLMAuthSequence.c : jdk/src/windows/native/sun/net/www/protocol/http/ntlm/NTLMAuthSequence.c
+jdk/src/java.base/windows/native/libnet/portconfig.c : jdk/src/windows/native/sun/net/portconfig.c
+jdk/src/java.base/windows/native/libnet/ResolverConfigurationImpl.c : jdk/src/windows/native/sun/net/dns/ResolverConfigurationImpl.c
+jdk/src/java.base/windows/native/libnet/SocketInputStream.c : jdk/src/windows/native/java/net/SocketInputStream.c
+jdk/src/java.base/windows/native/libnet/SocketOutputStream.c : jdk/src/windows/native/java/net/SocketOutputStream.c
+jdk/src/java.base/windows/native/libnet/TwoStacksPlainDatagramSocketImpl.c : jdk/src/windows/native/java/net/TwoStacksPlainDatagramSocketImpl.c
+jdk/src/java.base/windows/native/libnet/TwoStacksPlainSocketImpl.c : jdk/src/windows/native/java/net/TwoStacksPlainSocketImpl.c
+jdk/src/java.base/windows/native/libnio/ch : jdk/src/windows/native/sun/nio/ch
+jdk/src/java.base/windows/native/libnio/fs : jdk/src/windows/native/sun/nio/fs
+jdk/src/java.base/windows/native/libnio/MappedByteBuffer.c : jdk/src/windows/native/java/nio/MappedByteBuffer.c
+jdk/src/java.desktop/aix/native/libawt : jdk/src/aix/porting
+jdk/src/java.desktop/linux/conf/oblique-fonts/fonts.dir : jdk/src/solaris/classes/sun/awt/motif/java.oblique-fonts.dir
+jdk/src/java.desktop/macosx/classes/com/apple/eawt/event/package.html : jdk/src/macosx/classes/com/apple/eawt/event/package.html
+jdk/src/java.desktop/macosx/classes/com/apple/eawt/package.html : jdk/src/macosx/classes/com/apple/eawt/package.html
+jdk/src/java.desktop/macosx/classes/com/apple/eio/package.html : jdk/src/macosx/classes/com/apple/eio/package.html
+jdk/src/java.desktop/macosx/classes/com/apple/laf/resources : jdk/src/macosx/classes/com/apple/laf/resources
+jdk/src/java.desktop/macosx/classes/sun/awt/resources/awtosx.properties : jdk/src/macosx/classes/sun/awt/resources/awtosx.properties
+jdk/src/java.desktop/macosx/classes/sun/java2d/BackBufferCapsProvider.java : jdk/src/macosx/classes/sun/java2d/BackBufferCapsProvider.java
+jdk/src/java.desktop/macosx/conf/flavormap.properties : jdk/src/macosx/lib/flavormap.properties
+jdk/src/java.desktop/macosx/native/include/jawt_md.h : jdk/src/macosx/javavm/export/jawt_md.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/ApplicationDelegate.h : jdk/src/macosx/native/sun/awt/ApplicationDelegate.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/ApplicationDelegate.m : jdk/src/macosx/native/sun/awt/ApplicationDelegate.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/awt_DrawingSurface.m : jdk/src/macosx/native/sun/awt/awt_DrawingSurface.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTEvent.h : jdk/src/macosx/native/sun/awt/AWTEvent.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTEvent.m : jdk/src/macosx/native/sun/awt/AWTEvent.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/awt.m : jdk/src/macosx/native/sun/awt/awt.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTSurfaceLayers.h : jdk/src/macosx/native/sun/awt/AWTSurfaceLayers.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTSurfaceLayers.m : jdk/src/macosx/native/sun/awt/AWTSurfaceLayers.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.h : jdk/src/macosx/native/sun/awt/AWTView.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m : jdk/src/macosx/native/sun/awt/AWTView.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTWindow.h : jdk/src/macosx/native/sun/awt/AWTWindow.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTWindow.m : jdk/src/macosx/native/sun/awt/AWTWindow.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CClipboard.m : jdk/src/macosx/native/sun/awt/CClipboard.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CCursorManager.m : jdk/src/macosx/native/sun/awt/CCursorManager.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDataTransferer.h : jdk/src/macosx/native/sun/awt/CDataTransferer.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDataTransferer.m : jdk/src/macosx/native/sun/awt/CDataTransferer.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDesktopPeer.m : jdk/src/macosx/native/sun/awt/CDesktopPeer.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDragSourceContextPeer.m : jdk/src/macosx/native/sun/awt/CDragSourceContextPeer.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDragSource.h : jdk/src/macosx/native/sun/awt/CDragSource.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDragSource.m : jdk/src/macosx/native/sun/awt/CDragSource.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDropTargetContextPeer.m : jdk/src/macosx/native/sun/awt/CDropTargetContextPeer.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDropTarget.h : jdk/src/macosx/native/sun/awt/CDropTarget.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDropTarget.m : jdk/src/macosx/native/sun/awt/CDropTarget.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CFileDialog.h : jdk/src/macosx/native/sun/awt/CFileDialog.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CFileDialog.m : jdk/src/macosx/native/sun/awt/CFileDialog.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CFRetainedResource.m : jdk/src/macosx/native/sun/awt/CFRetainedResource.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CGraphicsConfig.m : jdk/src/macosx/native/sun/awt/CGraphicsConfig.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CGraphicsDevice.m : jdk/src/macosx/native/sun/awt/CGraphicsDevice.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CGraphicsEnv.m : jdk/src/macosx/native/sun/awt/CGraphicsEnv.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CImage.m : jdk/src/macosx/native/sun/awt/CImage.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CInputMethod.m : jdk/src/macosx/native/sun/awt/CInputMethod.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuBar.h : jdk/src/macosx/native/sun/awt/CMenuBar.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuBar.m : jdk/src/macosx/native/sun/awt/CMenuBar.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuComponent.h : jdk/src/macosx/native/sun/awt/CMenuComponent.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuComponent.m : jdk/src/macosx/native/sun/awt/CMenuComponent.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenu.h : jdk/src/macosx/native/sun/awt/CMenu.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuItem.h : jdk/src/macosx/native/sun/awt/CMenuItem.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuItem.m : jdk/src/macosx/native/sun/awt/CMenuItem.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenu.m : jdk/src/macosx/native/sun/awt/CMenu.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CPopupMenu.h : jdk/src/macosx/native/sun/awt/CPopupMenu.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CPopupMenu.m : jdk/src/macosx/native/sun/awt/CPopupMenu.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CPrinterJob.m : jdk/src/macosx/native/sun/awt/CPrinterJob.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CRobot.m : jdk/src/macosx/native/sun/awt/CRobot.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CSystemColors.h : jdk/src/macosx/native/sun/awt/CSystemColors.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CSystemColors.m : jdk/src/macosx/native/sun/awt/CSystemColors.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CTextPipe.m : jdk/src/macosx/native/sun/awt/CTextPipe.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CTrayIcon.h : jdk/src/macosx/native/sun/awt/CTrayIcon.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CTrayIcon.m : jdk/src/macosx/native/sun/awt/CTrayIcon.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CWrapper.m : jdk/src/macosx/native/sun/awt/CWrapper.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/DnDUtilities.h : jdk/src/macosx/native/sun/awt/DnDUtilities.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/DnDUtilities.m : jdk/src/macosx/native/sun/awt/DnDUtilities.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/GeomUtilities.h : jdk/src/macosx/native/sun/awt/GeomUtilities.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/GeomUtilities.m : jdk/src/macosx/native/sun/awt/GeomUtilities.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/ImageSurfaceData.h : jdk/src/macosx/native/sun/awt/ImageSurfaceData.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/ImageSurfaceData.m : jdk/src/macosx/native/sun/awt/ImageSurfaceData.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/InitIDs.h : jdk/src/macosx/native/sun/awt/InitIDs.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/InitIDs.m : jdk/src/macosx/native/sun/awt/InitIDs.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityAction.h : jdk/src/macosx/native/sun/awt/JavaAccessibilityAction.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityAction.m : jdk/src/macosx/native/sun/awt/JavaAccessibilityAction.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityUtilities.h : jdk/src/macosx/native/sun/awt/JavaAccessibilityUtilities.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityUtilities.m : jdk/src/macosx/native/sun/awt/JavaAccessibilityUtilities.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/JavaComponentAccessibility.h : jdk/src/macosx/native/sun/awt/JavaComponentAccessibility.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/JavaComponentAccessibility.m : jdk/src/macosx/native/sun/awt/JavaComponentAccessibility.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/JavaTextAccessibility.h : jdk/src/macosx/native/sun/awt/JavaTextAccessibility.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/JavaTextAccessibility.m : jdk/src/macosx/native/sun/awt/JavaTextAccessibility.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.h : jdk/src/macosx/native/sun/awt/LWCToolkit.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m : jdk/src/macosx/native/sun/awt/LWCToolkit.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/OSVersion.h : jdk/src/macosx/native/sun/awt/OSVersion.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/OSVersion.m : jdk/src/macosx/native/sun/awt/OSVersion.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/PrinterSurfaceData.h : jdk/src/macosx/native/sun/awt/PrinterSurfaceData.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/PrinterSurfaceData.m : jdk/src/macosx/native/sun/awt/PrinterSurfaceData.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/PrinterView.h : jdk/src/macosx/native/sun/awt/PrinterView.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/PrinterView.m : jdk/src/macosx/native/sun/awt/PrinterView.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/PrintModel.h : jdk/src/macosx/native/sun/awt/PrintModel.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/PrintModel.m : jdk/src/macosx/native/sun/awt/PrintModel.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/QuartzRenderer.m : jdk/src/macosx/native/sun/awt/QuartzRenderer.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/QuartzSurfaceData.h : jdk/src/macosx/native/sun/awt/QuartzSurfaceData.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/QuartzSurfaceData.m : jdk/src/macosx/native/sun/awt/QuartzSurfaceData.m
+jdk/src/java.desktop/macosx/native/libawt_lwawt/font : jdk/src/macosx/native/sun/font
+jdk/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl/J2D_GL/cglext.h : jdk/src/macosx/native/sun/java2d/opengl/J2D_GL/cglext.h
+jdk/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl : jdk/src/macosx/native/sun/java2d/opengl
+jdk/src/java.desktop/macosx/native/libjawt/jawt.m : jdk/src/macosx/native/sun/awt/jawt.m
+jdk/src/java.desktop/macosx/native/libjsound : jdk/src/macosx/native/com/sun/media/sound
+jdk/src/java.desktop/macosx/native/libosxapp : jdk/src/macosx/native/sun/osxapp
+jdk/src/java.desktop/macosx/native/libosxui : jdk/src/macosx/native/com/apple/laf
+jdk/src/java.desktop/macosx/native/libsplashscreen : jdk/src/macosx/native/sun/awt/splashscreen
+jdk/src/java.desktop/share/classes/com/sun/accessibility/internal/resources : jdk/src/share/classes/com/sun/accessibility/internal/resources
+jdk/src/java.desktop/share/classes/com/sun/awt : jdk/src/share/classes/com/sun/awt
+jdk/src/java.desktop/share/classes/com/sun/beans/decoder : jdk/src/share/classes/com/sun/beans/decoder
+jdk/src/java.desktop/share/classes/com/sun/beans/editors : jdk/src/share/classes/com/sun/beans/editors
+jdk/src/java.desktop/share/classes/com/sun/beans/finder : jdk/src/share/classes/com/sun/beans/finder
+jdk/src/java.desktop/share/classes/com/sun/beans/infos : jdk/src/share/classes/com/sun/beans/infos
+jdk/src/java.desktop/share/classes/com/sun/beans : jdk/src/share/classes/com/sun/beans
+jdk/src/java.desktop/share/classes/com/sun/beans/util : jdk/src/share/classes/com/sun/beans/util
+jdk/src/java.desktop/share/classes/com/sun/imageio : jdk/src/share/classes/com/sun/imageio
+jdk/src/java.desktop/share/classes/com/sun/java/swing : jdk/src/share/classes/com/sun/java/swing
+jdk/src/java.desktop/share/classes/com/sun/media/sound : jdk/src/share/classes/com/sun/media/sound
+jdk/src/java.desktop/share/classes/com/sun/swing : jdk/src/share/classes/com/sun/swing
+jdk/src/java.desktop/share/classes/java/applet : jdk/src/share/classes/java/applet
+jdk/src/java.desktop/share/classes/java/awt : jdk/src/share/classes/java/awt
+jdk/src/java.desktop/share/classes/java/beans : jdk/src/share/classes/java/beans
+jdk/src/java.desktop/share/classes/javax/accessibility : jdk/src/share/classes/javax/accessibility
+jdk/src/java.desktop/share/classes/javax/imageio : jdk/src/share/classes/javax/imageio
+jdk/src/java.desktop/share/classes/javax/print : jdk/src/share/classes/javax/print
+jdk/src/java.desktop/share/classes/javax/sound : jdk/src/share/classes/javax/sound
+jdk/src/java.desktop/share/classes/javax/swing : jdk/src/share/classes/javax/swing
+jdk/src/java.desktop/share/classes/META-INF/services : jdk/src/share/classes/com/sun/media/sound/services
+jdk/src/java.desktop/share/classes/sun/applet : jdk/src/share/classes/sun/applet
+jdk/src/java.desktop/share/classes/sun/audio : jdk/src/share/classes/sun/audio
+jdk/src/java.desktop/share/classes/sun/awt : jdk/src/share/classes/sun/awt
+jdk/src/java.desktop/share/classes/sun/font : jdk/src/share/classes/sun/font
+jdk/src/java.desktop/share/classes/sun/java2d : jdk/src/share/classes/sun/java2d
+jdk/src/java.desktop/share/classes/sun/net/www/content/audio : jdk/src/share/classes/sun/net/www/content/audio
+jdk/src/java.desktop/share/classes/sun/net/www/content/image : jdk/src/share/classes/sun/net/www/content/image
+jdk/src/java.desktop/share/classes/sun/print/AttributeUpdater.java : jdk/src/share/classes/sun/print/AttributeUpdater.java
+jdk/src/java.desktop/share/classes/sun/print/BackgroundLookupListener.java : jdk/src/share/classes/sun/print/BackgroundLookupListener.java
+jdk/src/java.desktop/share/classes/sun/print/BackgroundServiceLookup.java : jdk/src/share/classes/sun/print/BackgroundServiceLookup.java
+jdk/src/java.desktop/share/classes/sun/print/CustomMediaSizeName.java : jdk/src/share/classes/sun/print/CustomMediaSizeName.java
+jdk/src/java.desktop/share/classes/sun/print/CustomMediaTray.java : jdk/src/share/classes/sun/print/CustomMediaTray.java
+jdk/src/java.desktop/share/classes/sun/print/DialogOwner.java : jdk/src/share/classes/sun/print/DialogOwner.java
+jdk/src/java.desktop/share/classes/sun/print/DocumentPropertiesUI.java : jdk/src/share/classes/sun/print/DocumentPropertiesUI.java
+jdk/src/java.desktop/share/classes/sun/print/ImagePrinter.java : jdk/src/share/classes/sun/print/ImagePrinter.java
+jdk/src/java.desktop/share/classes/sun/print/OpenBook.java : jdk/src/share/classes/sun/print/OpenBook.java
+jdk/src/java.desktop/share/classes/sun/print/PageableDoc.java : jdk/src/share/classes/sun/print/PageableDoc.java
+jdk/src/java.desktop/share/classes/sun/print/PathGraphics.java : jdk/src/share/classes/sun/print/PathGraphics.java
+jdk/src/java.desktop/share/classes/sun/print/PeekGraphics.java : jdk/src/share/classes/sun/print/PeekGraphics.java
+jdk/src/java.desktop/share/classes/sun/print/PeekMetrics.java : jdk/src/share/classes/sun/print/PeekMetrics.java
+jdk/src/java.desktop/share/classes/sun/print/PrinterGraphicsConfig.java : jdk/src/share/classes/sun/print/PrinterGraphicsConfig.java
+jdk/src/java.desktop/share/classes/sun/print/PrinterGraphicsDevice.java : jdk/src/share/classes/sun/print/PrinterGraphicsDevice.java
+jdk/src/java.desktop/share/classes/sun/print/PrinterJobWrapper.java : jdk/src/share/classes/sun/print/PrinterJobWrapper.java
+jdk/src/java.desktop/share/classes/sun/print/PrintJob2D.java : jdk/src/share/classes/sun/print/PrintJob2D.java
+jdk/src/java.desktop/share/classes/sun/print/PrintJobAttributeException.java : jdk/src/share/classes/sun/print/PrintJobAttributeException.java
+jdk/src/java.desktop/share/classes/sun/print/PrintJobFlavorException.java : jdk/src/share/classes/sun/print/PrintJobFlavorException.java
+jdk/src/java.desktop/share/classes/sun/print/ProxyGraphics2D.java : jdk/src/share/classes/sun/print/ProxyGraphics2D.java
+jdk/src/java.desktop/share/classes/sun/print/ProxyGraphics.java : jdk/src/share/classes/sun/print/ProxyGraphics.java
+jdk/src/java.desktop/share/classes/sun/print/ProxyPrintGraphics.java : jdk/src/share/classes/sun/print/ProxyPrintGraphics.java
+jdk/src/java.desktop/share/classes/sun/print/PSPathGraphics.java : jdk/src/share/classes/sun/print/PSPathGraphics.java
+jdk/src/java.desktop/share/classes/sun/print/PSPrinterJob.java : jdk/src/share/classes/sun/print/PSPrinterJob.java
+jdk/src/java.desktop/share/classes/sun/print/PSStreamPrinterFactory.java : jdk/src/share/classes/sun/print/PSStreamPrinterFactory.java
+jdk/src/java.desktop/share/classes/sun/print/PSStreamPrintJob.java : jdk/src/share/classes/sun/print/PSStreamPrintJob.java
+jdk/src/java.desktop/share/classes/sun/print/PSStreamPrintService.java : jdk/src/share/classes/sun/print/PSStreamPrintService.java
+jdk/src/java.desktop/share/classes/sun/print/RasterPrinterJob.java : jdk/src/share/classes/sun/print/RasterPrinterJob.java
+jdk/src/java.desktop/share/classes/sun/print/resources : jdk/src/share/classes/sun/print/resources
+jdk/src/java.desktop/share/classes/sun/print/ServiceDialog.java : jdk/src/share/classes/sun/print/ServiceDialog.java
+jdk/src/java.desktop/share/classes/sun/print/ServiceNotifier.java : jdk/src/share/classes/sun/print/ServiceNotifier.java
+jdk/src/java.desktop/share/classes/sun/print/SunAlternateMedia.java : jdk/src/share/classes/sun/print/SunAlternateMedia.java
+jdk/src/java.desktop/share/classes/sun/print/SunMinMaxPage.java : jdk/src/share/classes/sun/print/SunMinMaxPage.java
+jdk/src/java.desktop/share/classes/sun/print/SunPageSelection.java : jdk/src/share/classes/sun/print/SunPageSelection.java
+jdk/src/java.desktop/share/classes/sun/print/SunPrinterJobService.java : jdk/src/share/classes/sun/print/SunPrinterJobService.java
+jdk/src/java.desktop/share/classes/sun/swing : jdk/src/share/classes/sun/swing
+jdk/src/java.desktop/share/conf/cmm/lcms : jdk/src/share/lib/cmm/lcms
+jdk/src/java.desktop/share/conf/images/cursors : jdk/src/share/lib/images/cursors
+jdk/src/java.desktop/share/conf/psfontj2d.properties : jdk/src/share/classes/sun/print/psfontj2d.properties
+jdk/src/java.desktop/share/conf/psfont.properties.ja : jdk/src/share/classes/sun/print/psfont.properties.ja
+jdk/src/java.desktop/share/conf/sound.properties : jdk/src/share/lib/sound.properties
+jdk/src/java.desktop/share/native/common/awt/debug : jdk/src/share/native/sun/awt/debug
+jdk/src/java.desktop/share/native/common/awt/medialib/mlib_ImageCopy_Bit.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy_Bit.c
+jdk/src/java.desktop/share/native/common/awt/medialib/mlib_ImageCreate.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageCreate.c
+jdk/src/java.desktop/share/native/common/awt/medialib/mlib_sys.c : jdk/src/share/native/sun/awt/medialib/mlib_sys.c
+jdk/src/java.desktop/share/native/common/awt/utility/rect.c : jdk/src/share/native/sun/awt/utility/rect.c
+jdk/src/java.desktop/share/native/common/font/AccelGlyphCache.c : jdk/src/share/native/sun/font/AccelGlyphCache.c
+jdk/src/java.desktop/share/native/common/font/AccelGlyphCache.h : jdk/src/share/native/sun/font/AccelGlyphCache.h
+jdk/src/java.desktop/share/native/common/font/fontscalerdefs.h : jdk/src/share/native/sun/font/fontscalerdefs.h
+jdk/src/java.desktop/share/native/common/font/sunfontids.h : jdk/src/share/native/sun/font/sunfontids.h
+jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL : jdk/src/share/native/sun/java2d/opengl/J2D_GL
+jdk/src/java.desktop/share/native/common/java2d/opengl : jdk/src/share/native/sun/java2d/opengl
+jdk/src/java.desktop/share/native/include/jawt.h : jdk/src/share/javavm/export/jawt.h
+jdk/src/java.desktop/share/native/libawt/awt/image/cvutils : jdk/src/share/native/sun/awt/image/cvutils
+jdk/src/java.desktop/share/native/libawt/awt/image/gif/gifdecoder.c : jdk/src/share/native/sun/awt/image/gif/gifdecoder.c
+jdk/src/java.desktop/share/native/libawt/awt/image : jdk/src/share/native/sun/awt/image
+jdk/src/java.desktop/share/native/libawt/awt/medialib/awt_ImagingLib.c : jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.c
+jdk/src/java.desktop/share/native/libawt/awt/medialib/awt_ImagingLib.h : jdk/src/share/native/sun/awt/medialib/awt_ImagingLib.h
+jdk/src/java.desktop/share/native/libawt/java2d : jdk/src/share/native/sun/java2d
+jdk/src/java.desktop/share/native/libawt/java2d/loops : jdk/src/share/native/sun/java2d/loops
+jdk/src/java.desktop/share/native/libawt/java2d/pipe : jdk/src/share/native/sun/java2d/pipe
+jdk/src/java.desktop/share/native/libfontmanager/DrawGlyphList.c : jdk/src/share/native/sun/font/DrawGlyphList.c
+jdk/src/java.desktop/share/native/libfontmanager/FontInstanceAdapter.cpp : jdk/src/share/native/sun/font/FontInstanceAdapter.cpp
+jdk/src/java.desktop/share/native/libfontmanager/FontInstanceAdapter.h : jdk/src/share/native/sun/font/FontInstanceAdapter.h
+jdk/src/java.desktop/share/native/libfontmanager/fontscaler.h : jdk/src/share/native/sun/font/fontscaler.h
+jdk/src/java.desktop/share/native/libfontmanager/freetypeScaler.c : jdk/src/share/native/sun/font/freetypeScaler.c
+jdk/src/java.desktop/share/native/libfontmanager/glyphblitting.h : jdk/src/share/native/sun/font/glyphblitting.h
+jdk/src/java.desktop/share/native/libfontmanager/layout : jdk/src/share/native/sun/font/layout
+jdk/src/java.desktop/share/native/libfontmanager/sunFont.c : jdk/src/share/native/sun/font/sunFont.c
+jdk/src/java.desktop/share/native/libjavajpeg : jdk/src/share/native/sun/awt/image/jpeg
+jdk/src/java.desktop/share/native/libjsound : jdk/src/share/native/com/sun/media/sound
+jdk/src/java.desktop/share/native/liblcms : jdk/src/share/native/sun/java2d/cmm/lcms
+jdk/src/java.desktop/share/native/libmlib_image/j2d_names.h : jdk/src/share/native/sun/awt/medialib/j2d_names.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BC.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageAffine_BC.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BC_S16.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageAffine_BC_S16.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BC_U16.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageAffine_BC_U16.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BL.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageAffine_BL.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BL_S16.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageAffine_BL_S16.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BL_U16.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageAffine_BL_U16.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffineIndex_BC.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageAffineIndex_BC.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffineIndex_BL.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageAffineIndex_BL.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_NN.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageAffine_NN.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageBlendTable.h : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageBlendTable.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConvClearEdge.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageConvClearEdge.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConvCopyEdge.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageConvCopyEdge.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConv_f.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageConv_f.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConv.h : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageConv.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConvVersion.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageConvVersion.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageCopy.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageCopy.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageLookUp.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageLookUp_f.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp_f.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageLookUp.h : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageLookUp.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageThresh1.h : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageThresh1.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageThresh1_U8.c : jdk/src/share/native/sun/awt/medialib/mlib_c_ImageThresh1_U8.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib.h : jdk/src/share/native/sun/awt/medialib/mlib.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BC_D64.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageAffine_BC_D64.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BC_F32.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageAffine_BC_F32.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BC_S32.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageAffine_BC_S32.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BL_D64.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageAffine_BL_D64.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BL_F32.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageAffine_BL_F32.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BL_S32.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageAffine_BL_S32.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageAffine.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffineEdge.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageAffineEdge.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine.h : jdk/src/share/native/sun/awt/medialib/mlib_ImageAffine.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_NN_Bit.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageAffine_NN_Bit.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_NN.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageAffine_NN.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_image_blend_proto.h : jdk/src/share/native/sun/awt/medialib/mlib_image_blend_proto.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageCheck.h : jdk/src/share/native/sun/awt/medialib/mlib_ImageCheck.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageClipping.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageClipping.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageClipping.h : jdk/src/share/native/sun/awt/medialib/mlib_ImageClipping.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageColormap.h : jdk/src/share/native/sun/awt/medialib/mlib_ImageColormap.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageColorTrue2Index.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageColorTrue2Index.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_16ext.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16ext.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_16nw.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_16nw.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv2x2_f.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConv2x2_f.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_32nw.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_32nw.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_8ext.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8ext.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_8nw.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_8nw.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvClearEdge_Bit.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConvClearEdge_Bit.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvClearEdge_Fp.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConvClearEdge_Fp.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvCopyEdge_Bit.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConvCopyEdge_Bit.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_D64nw.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_D64nw.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvEdge.h : jdk/src/share/native/sun/awt/medialib/mlib_ImageConvEdge.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_F32nw.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_F32nw.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv.h : jdk/src/share/native/sun/awt/medialib/mlib_ImageConv.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvKernelConvert.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConvKernelConvert.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvMxN.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConvMxN.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvMxN_ext.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConvMxN_ext.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvMxN_Fp.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConvMxN_Fp.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_u16ext.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16ext.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_u16nw.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageConv_u16nw.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageCopy.h : jdk/src/share/native/sun/awt/medialib/mlib_ImageCopy.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageCreate.h : jdk/src/share/native/sun/awt/medialib/mlib_ImageCreate.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageDivTables.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageDivTables.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageDivTables.h : jdk/src/share/native/sun/awt/medialib/mlib_ImageDivTables.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageFilters.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageFilters.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageFilters.h : jdk/src/share/native/sun/awt/medialib/mlib_ImageFilters.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_image_get.h : jdk/src/share/native/sun/awt/medialib/mlib_image_get.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_image.h : jdk/src/share/native/sun/awt/medialib/mlib_image.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageLookUp_64.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_64.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageLookUp_Bit.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp_Bit.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageLookUp.h : jdk/src/share/native/sun/awt/medialib/mlib_ImageLookUp.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_image_proto.h : jdk/src/share/native/sun/awt/medialib/mlib_image_proto.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageRowTable.h : jdk/src/share/native/sun/awt/medialib/mlib_ImageRowTable.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageScanPoly.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageScanPoly.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_image_types.h : jdk/src/share/native/sun/awt/medialib/mlib_image_types.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageUtils.c : jdk/src/share/native/sun/awt/medialib/mlib_ImageUtils.c
+jdk/src/java.desktop/share/native/libmlib_image/mlib_status.h : jdk/src/share/native/sun/awt/medialib/mlib_status.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_sys.h : jdk/src/share/native/sun/awt/medialib/mlib_sys.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_SysMath.h : jdk/src/share/native/sun/awt/medialib/mlib_SysMath.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_sys_proto.h : jdk/src/share/native/sun/awt/medialib/mlib_sys_proto.h
+jdk/src/java.desktop/share/native/libmlib_image/mlib_types.h : jdk/src/share/native/sun/awt/medialib/mlib_types.h
+jdk/src/java.desktop/share/native/libmlib_image/safe_alloc.h : jdk/src/share/native/sun/awt/medialib/safe_alloc.h
+jdk/src/java.desktop/share/native/libmlib_image/safe_math.h : jdk/src/share/native/sun/awt/medialib/safe_math.h
+jdk/src/java.desktop/share/native/libsplashscreen/giflib : jdk/src/share/native/sun/awt/giflib
+jdk/src/java.desktop/share/native/libsplashscreen : jdk/src/share/native/sun/awt/splashscreen
+jdk/src/java.desktop/share/native/libsplashscreen/libpng : jdk/src/share/native/sun/awt/libpng
+jdk/src/java.desktop/unix/classes/META-INF/services : jdk/src/solaris/classes/sun/print/services
+jdk/src/java.desktop/unix/classes/sun/awt : jdk/src/solaris/classes/sun/awt
+jdk/src/java.desktop/unix/classes/sun/awt/motif/MFontConfiguration.java : jdk/src/solaris/classes/sun/awt/motif/MFontConfiguration.java
+jdk/src/java.desktop/unix/classes/sun/awt/motif/X11CNS11643.java : jdk/src/solaris/classes/sun/awt/motif/X11CNS11643.java
+jdk/src/java.desktop/unix/classes/sun/awt/motif/X11CNS11643P1.java : jdk/src/solaris/classes/sun/awt/motif/X11CNS11643P1.java
+jdk/src/java.desktop/unix/classes/sun/awt/motif/X11CNS11643P2.java : jdk/src/solaris/classes/sun/awt/motif/X11CNS11643P2.java
+jdk/src/java.desktop/unix/classes/sun/awt/motif/X11CNS11643P3.java : jdk/src/solaris/classes/sun/awt/motif/X11CNS11643P3.java
+jdk/src/java.desktop/unix/classes/sun/awt/motif/X11Dingbats.java : jdk/src/solaris/classes/sun/awt/motif/X11Dingbats.java
+jdk/src/java.desktop/unix/classes/sun/awt/motif/X11GB18030_0.java : jdk/src/solaris/classes/sun/awt/motif/X11GB18030_0.java
+jdk/src/java.desktop/unix/classes/sun/awt/motif/X11GB18030_1.java : jdk/src/solaris/classes/sun/awt/motif/X11GB18030_1.java
+jdk/src/java.desktop/unix/classes/sun/awt/motif/X11GB2312.java : jdk/src/solaris/classes/sun/awt/motif/X11GB2312.java
+jdk/src/java.desktop/unix/classes/sun/awt/motif/X11GBK.java : jdk/src/solaris/classes/sun/awt/motif/X11GBK.java
+jdk/src/java.desktop/unix/classes/sun/awt/motif/X11JIS0201.java : jdk/src/solaris/classes/sun/awt/motif/X11JIS0201.java
+jdk/src/java.desktop/unix/classes/sun/awt/motif/X11JIS0208.java : jdk/src/solaris/classes/sun/awt/motif/X11JIS0208.java
+jdk/src/java.desktop/unix/classes/sun/awt/motif/X11JIS0212.java : jdk/src/solaris/classes/sun/awt/motif/X11JIS0212.java
+jdk/src/java.desktop/unix/classes/sun/awt/motif/X11Johab.java : jdk/src/solaris/classes/sun/awt/motif/X11Johab.java
+jdk/src/java.desktop/unix/classes/sun/awt/motif/X11KSC5601.java : jdk/src/solaris/classes/sun/awt/motif/X11KSC5601.java
+jdk/src/java.desktop/unix/classes/sun/awt/motif/X11SunUnicode_0.java : jdk/src/solaris/classes/sun/awt/motif/X11SunUnicode_0.java
+jdk/src/java.desktop/unix/classes/sun/awt/windows/ThemeReader.java : jdk/src/solaris/classes/sun/awt/windows/ThemeReader.java
+jdk/src/java.desktop/unix/classes/sun/awt/X11/doc-files/Modality.txt : jdk/src/solaris/classes/sun/awt/X11/doc-files/Modality.txt
+jdk/src/java.desktop/unix/classes/sun/awt/X11 : jdk/src/solaris/classes/sun/awt/X11
+jdk/src/java.desktop/unix/classes/sun/font : jdk/src/solaris/classes/sun/font
+jdk/src/java.desktop/unix/classes/sun/java2d : jdk/src/solaris/classes/sun/java2d
+jdk/src/java.desktop/unix/classes/sun/java2d/jules : jdk/src/solaris/classes/sun/java2d/jules
+jdk/src/java.desktop/unix/classes/sun/java2d/opengl : jdk/src/solaris/classes/sun/java2d/opengl
+jdk/src/java.desktop/unix/classes/sun/java2d/x11 : jdk/src/solaris/classes/sun/java2d/x11
+jdk/src/java.desktop/unix/classes/sun/java2d/xr : jdk/src/solaris/classes/sun/java2d/xr
+jdk/src/java.desktop/unix/classes/sun/print : jdk/src/solaris/classes/sun/print
+jdk/src/java.desktop/unix/conf/flavormap.properties : jdk/src/solaris/lib/flavormap.properties
+jdk/src/java.desktop/unix/conf/fonts/fonts.dir : jdk/src/solaris/classes/sun/awt/motif/java.fonts.dir
+jdk/src/java.desktop/unix/conf/images/cursors/cursors.properties : jdk/src/solaris/lib/images/cursors/cursors.properties
+jdk/src/java.desktop/unix/native/common/awt/awt_Component.h : jdk/src/solaris/native/sun/awt/awt_Component.h
+jdk/src/java.desktop/unix/native/common/awt/awt_DrawingSurface.h : jdk/src/solaris/native/sun/awt/awt_DrawingSurface.h
+jdk/src/java.desktop/unix/native/common/awt/awt_Font.c : jdk/src/solaris/native/sun/awt/awt_Font.c
+jdk/src/java.desktop/unix/native/common/awt/awt_Font.h : jdk/src/solaris/native/sun/awt/awt_Font.h
+jdk/src/java.desktop/unix/native/common/awt/awt_GraphicsEnv.h : jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.h
+jdk/src/java.desktop/unix/native/common/awt/awt.h : jdk/src/solaris/native/sun/awt/awt.h
+jdk/src/java.desktop/unix/native/common/awt/awt_Mlib.h : jdk/src/solaris/native/sun/awt/awt_Mlib.h
+jdk/src/java.desktop/unix/native/common/awt/awt_p.h : jdk/src/solaris/native/sun/awt/awt_p.h
+jdk/src/java.desktop/unix/native/common/awt/awt_util.h : jdk/src/solaris/native/sun/awt/awt_util.h
+jdk/src/java.desktop/unix/native/common/awt/colordata.h : jdk/src/solaris/native/sun/awt/colordata.h
+jdk/src/java.desktop/unix/native/common/awt/color.h : jdk/src/solaris/native/sun/awt/color.h
+jdk/src/java.desktop/unix/native/common/awt/CUPSfuncs.c : jdk/src/solaris/native/sun/awt/CUPSfuncs.c
+jdk/src/java.desktop/unix/native/common/awt/fontconfig.h : jdk/src/solaris/native/sun/awt/fontconfig.h
+jdk/src/java.desktop/unix/native/common/awt/fontpath.c : jdk/src/solaris/native/sun/awt/fontpath.c
+jdk/src/java.desktop/unix/native/common/awt/img_util_md.h : jdk/src/solaris/native/sun/awt/img_util_md.h
+jdk/src/java.desktop/unix/native/common/awt/initIDs.c : jdk/src/solaris/native/sun/awt/initIDs.c
+jdk/src/java.desktop/unix/native/common/awt/medialib/mlib_v_ImageCopy_f.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageCopy_f.c
+jdk/src/java.desktop/unix/native/common/awt/medialib/mlib_v_ImageCopy_f.h : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageCopy_f.h
+jdk/src/java.desktop/unix/native/common/awt/medialib/vis_proto.h : jdk/src/solaris/native/sun/awt/medialib/vis_proto.h
+jdk/src/java.desktop/unix/native/common/awt/utility/rect.h : jdk/src/solaris/native/sun/awt/utility/rect.h
+jdk/src/java.desktop/unix/native/common/awt/X11Color.c : jdk/src/solaris/native/sun/awt/X11Color.c
+jdk/src/java.desktop/unix/native/common/font/X11FontScaler.h : jdk/src/solaris/native/sun/font/X11FontScaler.h
+jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL : jdk/src/solaris/native/sun/java2d/opengl/J2D_GL
+jdk/src/java.desktop/unix/native/common/java2d/opengl : jdk/src/solaris/native/sun/java2d/opengl
+jdk/src/java.desktop/unix/native/common/java2d/x11/X11FontScaler_md.c : jdk/src/solaris/native/sun/java2d/x11/X11FontScaler_md.c
+jdk/src/java.desktop/unix/native/common/java2d/x11/X11PMBlitLoops.c : jdk/src/solaris/native/sun/java2d/x11/X11PMBlitLoops.c
+jdk/src/java.desktop/unix/native/common/java2d/x11/X11Renderer.c : jdk/src/solaris/native/sun/java2d/x11/X11Renderer.c
+jdk/src/java.desktop/unix/native/common/java2d/x11/X11SurfaceData.c : jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c
+jdk/src/java.desktop/unix/native/common/java2d/x11/X11SurfaceData.h : jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.h
+jdk/src/java.desktop/unix/native/common/java2d/x11/X11TextRenderer_md.c : jdk/src/solaris/native/sun/java2d/x11/X11TextRenderer_md.c
+jdk/src/java.desktop/unix/native/include/jawt_md.h : jdk/src/solaris/javavm/export/jawt_md.h
+jdk/src/java.desktop/unix/native/libawt_headless/awt/HeadlessToolkit.c : jdk/src/solaris/native/sun/awt/HeadlessToolkit.c
+jdk/src/java.desktop/unix/native/libawt_headless/awt/VDrawingArea.c : jdk/src/solaris/native/sun/awt/VDrawingArea.c
+jdk/src/java.desktop/unix/native/libawt/awt/awt_LoadLibrary.c : jdk/src/solaris/native/sun/awt/awt_LoadLibrary.c
+jdk/src/java.desktop/unix/native/libawt/awt/awt_Mlib.c : jdk/src/solaris/native/sun/awt/awt_Mlib.c
+jdk/src/java.desktop/unix/native/libawt/awt/medialib/mlib_v_ImageCopy_blk.s : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageCopy_blk.s
+jdk/src/java.desktop/unix/native/libawt/awt/medialib/mlib_v_ImageCopy.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageCopy.c
+jdk/src/java.desktop/unix/native/libawt/awt/medialib/vis_asi.h : jdk/src/solaris/native/sun/awt/medialib/vis_asi.h
+jdk/src/java.desktop/unix/native/libawt/java2d/j2d_md.h : jdk/src/solaris/native/sun/java2d/j2d_md.h
+jdk/src/java.desktop/unix/native/libawt/java2d/loops : jdk/src/solaris/native/sun/java2d/loops
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.c : jdk/src/solaris/native/sun/awt/awt_AWTEvent.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.h : jdk/src/solaris/native/sun/awt/awt_AWTEvent.h
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_DrawingSurface.c : jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.c : jdk/src/solaris/native/sun/awt/awt_Event.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.h : jdk/src/solaris/native/sun/awt/awt_Event.h
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c : jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c : jdk/src/solaris/native/sun/awt/awt_InputMethod.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Insets.c : jdk/src/solaris/native/sun/awt/awt_Insets.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Insets.h : jdk/src/solaris/native/sun/awt/awt_Insets.h
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_MenuComponent.h : jdk/src/solaris/native/sun/awt/awt_MenuComponent.h
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Robot.c : jdk/src/solaris/native/sun/awt/awt_Robot.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_UNIXToolkit.c : jdk/src/solaris/native/sun/awt/awt_UNIXToolkit.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_util.c : jdk/src/solaris/native/sun/awt/awt_util.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/canvas.h : jdk/src/solaris/native/sun/awt/canvas.h
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.c : jdk/src/solaris/native/sun/awt/gtk2_interface.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.h : jdk/src/solaris/native/sun/awt/gtk2_interface.h
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/HPkeysym.h : jdk/src/solaris/native/sun/awt/HPkeysym.h
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/list.c : jdk/src/solaris/native/sun/awt/list.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/list.h : jdk/src/solaris/native/sun/awt/list.h
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/multi_font.c : jdk/src/solaris/native/sun/awt/multi_font.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/multi_font.h : jdk/src/solaris/native/sun/awt/multi_font.h
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/multiVis.c : jdk/src/solaris/native/sun/awt/multiVis.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/multiVis.h : jdk/src/solaris/native/sun/awt/multiVis.h
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/randr.h : jdk/src/solaris/native/sun/awt/randr.h
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/robot_common.c : jdk/src/solaris/native/sun/awt/robot_common.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/robot_common.h : jdk/src/solaris/native/sun/awt/robot_common.h
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/sun_awt_X11_GtkFileDialogPeer.c : jdk/src/solaris/native/sun/awt/sun_awt_X11_GtkFileDialogPeer.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/swing_GTKEngine.c : jdk/src/solaris/native/sun/awt/swing_GTKEngine.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/swing_GTKStyle.c : jdk/src/solaris/native/sun/awt/swing_GTKStyle.c
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/wsutils.h : jdk/src/solaris/native/sun/awt/wsutils.h
+jdk/src/java.desktop/unix/native/libawt_xawt/awt/Xrandr.h : jdk/src/solaris/native/sun/awt/Xrandr.h
+jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11/XRBackendNative.c : jdk/src/solaris/native/sun/java2d/x11/XRBackendNative.c
+jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11/XRSurfaceData.c : jdk/src/solaris/native/sun/java2d/x11/XRSurfaceData.c
+jdk/src/java.desktop/unix/native/libawt_xawt/xawt : jdk/src/solaris/native/sun/xawt
+jdk/src/java.desktop/unix/native/libfontmanager/X11FontScaler.c : jdk/src/solaris/native/sun/font/X11FontScaler.c
+jdk/src/java.desktop/unix/native/libfontmanager/X11TextRenderer.c : jdk/src/solaris/native/sun/font/X11TextRenderer.c
+jdk/src/java.desktop/unix/native/libjawt/jawt.c : jdk/src/solaris/native/sun/awt/jawt.c
+jdk/src/java.desktop/unix/native/libjsound : jdk/src/solaris/native/com/sun/media/sound
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_ImageConvCopyEdge_Fp.c : jdk/src/solaris/native/sun/awt/medialib/mlib_ImageConvCopyEdge_Fp.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageAffine_BC.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageAffine_BC.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageAffine_BC_S16.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageAffine_BC_S16.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageAffine_BC_U16.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageAffine_BC_U16.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageAffine_BL.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageAffine_BL.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageAffine_BL_S16.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageAffine_BL_S16.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageAffine_BL_S16.h : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageAffine_BL_S16.h
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageAffine_BL_U16.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageAffine_BL_U16.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageAffineIndex_BC.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageAffineIndex_BC.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageAffine_NN.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageAffine_NN.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageChannelExtract_1.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageChannelExtract_1.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageChannelExtract_43.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageChannelExtract_43.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageChannelExtract.h : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageChannelExtract.h
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageChannelInsert_1.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageChannelInsert_1.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageChannelInsert.h : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageChannelInsert.h
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageConv_8nw.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageConv_8nw.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageConvClearEdge.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageConvClearEdge.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageConvCopyEdge.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageConvCopyEdge.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageConv.h : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageConv.h
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageConvMxN_8.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageConvMxN_8.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageConvMxN_8ext.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageConvMxN_8ext.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageConvVersion.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageConvVersion.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageFilters.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageFilters.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageFilters.h : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageFilters.h
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUp.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUp.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpFunc.h : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpFunc.h
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpS16S16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpS16S16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpS16S32Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpS16S32Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpS16U16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpS16U16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpS16U8Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpS16U8Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpS32S16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpS32S16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpS32S32Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpS32S32Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpS32U16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpS32U16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpS32U8Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpS32U8Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIS16S16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIS16S16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIS16S32Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIS16S32Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIS16U16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIS16U16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIS16U8Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIS16U8Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIS32S16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIS32S16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIS32S32Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIS32S32Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIS32U16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIS32U16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIS32U8Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIS32U8Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIU16S16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIU16S16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIU16S32Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIU16S32Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIU16U16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIU16U16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIU16U8Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIU16U8Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIU8S16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIU8S16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIU8S32Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIU8S32Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIU8U16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIU8U16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpSIU8U8Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpSIU8U8Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpU16S16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpU16S16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpU16S32Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpU16S32Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpU16U16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpU16U16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpU16U8Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpU16U8Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpU8S16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpU8S16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpU8S32Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpU8S32Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpU8U16Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpU8U16Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/mlib_v_ImageLookUpU8U8Func.c : jdk/src/solaris/native/sun/awt/medialib/mlib_v_ImageLookUpU8U8Func.c
+jdk/src/java.desktop/unix/native/libmlib_image/vis_32.il : jdk/src/solaris/native/sun/awt/medialib/vis_32.il
+jdk/src/java.desktop/unix/native/libmlib_image/vis_64.il : jdk/src/solaris/native/sun/awt/medialib/vis_64.il
+jdk/src/java.desktop/unix/native/libsplashscreen : jdk/src/solaris/native/sun/awt/splashscreen
+jdk/src/java.desktop/unix/native/libsunwjdga : jdk/src/solaris/native/sun/jdga
+jdk/src/java.desktop/windows/classes/META-INF/services : jdk/src/windows/classes/sun/print/services
+jdk/src/java.desktop/windows/classes/sun/awt/windows/ThemeReader.java : jdk/src/windows/classes/sun/awt/windows/ThemeReader.java
+jdk/src/java.desktop/windows/classes/sun/font : jdk/src/windows/classes/sun/font
+jdk/src/java.desktop/windows/conf/flavormap.properties : jdk/src/windows/lib/flavormap.properties
+jdk/src/java.desktop/windows/conf/images/cursors/cursors.properties : jdk/src/windows/lib/images/cursors/cursors.properties
+jdk/src/java.desktop/windows/native/common/awt/utility/rect.h : jdk/src/windows/native/sun/awt/utility/rect.h
+jdk/src/java.desktop/windows/native/include/jawt_md.h : jdk/src/windows/javavm/export/jawt_md.h
+jdk/src/java.desktop/windows/native/libawt/java2d/d3d : jdk/src/windows/native/sun/java2d/d3d
+jdk/src/java.desktop/windows/native/libawt/java2d : jdk/src/windows/native/sun/java2d
+jdk/src/java.desktop/windows/native/libawt/windows/alloc.h : jdk/src/windows/native/sun/windows/alloc.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_AWTEvent.cpp : jdk/src/windows/native/sun/windows/awt_AWTEvent.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_AWTEvent.h : jdk/src/windows/native/sun/windows/awt_AWTEvent.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_BitmapUtil.cpp : jdk/src/windows/native/sun/windows/awt_BitmapUtil.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_BitmapUtil.h : jdk/src/windows/native/sun/windows/awt_BitmapUtil.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Brush.cpp : jdk/src/windows/native/sun/windows/awt_Brush.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Brush.h : jdk/src/windows/native/sun/windows/awt_Brush.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Button.cpp : jdk/src/windows/native/sun/windows/awt_Button.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Button.h : jdk/src/windows/native/sun/windows/awt_Button.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Canvas.cpp : jdk/src/windows/native/sun/windows/awt_Canvas.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Canvas.h : jdk/src/windows/native/sun/windows/awt_Canvas.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Checkbox.cpp : jdk/src/windows/native/sun/windows/awt_Checkbox.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Checkbox.h : jdk/src/windows/native/sun/windows/awt_Checkbox.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Choice.cpp : jdk/src/windows/native/sun/windows/awt_Choice.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Choice.h : jdk/src/windows/native/sun/windows/awt_Choice.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Clipboard.cpp : jdk/src/windows/native/sun/windows/awt_Clipboard.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Clipboard.h : jdk/src/windows/native/sun/windows/awt_Clipboard.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Color.cpp : jdk/src/windows/native/sun/windows/awt_Color.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Color.h : jdk/src/windows/native/sun/windows/awt_Color.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp : jdk/src/windows/native/sun/windows/awt_Component.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.h : jdk/src/windows/native/sun/windows/awt_Component.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Container.cpp : jdk/src/windows/native/sun/windows/awt_Container.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Container.h : jdk/src/windows/native/sun/windows/awt_Container.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Cursor.cpp : jdk/src/windows/native/sun/windows/awt_Cursor.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Cursor.h : jdk/src/windows/native/sun/windows/awt_Cursor.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_CustomPaletteDef.h : jdk/src/windows/native/sun/windows/awt_CustomPaletteDef.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_DataTransferer.cpp : jdk/src/windows/native/sun/windows/awt_DataTransferer.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_DataTransferer.h : jdk/src/windows/native/sun/windows/awt_DataTransferer.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_DCHolder.cpp : jdk/src/windows/native/sun/windows/awt_DCHolder.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_DCHolder.h : jdk/src/windows/native/sun/windows/awt_DCHolder.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Debug.cpp : jdk/src/windows/native/sun/windows/awt_Debug.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Debug.h : jdk/src/windows/native/sun/windows/awt_Debug.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Desktop.cpp : jdk/src/windows/native/sun/windows/awt_Desktop.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_DesktopProperties.cpp : jdk/src/windows/native/sun/windows/awt_DesktopProperties.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_DesktopProperties.h : jdk/src/windows/native/sun/windows/awt_DesktopProperties.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Dialog.cpp : jdk/src/windows/native/sun/windows/awt_Dialog.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Dialog.h : jdk/src/windows/native/sun/windows/awt_Dialog.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Dimension.cpp : jdk/src/windows/native/sun/windows/awt_Dimension.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Dimension.h : jdk/src/windows/native/sun/windows/awt_Dimension.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_DnDDS.cpp : jdk/src/windows/native/sun/windows/awt_DnDDS.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_DnDDS.h : jdk/src/windows/native/sun/windows/awt_DnDDS.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_DnDDT.cpp : jdk/src/windows/native/sun/windows/awt_DnDDT.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_DnDDT.h : jdk/src/windows/native/sun/windows/awt_DnDDT.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_DrawingSurface.cpp : jdk/src/windows/native/sun/windows/awt_DrawingSurface.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_DrawingSurface.h : jdk/src/windows/native/sun/windows/awt_DrawingSurface.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Event.cpp : jdk/src/windows/native/sun/windows/awt_Event.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Event.h : jdk/src/windows/native/sun/windows/awt_Event.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_FileDialog.cpp : jdk/src/windows/native/sun/windows/awt_FileDialog.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_FileDialog.h : jdk/src/windows/native/sun/windows/awt_FileDialog.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Font.cpp : jdk/src/windows/native/sun/windows/awt_Font.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Font.h : jdk/src/windows/native/sun/windows/awt_Font.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Frame.cpp : jdk/src/windows/native/sun/windows/awt_Frame.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Frame.h : jdk/src/windows/native/sun/windows/awt_Frame.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_GDIObject.cpp : jdk/src/windows/native/sun/windows/awt_GDIObject.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_GDIObject.h : jdk/src/windows/native/sun/windows/awt_GDIObject.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt.h : jdk/src/windows/native/sun/windows/awt.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_IconCursor.cpp : jdk/src/windows/native/sun/windows/awt_IconCursor.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_IconCursor.h : jdk/src/windows/native/sun/windows/awt_IconCursor.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_InputEvent.cpp : jdk/src/windows/native/sun/windows/awt_InputEvent.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_InputEvent.h : jdk/src/windows/native/sun/windows/awt_InputEvent.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_InputMethod.cpp : jdk/src/windows/native/sun/windows/awt_InputMethod.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_InputTextInfor.cpp : jdk/src/windows/native/sun/windows/awt_InputTextInfor.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_InputTextInfor.h : jdk/src/windows/native/sun/windows/awt_InputTextInfor.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Insets.cpp : jdk/src/windows/native/sun/windows/awt_Insets.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Insets.h : jdk/src/windows/native/sun/windows/awt_Insets.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_KeyboardFocusManager.cpp : jdk/src/windows/native/sun/windows/awt_KeyboardFocusManager.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_KeyEvent.cpp : jdk/src/windows/native/sun/windows/awt_KeyEvent.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_KeyEvent.h : jdk/src/windows/native/sun/windows/awt_KeyEvent.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Label.cpp : jdk/src/windows/native/sun/windows/awt_Label.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Label.h : jdk/src/windows/native/sun/windows/awt_Label.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_List.cpp : jdk/src/windows/native/sun/windows/awt_List.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_List.h : jdk/src/windows/native/sun/windows/awt_List.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_MenuBar.cpp : jdk/src/windows/native/sun/windows/awt_MenuBar.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_MenuBar.h : jdk/src/windows/native/sun/windows/awt_MenuBar.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Menu.cpp : jdk/src/windows/native/sun/windows/awt_Menu.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Menu.h : jdk/src/windows/native/sun/windows/awt_Menu.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_MenuItem.cpp : jdk/src/windows/native/sun/windows/awt_MenuItem.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_MenuItem.h : jdk/src/windows/native/sun/windows/awt_MenuItem.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Mlib.cpp : jdk/src/windows/native/sun/windows/awt_Mlib.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Mlib.h : jdk/src/windows/native/sun/windows/awt_Mlib.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_MouseEvent.cpp : jdk/src/windows/native/sun/windows/awt_MouseEvent.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_MouseEvent.h : jdk/src/windows/native/sun/windows/awt_MouseEvent.h
+jdk/src/java.desktop/windows/native/libawt/windows/awtmsg.h : jdk/src/windows/native/sun/windows/awtmsg.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_new.cpp : jdk/src/windows/native/sun/windows/awt_new.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_new.h : jdk/src/windows/native/sun/windows/awt_new.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Object.cpp : jdk/src/windows/native/sun/windows/awt_Object.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Object.h : jdk/src/windows/native/sun/windows/awt_Object.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_ole.cpp : jdk/src/windows/native/sun/windows/awt_ole.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_ole.h : jdk/src/windows/native/sun/windows/awt_ole.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Palette.cpp : jdk/src/windows/native/sun/windows/awt_Palette.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Palette.h : jdk/src/windows/native/sun/windows/awt_Palette.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Panel.cpp : jdk/src/windows/native/sun/windows/awt_Panel.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Panel.h : jdk/src/windows/native/sun/windows/awt_Panel.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Pen.cpp : jdk/src/windows/native/sun/windows/awt_Pen.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Pen.h : jdk/src/windows/native/sun/windows/awt_Pen.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_PopupMenu.cpp : jdk/src/windows/native/sun/windows/awt_PopupMenu.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_PopupMenu.h : jdk/src/windows/native/sun/windows/awt_PopupMenu.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_PrintControl.cpp : jdk/src/windows/native/sun/windows/awt_PrintControl.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_PrintControl.h : jdk/src/windows/native/sun/windows/awt_PrintControl.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_PrintDialog.cpp : jdk/src/windows/native/sun/windows/awt_PrintDialog.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_PrintDialog.h : jdk/src/windows/native/sun/windows/awt_PrintDialog.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_PrintJob.cpp : jdk/src/windows/native/sun/windows/awt_PrintJob.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt.rc : jdk/src/windows/native/sun/windows/awt.rc
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Rectangle.cpp : jdk/src/windows/native/sun/windows/awt_Rectangle.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Rectangle.h : jdk/src/windows/native/sun/windows/awt_Rectangle.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Robot.cpp : jdk/src/windows/native/sun/windows/awt_Robot.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Robot.h : jdk/src/windows/native/sun/windows/awt_Robot.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Scrollbar.cpp : jdk/src/windows/native/sun/windows/awt_Scrollbar.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Scrollbar.h : jdk/src/windows/native/sun/windows/awt_Scrollbar.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_ScrollPane.cpp : jdk/src/windows/native/sun/windows/awt_ScrollPane.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_ScrollPane.h : jdk/src/windows/native/sun/windows/awt_ScrollPane.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_TextArea.cpp : jdk/src/windows/native/sun/windows/awt_TextArea.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_TextArea.h : jdk/src/windows/native/sun/windows/awt_TextArea.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_TextComponent.cpp : jdk/src/windows/native/sun/windows/awt_TextComponent.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_TextComponent.h : jdk/src/windows/native/sun/windows/awt_TextComponent.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_TextField.cpp : jdk/src/windows/native/sun/windows/awt_TextField.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_TextField.h : jdk/src/windows/native/sun/windows/awt_TextField.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Toolkit.cpp : jdk/src/windows/native/sun/windows/awt_Toolkit.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Toolkit.h : jdk/src/windows/native/sun/windows/awt_Toolkit.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_TrayIcon.cpp : jdk/src/windows/native/sun/windows/awt_TrayIcon.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_TrayIcon.h : jdk/src/windows/native/sun/windows/awt_TrayIcon.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Win32GraphicsConfig.cpp : jdk/src/windows/native/sun/windows/awt_Win32GraphicsConfig.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Win32GraphicsConfig.h : jdk/src/windows/native/sun/windows/awt_Win32GraphicsConfig.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Win32GraphicsDevice.cpp : jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Win32GraphicsDevice.h : jdk/src/windows/native/sun/windows/awt_Win32GraphicsDevice.h
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Win32GraphicsEnv.cpp : jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Window.cpp : jdk/src/windows/native/sun/windows/awt_Window.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/awt_Window.h : jdk/src/windows/native/sun/windows/awt_Window.h
+jdk/src/java.desktop/windows/native/libawt/windows/check.bmp : jdk/src/windows/native/sun/windows/check.bmp
+jdk/src/java.desktop/windows/native/libawt/windows/CmdIDList.cpp : jdk/src/windows/native/sun/windows/CmdIDList.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/CmdIDList.h : jdk/src/windows/native/sun/windows/CmdIDList.h
+jdk/src/java.desktop/windows/native/libawt/windows/colordata.h : jdk/src/windows/native/sun/windows/colordata.h
+jdk/src/java.desktop/windows/native/libawt/windows/ComCtl32Util.cpp : jdk/src/windows/native/sun/windows/ComCtl32Util.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/ComCtl32Util.h : jdk/src/windows/native/sun/windows/ComCtl32Util.h
+jdk/src/java.desktop/windows/native/libawt/windows/Devices.cpp : jdk/src/windows/native/sun/windows/Devices.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/Devices.h : jdk/src/windows/native/sun/windows/Devices.h
+jdk/src/java.desktop/windows/native/libawt/windows/DllUtil.cpp : jdk/src/windows/native/sun/windows/DllUtil.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/DllUtil.h : jdk/src/windows/native/sun/windows/DllUtil.h
+jdk/src/java.desktop/windows/native/libawt/windows/GDIHashtable.cpp : jdk/src/windows/native/sun/windows/GDIHashtable.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/GDIHashtable.h : jdk/src/windows/native/sun/windows/GDIHashtable.h
+jdk/src/java.desktop/windows/native/libawt/windows/hand.cur : jdk/src/windows/native/sun/windows/hand.cur
+jdk/src/java.desktop/windows/native/libawt/windows/Hashtable.cpp : jdk/src/windows/native/sun/windows/Hashtable.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/Hashtable.h : jdk/src/windows/native/sun/windows/Hashtable.h
+jdk/src/java.desktop/windows/native/libawt/windows/img_util_md.h : jdk/src/windows/native/sun/windows/img_util_md.h
+jdk/src/java.desktop/windows/native/libawt/windows/initIDs.cpp : jdk/src/windows/native/sun/windows/initIDs.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/mlib_types_md.h : jdk/src/windows/native/sun/windows/mlib_types_md.h
+jdk/src/java.desktop/windows/native/libawt/windows/MouseInfo.cpp : jdk/src/windows/native/sun/windows/MouseInfo.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/ObjectList.cpp : jdk/src/windows/native/sun/windows/ObjectList.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/ObjectList.h : jdk/src/windows/native/sun/windows/ObjectList.h
+jdk/src/java.desktop/windows/native/libawt/windows/README.JNI : jdk/src/windows/native/sun/windows/README.JNI
+jdk/src/java.desktop/windows/native/libawt/windows/security_warning_bw.ico : jdk/src/windows/native/sun/windows/security_warning_bw.ico
+jdk/src/java.desktop/windows/native/libawt/windows/security_warning.ico : jdk/src/windows/native/sun/windows/security_warning.ico
+jdk/src/java.desktop/windows/native/libawt/windows/security_warning_int.ico : jdk/src/windows/native/sun/windows/security_warning_int.ico
+jdk/src/java.desktop/windows/native/libawt/windows/ShellFolder2.cpp : jdk/src/windows/native/sun/windows/ShellFolder2.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/stdhdrs.h : jdk/src/windows/native/sun/windows/stdhdrs.h
+jdk/src/java.desktop/windows/native/libawt/windows/ThemeReader.cpp : jdk/src/windows/native/sun/windows/ThemeReader.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/WBufferStrategy.cpp : jdk/src/windows/native/sun/windows/WBufferStrategy.cpp
+jdk/src/java.desktop/windows/native/libawt/windows/WPrinterJob.cpp : jdk/src/windows/native/sun/windows/WPrinterJob.cpp
+jdk/src/java.desktop/windows/native/libfontmanager : jdk/src/windows/native/sun/font
+jdk/src/java.desktop/windows/native/libjawt/jawt.cpp : jdk/src/windows/native/sun/windows/jawt.cpp
+jdk/src/java.desktop/windows/native/libjsound : jdk/src/windows/native/com/sun/media/sound
+jdk/src/java.desktop/windows/native/libsplashscreen : jdk/src/windows/native/sun/awt/splashscreen
+jdk/src/java.instrument/share/classes/java/lang/instrument : jdk/src/share/classes/java/lang/instrument
+jdk/src/java.instrument/share/classes/sun/instrument : jdk/src/share/classes/sun/instrument
+jdk/src/java.instrument/share/native/libinstrument : jdk/src/share/instrument
+jdk/src/java.instrument/unix/native/libinstrument : jdk/src/solaris/instrument
+jdk/src/java.instrument/windows/native/libinstrument : jdk/src/windows/instrument
+jdk/src/java.logging/share/classes/java/util/logging : jdk/src/share/classes/java/util/logging
+jdk/src/java.logging/share/classes/sun/net/www/protocol/http/logging : jdk/src/share/classes/sun/net/www/protocol/http/logging
+jdk/src/java.logging/share/classes/sun/util/logging/resources : jdk/src/share/classes/sun/util/logging/resources
+jdk/src/java.logging/share/conf/logging.properties : jdk/src/share/lib/logging.properties
+jdk/src/java.management/share/classes/com/sun/jmx/defaults : jdk/src/share/classes/com/sun/jmx/defaults
+jdk/src/java.management/share/classes/com/sun/jmx/interceptor : jdk/src/share/classes/com/sun/jmx/interceptor
+jdk/src/java.management/share/classes/com/sun/jmx/mbeanserver : jdk/src/share/classes/com/sun/jmx/mbeanserver
+jdk/src/java.management/share/classes/com/sun/jmx/remote : jdk/src/share/classes/com/sun/jmx/remote
+jdk/src/java.management/share/classes/java/lang/management : jdk/src/share/classes/java/lang/management
+jdk/src/java.management/share/classes/javax/management : jdk/src/share/classes/javax/management
+jdk/src/java.management/share/classes/mgmt-overview.html : jdk/src/share/classes/com/sun/management/mgmt-overview.html
+jdk/src/java.management/share/classes/sun/management/counter : jdk/src/share/classes/sun/management/counter
+jdk/src/java.management/share/classes/sun/management/counter/perf : jdk/src/share/classes/sun/management/counter/perf
+jdk/src/java.management/share/classes/sun/management : jdk/src/share/classes/sun/management
+jdk/src/java.management/share/conf : jdk/src/share/lib/management
+jdk/src/java.management/share/native/include/jmm.h : jdk/src/share/javavm/export/jmm.h
+jdk/src/java.management/share/native/libmanagement : jdk/src/share/native/sun/management
+jdk/src/java.management/unix/classes/sun/management : jdk/src/solaris/classes/sun/management
+jdk/src/java.management/unix/native/libmanagement : jdk/src/solaris/native/sun/management
+jdk/src/java.management/windows/classes/sun/management : jdk/src/windows/classes/sun/management
+jdk/src/java.management/windows/native/libmanagement : jdk/src/windows/native/sun/management
+jdk/src/java.management.rmi/share/classes/com/sun/jmx/remote/internal/rmi/ProxyRef.java : jdk/src/share/classes/com/sun/jmx/remote/internal/ProxyRef.java
+jdk/src/java.management.rmi/share/classes/com/sun/jmx/remote/internal/rmi/RMIExporter.java : jdk/src/share/classes/com/sun/jmx/remote/internal/RMIExporter.java
+jdk/src/java.management.rmi/share/classes/com/sun/jmx/remote/internal/rmi/Unmarshal.java : jdk/src/share/classes/com/sun/jmx/remote/internal/Unmarshal.java
+jdk/src/java.management.rmi/share/classes/com/sun/jmx/remote/protocol/rmi : jdk/src/share/classes/com/sun/jmx/remote/protocol/rmi
+jdk/src/java.management.rmi/share/classes/javax/management/remote/rmi : jdk/src/share/classes/javax/management/remote/rmi
+jdk/src/java.naming/share/classes/com/sun/jndi/ldap/ext : jdk/src/share/classes/com/sun/jndi/ldap/ext
+jdk/src/java.naming/share/classes/com/sun/jndi/ldap : jdk/src/share/classes/com/sun/jndi/ldap
+jdk/src/java.naming/share/classes/com/sun/jndi/ldap/pool : jdk/src/share/classes/com/sun/jndi/ldap/pool
+jdk/src/java.naming/share/classes/com/sun/jndi/ldap/sasl : jdk/src/share/classes/com/sun/jndi/ldap/sasl
+jdk/src/java.naming/share/classes/com/sun/jndi/toolkit/ctx : jdk/src/share/classes/com/sun/jndi/toolkit/ctx
+jdk/src/java.naming/share/classes/com/sun/jndi/toolkit/dir : jdk/src/share/classes/com/sun/jndi/toolkit/dir
+jdk/src/java.naming/share/classes/com/sun/jndi/toolkit/url : jdk/src/share/classes/com/sun/jndi/toolkit/url
+jdk/src/java.naming/share/classes/com/sun/jndi/url/ldap : jdk/src/share/classes/com/sun/jndi/url/ldap
+jdk/src/java.naming/share/classes/com/sun/jndi/url/ldaps : jdk/src/share/classes/com/sun/jndi/url/ldaps
+jdk/src/java.naming/share/classes/com/sun/naming/internal : jdk/src/share/classes/com/sun/naming/internal
+jdk/src/java.naming/share/classes/javax/naming/directory : jdk/src/share/classes/javax/naming/directory
+jdk/src/java.naming/share/classes/javax/naming/event : jdk/src/share/classes/javax/naming/event
+jdk/src/java.naming/share/classes/javax/naming : jdk/src/share/classes/javax/naming
+jdk/src/java.naming/share/classes/javax/naming/ldap : jdk/src/share/classes/javax/naming/ldap
+jdk/src/java.naming/share/classes/javax/naming/spi : jdk/src/share/classes/javax/naming/spi
+jdk/src/java.naming/share/classes/sun/security/provider/certpath/ldap : jdk/src/share/classes/sun/security/provider/certpath/ldap
+jdk/src/java.prefs/macosx/native/libprefs : jdk/src/macosx/native/java/util/prefs
+jdk/src/java.prefs/unix/classes/java/util/prefs : jdk/src/solaris/classes/java/util/prefs
+jdk/src/java.prefs/unix/native/libprefs : jdk/src/solaris/native/java/util/prefs
+jdk/src/java.prefs/windows/native/libprefs : jdk/src/windows/native/java/util/prefs
+jdk/src/java.rmi/share/classes/com/sun/rmi/rmid : jdk/src/share/classes/com/sun/rmi/rmid
+jdk/src/java.rmi/share/classes/java/rmi/activation : jdk/src/share/classes/java/rmi/activation
+jdk/src/java.rmi/share/classes/java/rmi/dgc : jdk/src/share/classes/java/rmi/dgc
+jdk/src/java.rmi/share/classes/java/rmi : jdk/src/share/classes/java/rmi
+jdk/src/java.rmi/share/classes/java/rmi/registry : jdk/src/share/classes/java/rmi/registry
+jdk/src/java.rmi/share/classes/java/rmi/server : jdk/src/share/classes/java/rmi/server
+jdk/src/java.rmi/share/classes/javax/rmi/ssl : jdk/src/share/classes/javax/rmi/ssl
+jdk/src/java.rmi/share/classes/sun/rmi/log : jdk/src/share/classes/sun/rmi/log
+jdk/src/java.rmi/share/classes/sun/rmi/registry : jdk/src/share/classes/sun/rmi/registry
+jdk/src/java.rmi/share/classes/sun/rmi/runtime : jdk/src/share/classes/sun/rmi/runtime
+jdk/src/java.rmi/share/classes/sun/rmi/server : jdk/src/share/classes/sun/rmi/server
+jdk/src/java.rmi/share/classes/sun/rmi/server/resources : jdk/src/share/classes/sun/rmi/server/resources
+jdk/src/java.rmi/share/classes/sun/rmi/transport : jdk/src/share/classes/sun/rmi/transport
+jdk/src/java.rmi/share/classes/sun/rmi/transport/proxy : jdk/src/share/classes/sun/rmi/transport/proxy
+jdk/src/java.rmi/share/classes/sun/rmi/transport/tcp : jdk/src/share/classes/sun/rmi/transport/tcp
+jdk/src/java.rmi/share/doc/stub/java/rmi/activation : jdk/src/share/doc/stub/java/rmi/activation
+jdk/src/java.rmi/unix/bin/java-rmi.cgi.sh : jdk/src/solaris/bin/java-rmi.cgi.sh
+jdk/src/java.scripting/share/classes/javax/script : jdk/src/share/classes/javax/script
+jdk/src/java.scripting/share/classes/com/sun/tools/script/shell : jdk/src/share/classes/com/sun/tools/script/shell
+jdk/src/java.security.jgss/macosx/native/libosxkrb5/nativeccache.c : jdk/src/share/native/sun/security/krb5/nativeccache.c
+jdk/src/java.security.jgss/macosx/native/libosxkrb5/SCDynamicStoreConfig.m : jdk/src/macosx/native/sun/security/krb5/SCDynamicStoreConfig.m
+jdk/src/java.security.jgss/share/classes/javax/security/auth/kerberos : jdk/src/share/classes/javax/security/auth/kerberos
+jdk/src/java.security.jgss/share/classes/jgss-overview.html : jdk/src/share/classes/com/sun/security/jgss/jgss-overview.html
+jdk/src/java.security.jgss/share/classes/org/ietf/jgss : jdk/src/share/classes/org/ietf/jgss
+jdk/src/java.security.jgss/share/classes/sun/net/www/protocol/http/spnego : jdk/src/share/classes/sun/net/www/protocol/http/spnego
+jdk/src/java.security.jgss/share/classes/sun/security/jgss : jdk/src/share/classes/sun/security/jgss
+jdk/src/java.security.jgss/share/classes/sun/security/krb5 : jdk/src/share/classes/sun/security/krb5
+jdk/src/java.security.jgss/windows/classes/sun/security/krb5 : jdk/src/windows/classes/sun/security/krb5
+jdk/src/java.security.jgss/share/classes/sun/security/ssl/krb5 : jdk/src/share/classes/sun/security/ssl/krb5
+jdk/src/java.security.jgss/share/native/libj2gss : jdk/src/share/native/sun/security/jgss/wrapper
+jdk/src/java.security.jgss/unix/native/libj2gss : jdk/src/solaris/native/sun/security/jgss/wrapper
+jdk/src/java.security.jgss/windows/native/libw2k_lsa_auth : jdk/src/windows/native/sun/security/krb5
+jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/digest : jdk/src/share/classes/com/sun/security/sasl/digest
+jdk/src/java.security.sasl/share/classes/com/sun/security/sasl : jdk/src/share/classes/com/sun/security/sasl
+jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/ntlm : jdk/src/share/classes/com/sun/security/sasl/ntlm
+jdk/src/java.security.sasl/share/classes/com/sun/security/sasl/util : jdk/src/share/classes/com/sun/security/sasl/util
+jdk/src/java.security.sasl/share/classes/javax/security/sasl : jdk/src/share/classes/javax/security/sasl
+jdk/src/java.smartcardio/share/classes/javax/smartcardio : jdk/src/share/classes/javax/smartcardio
+jdk/src/java.smartcardio/share/classes/sun/security/smartcardio : jdk/src/share/classes/sun/security/smartcardio
+jdk/src/java.smartcardio/share/native/libj2pcsc : jdk/src/share/native/sun/security/smartcardio
+jdk/src/java.smartcardio/unix/classes/sun/security/smartcardio : jdk/src/solaris/classes/sun/security/smartcardio
+jdk/src/java.smartcardio/unix/native/libj2pcsc : jdk/src/solaris/native/sun/security/smartcardio
+jdk/src/java.smartcardio/unix/native/libj2pcsc/MUSCLE : jdk/src/solaris/native/sun/security/smartcardio/MUSCLE
+jdk/src/java.smartcardio/windows/classes/sun/security/smartcardio : jdk/src/windows/classes/sun/security/smartcardio
+jdk/src/java.smartcardio/windows/native/libj2pcsc : jdk/src/windows/native/sun/security/smartcardio
+jdk/src/java.sql.rowset/share/classes/com/sun/rowset : jdk/src/share/classes/com/sun/rowset
+jdk/src/java.sql.rowset/share/classes/javax/sql/rowset : jdk/src/share/classes/javax/sql/rowset
+jdk/src/java.sql/share/classes/java/sql : jdk/src/share/classes/java/sql
+jdk/src/java.sql/share/classes/javax/sql : jdk/src/share/classes/javax/sql
+jdk/src/java.sql/share/classes/javax/transaction/xa : corba/src/share/classes/javax/transaction/xa
+jdk/src/java.transaction/share/classes/javax/transaction : corba/src/share/classes/javax/transaction
+jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security : jdk/src/share/classes/com/sun/org/apache/xml/internal/security
+jdk/src/java.xml.crypto/share/classes/javax/xml/crypto : jdk/src/share/classes/javax/xml/crypto
+jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal : jdk/src/share/classes/org/jcp/xml/dsig/internal
+jdk/src/jdk.attach/aix/native/libattach/AixVirtualMachine.c : jdk/src/aix/native/sun/tools/attach/AixVirtualMachine.c
+jdk/src/jdk.attach/share/classes/com/sun/tools/attach : jdk/src/share/classes/com/sun/tools/attach
+jdk/src/jdk.attach/share/classes/com/sun/tools/attach/spi : jdk/src/share/classes/com/sun/tools/attach/spi
+jdk/src/jdk.attach/share/classes/META-INF/services : jdk/src/share/classes/sun/tools/attach/META-INF/services
+jdk/src/jdk.attach/share/classes/sun/tools/attach : jdk/src/share/classes/sun/tools/attach
+jdk/src/jdk.attach/unix/classes/sun/tools/attach : jdk/src/solaris/classes/sun/tools/attach
+jdk/src/jdk.attach/unix/native/libattach : jdk/src/solaris/native/sun/tools/attach
+jdk/src/jdk.attach/windows/native/libattach : jdk/src/windows/native/sun/tools/attach
+jdk/src/jdk.base/share/native/libnpt : jdk/src/share/npt
+jdk/src/jdk.base/unix/native/libnpt : jdk/src/solaris/npt
+jdk/src/jdk.base/windows/native/libnpt : jdk/src/windows/npt
+jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext : jdk/src/share/classes/sun/nio/cs/ext
+jdk/src/jdk.charsets/unix/classes/sun/nio/cs/ext : jdk/src/solaris/classes/sun/nio/cs/ext
+jdk/src/jdk.compiler/share/classes/sun/tools/serialver : jdk/src/share/classes/sun/tools/serialver
+jdk/src/jdk.crypto.ec/share/classes/sun/security/ec : jdk/src/share/classes/sun/security/ec
+jdk/src/jdk.crypto.ec/share/native/libsunec/ECC_JNI.cpp : jdk/src/share/native/sun/security/ec/ECC_JNI.cpp
+jdk/src/jdk.crypto.ec/share/native/libsunec/impl : jdk/src/share/native/sun/security/ec/impl
+jdk/src/jdk.crypto.mscapi/windows/classes/sun/security/mscapi : jdk/src/windows/classes/sun/security/mscapi
+jdk/src/jdk.crypto.mscapi/windows/native/libsunmscapi : jdk/src/windows/native/sun/security/mscapi
+jdk/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11 : jdk/src/share/classes/sun/security/pkcs11
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/j2secmod.c : jdk/src/share/native/sun/security/pkcs11/j2secmod.c
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/j2secmod.h : jdk/src/share/native/sun/security/pkcs11/j2secmod.h
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c : jdk/src/share/native/sun/security/pkcs11/wrapper/p11_convert.c
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_crypt.c : jdk/src/share/native/sun/security/pkcs11/wrapper/p11_crypt.c
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_digest.c : jdk/src/share/native/sun/security/pkcs11/wrapper/p11_digest.c
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_dual.c : jdk/src/share/native/sun/security/pkcs11/wrapper/p11_dual.c
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_general.c : jdk/src/share/native/sun/security/pkcs11/wrapper/p11_general.c
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_keymgmt.c : jdk/src/share/native/sun/security/pkcs11/wrapper/p11_keymgmt.c
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_mutex.c : jdk/src/share/native/sun/security/pkcs11/wrapper/p11_mutex.c
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_objmgmt.c : jdk/src/share/native/sun/security/pkcs11/wrapper/p11_objmgmt.c
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_sessmgmt.c : jdk/src/share/native/sun/security/pkcs11/wrapper/p11_sessmgmt.c
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_sign.c : jdk/src/share/native/sun/security/pkcs11/wrapper/p11_sign.c
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c : jdk/src/share/native/sun/security/pkcs11/wrapper/p11_util.c
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11f.h : jdk/src/share/native/sun/security/pkcs11/wrapper/pkcs11f.h
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11.h : jdk/src/share/native/sun/security/pkcs11/wrapper/pkcs11.h
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11t.h : jdk/src/share/native/sun/security/pkcs11/wrapper/pkcs11t.h
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs-11v2-20a3.h : jdk/src/share/native/sun/security/pkcs11/wrapper/pkcs-11v2-20a3.h
+jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/pkcs11wrapper.h : jdk/src/share/native/sun/security/pkcs11/wrapper/pkcs11wrapper.h
+jdk/src/jdk.crypto.cryptoki/unix/native/libj2pkcs11/j2secmod_md.c : jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.c
+jdk/src/jdk.crypto.cryptoki/unix/native/libj2pkcs11/j2secmod_md.h : jdk/src/solaris/native/sun/security/pkcs11/j2secmod_md.h
+jdk/src/jdk.crypto.cryptoki/unix/native/libj2pkcs11/p11_md.c : jdk/src/solaris/native/sun/security/pkcs11/wrapper/p11_md.c
+jdk/src/jdk.crypto.cryptoki/unix/native/libj2pkcs11/p11_md.h : jdk/src/solaris/native/sun/security/pkcs11/wrapper/p11_md.h
+jdk/src/jdk.crypto.cryptoki/windows/native/libj2pkcs11/j2secmod_md.c : jdk/src/windows/native/sun/security/pkcs11/j2secmod_md.c
+jdk/src/jdk.crypto.cryptoki/windows/native/libj2pkcs11/j2secmod_md.h : jdk/src/windows/native/sun/security/pkcs11/j2secmod_md.h
+jdk/src/jdk.crypto.cryptoki/windows/native/libj2pkcs11/p11_md.c : jdk/src/windows/native/sun/security/pkcs11/wrapper/p11_md.c
+jdk/src/jdk.crypto.cryptoki/windows/native/libj2pkcs11/p11_md.h : jdk/src/windows/native/sun/security/pkcs11/wrapper/p11_md.h
+jdk/src/java.desktop/macosx/native/libosx/CFileManager.m : jdk/src/macosx/native/com/apple/eio/CFileManager.m
+jdk/src/java.base/macosx/native/libosxsecurity/KeystoreImpl.m : jdk/src/macosx/native/apple/security/KeystoreImpl.m
+jdk/src/jdk.hprof.agent/share/classes/com/sun/demo/jvmti/hprof : jdk/src/share/classes/com/sun/demo/jvmti/hprof
+jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver : jdk/src/share/classes/com/sun/net/httpserver
+jdk/src/jdk.httpserver/share/classes/sun/net/httpserver : jdk/src/share/classes/sun/net/httpserver
+jdk/src/jdk.jartool/share/classes/com/sun/jarsigner : jdk/src/share/classes/com/sun/jarsigner
+jdk/src/jdk.jartool/share/classes/sun/security/tools/jarsigner : jdk/src/share/classes/sun/security/tools/jarsigner
+jdk/src/jdk.jartool/share/classes/sun/tools/jar : jdk/src/share/classes/sun/tools/jar
+jdk/src/jdk.jcmd/share/classes/sun/tools/jcmd : jdk/src/share/classes/sun/tools/jcmd
+jdk/src/jdk.jcmd/share/classes/sun/tools/jinfo : jdk/src/share/classes/sun/tools/jinfo
+jdk/src/jdk.jcmd/share/classes/sun/tools/jmap : jdk/src/share/classes/sun/tools/jmap
+jdk/src/jdk.jcmd/share/classes/sun/tools/jps : jdk/src/share/classes/sun/tools/jps
+jdk/src/jdk.jcmd/share/classes/sun/tools/jstack : jdk/src/share/classes/sun/tools/jstack
+jdk/src/jdk.jcmd/share/classes/sun/tools/jstat : jdk/src/share/classes/sun/tools/jstat
+jdk/src/jdk.jconsole/share/classes/com/sun/tools/jconsole : jdk/src/share/classes/com/sun/tools/jconsole
+jdk/src/jdk.jconsole/share/classes/sun/tools/jconsole : jdk/src/share/classes/sun/tools/jconsole
+jdk/src/jdk.jdi/share/classes/com/sun/jdi : jdk/src/share/classes/com/sun/jdi
+jdk/src/jdk.jdi/share/classes/com/sun/tools/example/debug/expr : jdk/src/share/classes/com/sun/tools/example/debug/expr
+jdk/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty : jdk/src/share/classes/com/sun/tools/example/debug/tty
+jdk/src/jdk.jdi/share/classes/com/sun/tools/jdi : jdk/src/share/classes/com/sun/tools/jdi
+jdk/src/jdk.jdi/share/classes/jdi-overview.html : jdk/src/share/classes/jdi-overview.html
+jdk/src/jdk.jdi/share/classes/META-INF/services : jdk/src/share/classes/com/sun/tools/jdi/META-INF/services
+jdk/src/jdk.jdi/share/native/libdt_shmem/SharedMemoryConnection.c : jdk/src/share/native/com/sun/tools/jdi/SharedMemoryConnection.c
+jdk/src/jdk.jdi/share/native/libdt_shmem/SharedMemory.h : jdk/src/share/native/com/sun/tools/jdi/SharedMemory.h
+jdk/src/jdk.jdi/share/native/libdt_shmem/SharedMemoryTransport.c : jdk/src/share/native/com/sun/tools/jdi/SharedMemoryTransport.c
+jdk/src/jdk.jdi/share/native/libdt_shmem/shmemBack.c : jdk/src/share/transport/shmem/shmemBack.c
+jdk/src/jdk.jdi/share/native/libdt_shmem/shmemBase.c : jdk/src/share/transport/shmem/shmemBase.c
+jdk/src/jdk.jdi/share/native/libdt_shmem/shmemBase.h : jdk/src/share/transport/shmem/shmemBase.h
+jdk/src/jdk.jdi/share/native/libdt_shmem/sysShmem.h : jdk/src/share/transport/shmem/sysShmem.h
+jdk/src/jdk.jdi/windows/native/libdt_shmem : jdk/src/windows/transport/shmem
+jdk/src/jdk.jdwp.agent/share/native/include/jdwpTransport.h : jdk/src/share/javavm/export/jdwpTransport.h
+jdk/src/jdk.jdwp.agent/share/native/libdt_socket : jdk/src/share/transport/socket
+jdk/src/jdk.jdwp.agent/share/native/libjdwp : jdk/src/share/back
+jdk/src/jdk.jdwp.agent/unix/native/libdt_socket : jdk/src/solaris/transport/socket
+jdk/src/jdk.jdwp.agent/unix/native/libjdwp : jdk/src/solaris/back
+jdk/src/jdk.jdwp.agent/windows/native/libdt_socket : jdk/src/windows/transport/socket
+jdk/src/jdk.jdwp.agent/windows/native/libjdwp : jdk/src/windows/back
+jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor : jdk/src/share/classes/sun/jvmstat/monitor
+jdk/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata : jdk/src/share/classes/sun/jvmstat/perfdata
+jdk/src/jdk.internal.jvmstat/share/classes/sun/tools/jstatd : jdk/src/share/classes/sun/tools/jstatd
+jdk/src/jdk.localedata/share/classes/sun/text/resources/ar : jdk/src/share/classes/sun/text/resources/ar
+jdk/src/jdk.localedata/share/classes/sun/text/resources/be : jdk/src/share/classes/sun/text/resources/be
+jdk/src/jdk.localedata/share/classes/sun/text/resources/bg : jdk/src/share/classes/sun/text/resources/bg
+jdk/src/jdk.localedata/share/classes/sun/text/resources/ca : jdk/src/share/classes/sun/text/resources/ca
+jdk/src/jdk.localedata/share/classes/sun/text/resources/cs : jdk/src/share/classes/sun/text/resources/cs
+jdk/src/jdk.localedata/share/classes/sun/text/resources/da : jdk/src/share/classes/sun/text/resources/da
+jdk/src/jdk.localedata/share/classes/sun/text/resources/de : jdk/src/share/classes/sun/text/resources/de
+jdk/src/jdk.localedata/share/classes/sun/text/resources/el : jdk/src/share/classes/sun/text/resources/el
+jdk/src/jdk.localedata/share/classes/sun/text/resources/es : jdk/src/share/classes/sun/text/resources/es
+jdk/src/jdk.localedata/share/classes/sun/text/resources/et : jdk/src/share/classes/sun/text/resources/et
+jdk/src/jdk.localedata/share/classes/sun/text/resources/fi : jdk/src/share/classes/sun/text/resources/fi
+jdk/src/jdk.localedata/share/classes/sun/text/resources/fr : jdk/src/share/classes/sun/text/resources/fr
+jdk/src/jdk.localedata/share/classes/sun/text/resources/ga : jdk/src/share/classes/sun/text/resources/ga
+jdk/src/jdk.localedata/share/classes/sun/text/resources/hi : jdk/src/share/classes/sun/text/resources/hi
+jdk/src/jdk.localedata/share/classes/sun/text/resources/hr : jdk/src/share/classes/sun/text/resources/hr
+jdk/src/jdk.localedata/share/classes/sun/text/resources/hu : jdk/src/share/classes/sun/text/resources/hu
+jdk/src/jdk.localedata/share/classes/sun/text/resources/in : jdk/src/share/classes/sun/text/resources/in
+jdk/src/jdk.localedata/share/classes/sun/text/resources/is : jdk/src/share/classes/sun/text/resources/is
+jdk/src/jdk.localedata/share/classes/sun/text/resources/it : jdk/src/share/classes/sun/text/resources/it
+jdk/src/jdk.localedata/share/classes/sun/text/resources/iw : jdk/src/share/classes/sun/text/resources/iw
+jdk/src/jdk.localedata/share/classes/sun/text/resources/ja : jdk/src/share/classes/sun/text/resources/ja
+jdk/src/jdk.localedata/share/classes/sun/text/resources/ko : jdk/src/share/classes/sun/text/resources/ko
+jdk/src/jdk.localedata/share/classes/sun/text/resources/lt : jdk/src/share/classes/sun/text/resources/lt
+jdk/src/jdk.localedata/share/classes/sun/text/resources/lv : jdk/src/share/classes/sun/text/resources/lv
+jdk/src/jdk.localedata/share/classes/sun/text/resources/mk : jdk/src/share/classes/sun/text/resources/mk
+jdk/src/jdk.localedata/share/classes/sun/text/resources/ms : jdk/src/share/classes/sun/text/resources/ms
+jdk/src/jdk.localedata/share/classes/sun/text/resources/mt : jdk/src/share/classes/sun/text/resources/mt
+jdk/src/jdk.localedata/share/classes/sun/text/resources/nl : jdk/src/share/classes/sun/text/resources/nl
+jdk/src/jdk.localedata/share/classes/sun/text/resources/no : jdk/src/share/classes/sun/text/resources/no
+jdk/src/jdk.localedata/share/classes/sun/text/resources/pl : jdk/src/share/classes/sun/text/resources/pl
+jdk/src/jdk.localedata/share/classes/sun/text/resources/pt : jdk/src/share/classes/sun/text/resources/pt
+jdk/src/jdk.localedata/share/classes/sun/text/resources/ro : jdk/src/share/classes/sun/text/resources/ro
+jdk/src/jdk.localedata/share/classes/sun/text/resources/ru : jdk/src/share/classes/sun/text/resources/ru
+jdk/src/jdk.localedata/share/classes/sun/text/resources/sk : jdk/src/share/classes/sun/text/resources/sk
+jdk/src/jdk.localedata/share/classes/sun/text/resources/sl : jdk/src/share/classes/sun/text/resources/sl
+jdk/src/jdk.localedata/share/classes/sun/text/resources/sq : jdk/src/share/classes/sun/text/resources/sq
+jdk/src/jdk.localedata/share/classes/sun/text/resources/sr : jdk/src/share/classes/sun/text/resources/sr
+jdk/src/jdk.localedata/share/classes/sun/text/resources/sv : jdk/src/share/classes/sun/text/resources/sv
+jdk/src/jdk.localedata/share/classes/sun/text/resources/th : jdk/src/share/classes/sun/text/resources/th
+jdk/src/jdk.localedata/share/classes/sun/text/resources/tr : jdk/src/share/classes/sun/text/resources/tr
+jdk/src/jdk.localedata/share/classes/sun/text/resources/uk : jdk/src/share/classes/sun/text/resources/uk
+jdk/src/jdk.localedata/share/classes/sun/text/resources/vi : jdk/src/share/classes/sun/text/resources/vi
+jdk/src/jdk.localedata/share/classes/sun/text/resources/zh : jdk/src/share/classes/sun/text/resources/zh
+jdk/src/jdk.localedata/share/classes/sun/util/cldr/resources : jdk/src/share/classes/sun/util/cldr/resources
+jdk/src/jdk.localedata/share/classes/sun/util/resources/ar : jdk/src/share/classes/sun/util/resources/ar
+jdk/src/jdk.localedata/share/classes/sun/util/resources/be : jdk/src/share/classes/sun/util/resources/be
+jdk/src/jdk.localedata/share/classes/sun/util/resources/bg : jdk/src/share/classes/sun/util/resources/bg
+jdk/src/jdk.localedata/share/classes/sun/util/resources/ca : jdk/src/share/classes/sun/util/resources/ca
+jdk/src/jdk.localedata/share/classes/sun/util/resources/cs : jdk/src/share/classes/sun/util/resources/cs
+jdk/src/jdk.localedata/share/classes/sun/util/resources/da : jdk/src/share/classes/sun/util/resources/da
+jdk/src/jdk.localedata/share/classes/sun/util/resources/de : jdk/src/share/classes/sun/util/resources/de
+jdk/src/jdk.localedata/share/classes/sun/util/resources/el : jdk/src/share/classes/sun/util/resources/el
+jdk/src/jdk.localedata/share/classes/sun/util/resources/es : jdk/src/share/classes/sun/util/resources/es
+jdk/src/jdk.localedata/share/classes/sun/util/resources/et : jdk/src/share/classes/sun/util/resources/et
+jdk/src/jdk.localedata/share/classes/sun/util/resources/fi : jdk/src/share/classes/sun/util/resources/fi
+jdk/src/jdk.localedata/share/classes/sun/util/resources/fr : jdk/src/share/classes/sun/util/resources/fr
+jdk/src/jdk.localedata/share/classes/sun/util/resources/ga : jdk/src/share/classes/sun/util/resources/ga
+jdk/src/jdk.localedata/share/classes/sun/util/resources/hi : jdk/src/share/classes/sun/util/resources/hi
+jdk/src/jdk.localedata/share/classes/sun/util/resources/hr : jdk/src/share/classes/sun/util/resources/hr
+jdk/src/jdk.localedata/share/classes/sun/util/resources/hu : jdk/src/share/classes/sun/util/resources/hu
+jdk/src/jdk.localedata/share/classes/sun/util/resources/in : jdk/src/share/classes/sun/util/resources/in
+jdk/src/jdk.localedata/share/classes/sun/util/resources/is : jdk/src/share/classes/sun/util/resources/is
+jdk/src/jdk.localedata/share/classes/sun/util/resources/it : jdk/src/share/classes/sun/util/resources/it
+jdk/src/jdk.localedata/share/classes/sun/util/resources/iw : jdk/src/share/classes/sun/util/resources/iw
+jdk/src/jdk.localedata/share/classes/sun/util/resources/ja : jdk/src/share/classes/sun/util/resources/ja
+jdk/src/jdk.localedata/share/classes/sun/util/resources/ko : jdk/src/share/classes/sun/util/resources/ko
+jdk/src/jdk.localedata/share/classes/sun/util/resources/lt : jdk/src/share/classes/sun/util/resources/lt
+jdk/src/jdk.localedata/share/classes/sun/util/resources/lv : jdk/src/share/classes/sun/util/resources/lv
+jdk/src/jdk.localedata/share/classes/sun/util/resources/mk : jdk/src/share/classes/sun/util/resources/mk
+jdk/src/jdk.localedata/share/classes/sun/util/resources/ms : jdk/src/share/classes/sun/util/resources/ms
+jdk/src/jdk.localedata/share/classes/sun/util/resources/mt : jdk/src/share/classes/sun/util/resources/mt
+jdk/src/jdk.localedata/share/classes/sun/util/resources/nl : jdk/src/share/classes/sun/util/resources/nl
+jdk/src/jdk.localedata/share/classes/sun/util/resources/no : jdk/src/share/classes/sun/util/resources/no
+jdk/src/jdk.localedata/share/classes/sun/util/resources/pl : jdk/src/share/classes/sun/util/resources/pl
+jdk/src/jdk.localedata/share/classes/sun/util/resources/pt : jdk/src/share/classes/sun/util/resources/pt
+jdk/src/jdk.localedata/share/classes/sun/util/resources/ro : jdk/src/share/classes/sun/util/resources/ro
+jdk/src/jdk.localedata/share/classes/sun/util/resources/ru : jdk/src/share/classes/sun/util/resources/ru
+jdk/src/jdk.localedata/share/classes/sun/util/resources/sk : jdk/src/share/classes/sun/util/resources/sk
+jdk/src/jdk.localedata/share/classes/sun/util/resources/sl : jdk/src/share/classes/sun/util/resources/sl
+jdk/src/jdk.localedata/share/classes/sun/util/resources/sq : jdk/src/share/classes/sun/util/resources/sq
+jdk/src/jdk.localedata/share/classes/sun/util/resources/sr : jdk/src/share/classes/sun/util/resources/sr
+jdk/src/jdk.localedata/share/classes/sun/util/resources/sv : jdk/src/share/classes/sun/util/resources/sv
+jdk/src/jdk.localedata/share/classes/sun/util/resources/th : jdk/src/share/classes/sun/util/resources/th
+jdk/src/jdk.localedata/share/classes/sun/util/resources/tr : jdk/src/share/classes/sun/util/resources/tr
+jdk/src/jdk.localedata/share/classes/sun/util/resources/uk : jdk/src/share/classes/sun/util/resources/uk
+jdk/src/jdk.localedata/share/classes/sun/util/resources/vi : jdk/src/share/classes/sun/util/resources/vi
+jdk/src/jdk.localedata/share/classes/sun/util/resources/zh : jdk/src/share/classes/sun/util/resources/zh
+jdk/src/jdk.management/share/classes/com/sun/management : jdk/src/share/classes/com/sun/management
+jdk/src/jdk.management.agent/share/classes/jdk/internal/agent/resources : jdk/src/share/classes/sun/management/resources
+jdk/src/jdk.management.agent/share/classes/sun/management/jmxremote : jdk/src/share/classes/sun/management/jmxremote
+jdk/src/jdk.management.agent/share/classes/sun/management/jdp : jdk/src/share/classes/sun/management/jdp
+jdk/src/jdk.naming.dns/share/classes/com/sun/jndi/dns : jdk/src/share/classes/com/sun/jndi/dns
+jdk/src/jdk.naming.dns/share/classes/com/sun/jndi/url/dns : jdk/src/share/classes/com/sun/jndi/url/dns
+jdk/src/jdk.naming.dns/share/classes/META-INF/services : jdk/src/share/classes/sun/net/spi/nameservice/dns/META-INF/services
+jdk/src/jdk.naming.dns/share/classes/sun/net/spi/nameservice/dns : jdk/src/share/classes/sun/net/spi/nameservice/dns
+jdk/src/jdk.naming.rmi/share/classes/com/sun/jndi/rmi/registry : jdk/src/share/classes/com/sun/jndi/rmi/registry
+jdk/src/jdk.naming.rmi/share/classes/com/sun/jndi/url/rmi : jdk/src/share/classes/com/sun/jndi/url/rmi
+jdk/src/jdk.pack/share/native/common-unpack/bands.cpp : jdk/src/share/native/com/sun/java/util/jar/pack/bands.cpp
+jdk/src/jdk.pack/share/native/common-unpack/bands.h : jdk/src/share/native/com/sun/java/util/jar/pack/bands.h
+jdk/src/jdk.pack/share/native/common-unpack/bytes.cpp : jdk/src/share/native/com/sun/java/util/jar/pack/bytes.cpp
+jdk/src/jdk.pack/share/native/common-unpack/bytes.h : jdk/src/share/native/com/sun/java/util/jar/pack/bytes.h
+jdk/src/jdk.pack/share/native/common-unpack/coding.cpp : jdk/src/share/native/com/sun/java/util/jar/pack/coding.cpp
+jdk/src/jdk.pack/share/native/common-unpack/coding.h : jdk/src/share/native/com/sun/java/util/jar/pack/coding.h
+jdk/src/jdk.pack/share/native/common-unpack/constants.h : jdk/src/share/native/com/sun/java/util/jar/pack/constants.h
+jdk/src/jdk.pack/share/native/common-unpack/defines.h : jdk/src/share/native/com/sun/java/util/jar/pack/defines.h
+jdk/src/jdk.pack/share/native/common-unpack/unpack.cpp : jdk/src/share/native/com/sun/java/util/jar/pack/unpack.cpp
+jdk/src/jdk.pack/share/native/common-unpack/unpack.h : jdk/src/share/native/com/sun/java/util/jar/pack/unpack.h
+jdk/src/jdk.pack/share/native/common-unpack/utils.cpp : jdk/src/share/native/com/sun/java/util/jar/pack/utils.cpp
+jdk/src/jdk.pack/share/native/common-unpack/utils.h : jdk/src/share/native/com/sun/java/util/jar/pack/utils.h
+jdk/src/jdk.pack/share/native/common-unpack/zip.cpp : jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp
+jdk/src/jdk.pack/share/native/common-unpack/zip.h : jdk/src/share/native/com/sun/java/util/jar/pack/zip.h
+jdk/src/jdk.pack/share/native/libjsdt : jdk/src/share/native/sun/tracing/dtrace
+jdk/src/jdk.pack/share/native/libunpack/jni.cpp : jdk/src/share/native/com/sun/java/util/jar/pack/jni.cpp
+jdk/src/jdk.pack/share/native/unpack200/main.cpp : jdk/src/share/native/com/sun/java/util/jar/pack/main.cpp
+jdk/src/jdk.pack/unix/native/libjsdt/jvm_symbols_md.c : jdk/src/solaris/native/sun/tracing/dtrace/jvm_symbols_md.c
+jdk/src/jdk.pack/windows/native/libjsdt/jvm_symbols_md.c : jdk/src/windows/native/sun/tracing/dtrace/jvm_symbols_md.c
+jdk/src/jdk.pack/windows/native/unpack200/unpack200_proto.exe.manifest : jdk/src/windows/resource/unpack200_proto.exe.manifest
+jdk/src/jdk.policytool/share/classes/sun/security/tools/policytool : jdk/src/share/classes/sun/security/tools/policytool
+jdk/src/jdk.rmic/share/classes/sun/rmi/rmic : jdk/src/share/classes/sun/rmi/rmic
+jdk/src/jdk.rmic/share/classes/sun/rmi/rmic/newrmic : jdk/src/share/classes/sun/rmi/rmic/newrmic
+jdk/src/jdk.rmic/share/classes/sun/rmi/rmic/newrmic/jrmp : jdk/src/share/classes/sun/rmi/rmic/newrmic/jrmp
+jdk/src/jdk.rmic/share/classes/sun/rmi/rmic/resources : jdk/src/share/classes/sun/rmi/rmic/resources
+jdk/src/jdk.rmic/share/classes/sun/tools/asm : jdk/src/share/classes/sun/tools/asm
+jdk/src/jdk.rmic/share/classes/sun/tools/javac : jdk/src/share/classes/sun/tools/javac
+jdk/src/jdk.rmic/share/classes/sun/tools/java : jdk/src/share/classes/sun/tools/java
+jdk/src/jdk.rmic/share/classes/sun/tools/tree : jdk/src/share/classes/sun/tools/tree
+jdk/src/jdk.rmic/share/classes/sun/tools/util : jdk/src/share/classes/sun/tools/util
+jdk/src/jdk.sctp/macosx/classes/sun/nio/ch/sctp : jdk/src/macosx/classes/sun/nio/ch/sctp
+jdk/src/jdk.sctp/share/classes/com/sun/nio/sctp : jdk/src/share/classes/com/sun/nio/sctp
+jdk/src/jdk.sctp/share/classes/sun/nio/ch/sctp : jdk/src/share/classes/sun/nio/ch/sctp
+jdk/src/jdk.sctp/unix/classes/sun/nio/ch/sctp : jdk/src/solaris/classes/sun/nio/ch/sctp
+jdk/src/jdk.sctp/unix/native/libsctp : jdk/src/solaris/native/sun/nio/ch/sctp
+jdk/src/jdk.sctp/windows/classes/sun/nio/ch/sctp : jdk/src/windows/classes/sun/nio/ch/sctp
+jdk/src/jdk.security.auth/share/classes/com/sun/security/auth : jdk/src/share/classes/com/sun/security/auth
+jdk/src/jdk.security.auth/share/classes/jaas-overview.html : jdk/src/share/classes/com/sun/security/auth/jaas-overview.html
+jdk/src/jdk.security.auth/unix/native/libjaas : jdk/src/solaris/native/com/sun/security/auth/module
+jdk/src/jdk.security.auth/windows/native/libjaas : jdk/src/windows/native/com/sun/security/auth/module
+jdk/src/jdk.security.jgss/share/classes/com/sun/security/jgss : jdk/src/share/classes/com/sun/security/jgss
+jdk/src/jdk.security.jgss/share/classes/com/sun/security/sasl/gsskerb : jdk/src/share/classes/com/sun/security/sasl/gsskerb
+jdk/src/jdk.snmp/share/classes/com/sun/jmx/snmp : jdk/src/share/classes/com/sun/jmx/snmp
+jdk/src/jdk.snmp/share/classes/sun/management/snmp : jdk/src/share/classes/sun/management/snmp
+jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs : jdk/src/share/classes/jdk/nio/zipfs
+jdk/src/jdk.zipfs/share/classes/META-INF : jdk/src/share/classes/jdk/nio/zipfs/META-INF
+jdk/src/sample/share : jdk/src/share/sample
+langtools/src/java.base/share/classes/jdk/Exported.java : langtools/src/share/classes/jdk/Exported.java
+langtools/src/java.compiler/share/classes/javax/annotation/processing : langtools/src/share/classes/javax/annotation/processing
+langtools/src/java.compiler/share/classes/javax/lang/model : langtools/src/share/classes/javax/lang/model
+langtools/src/java.compiler/share/classes/javax/tools : langtools/src/share/classes/javax/tools
+langtools/src/jdk.compiler/share/classes/com/sun/source : langtools/src/share/classes/com/sun/source
+langtools/src/jdk.compiler/share/classes/com/sun/tools/doclint : langtools/src/share/classes/com/sun/tools/doclint
+langtools/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources : langtools/src/share/classes/com/sun/tools/doclint/resources
+langtools/src/jdk.compiler/share/classes/com/sun/tools/javac : langtools/src/share/classes/com/sun/tools/javac
+langtools/src/jdk.compiler/share/classes/com/sun/tools/javah : langtools/src/share/classes/com/sun/tools/javah
+langtools/src/jdk.compiler/share/classes/com/sun/tools/sjavac : langtools/src/share/classes/com/sun/tools/sjavac
+langtools/src/jdk.javadoc/share/classes/com/sun/javadoc : langtools/src/share/classes/com/sun/javadoc
+langtools/src/jdk.javadoc/share/classes/com/sun/tools/doclets : langtools/src/share/classes/com/sun/tools/doclets
+langtools/src/jdk.javadoc/share/classes/com/sun/tools/javadoc : langtools/src/share/classes/com/sun/tools/javadoc
+langtools/src/jdk.jdeps/share/classes/com/sun/tools/classfile : langtools/src/share/classes/com/sun/tools/classfile
+langtools/src/jdk.jdeps/share/classes/com/sun/tools/javap : langtools/src/share/classes/com/sun/tools/javap
+langtools/src/jdk.jdeps/share/classes/com/sun/tools/jdeps : langtools/src/share/classes/com/sun/tools/jdeps
+langtools/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources : langtools/src/share/classes/com/sun/tools/jdeps/resources
+nashorn/src/jdk.scripting.nashorn/share/classes : nashorn/src
diff --git a/common/bin/unshuffle_patch.sh b/common/bin/unshuffle_patch.sh
new file mode 100644
index 0000000..a61864c
--- /dev/null
+++ b/common/bin/unshuffle_patch.sh
@@ -0,0 +1,202 @@
+#!/bin/sh
+#
+# Copyright (c) 2014, 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.
+#
+
+# Script for updating a patch file as per the shuffled/unshuffled source location.
+
+usage() {
+ echo "Usage: $0 [-h|--help] [-v|--verbose] <repo> <input_patch> <output_patch>"
+ echo "where:"
+ echo " <repo> is one of: corba, jaxp, jaxws, jdk, langtools, nashorn"
+ echo " [Note: patches from other repos do not need updating]"
+ echo " <input_patch> is the input patch file, that needs shuffling/unshuffling"
+ echo " <output_patch> is the updated patch file "
+ echo " "
+ exit 1
+}
+
+SCRIPT_DIR=`dirname $0`
+UNSHUFFLE_LIST=$SCRIPT_DIR"/unshuffle_list.txt"
+
+if [ ! -f "$UNSHUFFLE_LIST" ] ; then
+ echo "FATAL: cannot find $UNSHUFFLE_LIST" >&2
+ exit 1
+fi
+
+vflag="false"
+while [ $# -gt 0 ]
+do
+ case $1 in
+ -h | --help )
+ usage
+ ;;
+
+ -v | --verbose )
+ vflag="true"
+ ;;
+
+ -*) # bad option
+ usage
+ ;;
+
+ * ) # non option
+ break
+ ;;
+ esac
+ shift
+done
+
+# Make sure we have the right number of arguments
+if [ ! $# -eq 3 ] ; then
+ echo "ERROR: Invalid number of arguments." >&2
+ usage
+fi
+
+# Check the given repo
+repos="corba jaxp jaxws jdk langtools nashorn"
+repo="$1"
+found="false"
+for r in $repos ; do
+ if [ $repo = "$r" ] ; then
+ found="true"
+ break;
+ fi
+done
+if [ $found = "false" ] ; then
+ echo "ERROR: Unknown repo: $repo. Should be one of [$repos]." >&2
+ usage
+fi
+
+# Check given input/output files
+input="$2"
+if [ "x$input" = "x-" ] ; then
+ input="/dev/stdin"
+fi
+
+if [ ! -f $input -a "x$input" != "x/dev/stdin" ] ; then
+ echo "ERROR: Cannot find input patch file: $input" >&2
+ exit 1
+fi
+
+output="$3"
+if [ "x$output" = "x-" ] ; then
+ output="/dev/stdout"
+fi
+
+if [ -f $output -a "x$output" != "x/dev/stdout" ] ; then
+ echo "ERROR: Output patch already exists: $output" >&2
+ exit 1
+fi
+
+what="" ## shuffle or unshuffle
+
+verbose() {
+ if [ ${vflag} = "true" ] ; then
+ echo "$@" >&2
+ fi
+}
+
+unshuffle() {
+ line=$@
+ verbose "Attempting to rewrite: \"$line\""
+
+ # Retrieve the file name
+ path=
+ if echo "$line" | egrep '^diff' > /dev/null ; then
+ if ! echo "$line" | egrep '\-\-git' > /dev/null ; then
+ echo "ERROR: Only git patches supported. Please use 'hg export --git ...'." >&2
+ exit 1
+ fi
+ path="`echo "$line" | sed -e s@'diff --git a/'@@ -e s@' b/.*$'@@`"
+ elif echo "$line" | egrep '^\-\-\-' > /dev/null ; then
+ path="`echo "$line" | sed -e s@'--- a/'@@`"
+ elif echo "$line" | egrep '^\+\+\+' > /dev/null ; then
+ path="`echo "$line" | sed s@'+++ b/'@@`"
+ fi
+ verbose "Extracted path: \"$path\""
+
+ # Only source can be shuffled, or unshuffled
+ if ! echo "$path" | egrep '^src/.*' > /dev/null ; then
+ verbose "Not a src path, skipping."
+ echo "$line" >> $output
+ return
+ fi
+
+ # Shuffle or unshuffle?
+ if [ "${what}" = "" ] ; then
+ if echo "$path" | egrep '^src/java\..*|^src/jdk\..*' > /dev/null ; then
+ what="unshuffle"
+ else
+ what="shuffle"
+ fi
+ verbose "Shuffle or unshuffle: $what"
+ fi
+
+ # Find the most specific matches in the shuffle list
+ matches=
+ matchpath="$repo"/"$path"/x
+ while [ "$matchpath" != "" ] ; do
+ matchpath="`echo $matchpath | sed s@'\(.*\)/.*$'@'\1'@`"
+
+ if [ "${what}" = "shuffle" ] ; then
+ pattern=": $matchpath$"
+ else
+ pattern="^$matchpath :"
+ fi
+ verbose "Attempting to find \"$matchpath\""
+ matches=`egrep "$pattern" "$UNSHUFFLE_LIST"`
+ if ! [ "x${matches}" = "x" ] ; then
+ verbose "Got matches: [$matches]"
+ break;
+ fi
+
+ if ! echo "$matchpath" | egrep '.*/.*' > /dev/null ; then
+ break;
+ fi
+ done
+
+ # Rewrite the line, if we have a match
+ if ! [ "x${matches}" = "x" ] ; then
+ shuffled="`echo "$matches" | sed -e s@' : .*'@@g -e s@'^[a-z]*\/'@@`"
+ unshuffled="`echo "$matches" | sed -e s@'.* : '@@g -e s@'^[a-z]*\/'@@`"
+ if [ "${what}" = "shuffle" ] ; then
+ newline="`echo "$line" | sed -e s@"$unshuffled"@"$shuffled"@g`"
+ else
+ newline="`echo "$line" | sed -e s@"$shuffled"@"$unshuffled"@g`"
+ fi
+ verbose "Rewriting to \"$newline\""
+ echo "$newline" >> $output
+ else
+ echo "WARNING: no match found for $path"
+ echo "$line" >> $output
+ fi
+}
+
+while IFS= read -r line
+do
+ if echo "$line" | egrep '^diff|^\-\-\-|^\+\+\+' > /dev/null ; then
+ unshuffle "$line"
+ else
+ printf "%s\n" "$line" >> $output
+ fi
+done < "$input"
diff --git a/common/conf/jib-profiles.js b/common/conf/jib-profiles.js
new file mode 100644
index 0000000..54ccfce
--- /dev/null
+++ b/common/conf/jib-profiles.js
@@ -0,0 +1,1229 @@
+/*
+ * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * This file defines build profiles for the JIB tool and others.
+ *
+ * A build profile defines a set of configuration options and external
+ * dependencies that we for some reason or other care about specifically.
+ * Typically, build profiles are defined for the build configurations we
+ * build regularly.
+ *
+ * Contract against this file from the tools that use it, is to provide
+ * a function on the form:
+ *
+ * getJibProfiles(input)
+ *
+ * which returns an object graph describing the profiles and their
+ * dependencies. The name of the function is based on the name of this
+ * file, minus the extension and the '-', camel cased and prefixed with
+ * 'get'.
+ *
+ *
+ * The parameter 'input' is an object that optionally contains some data.
+ * Optionally because a tool may read the configuration for different purposes.
+ * To initially get a list of available profiles, the active profile may not
+ * yet be known for instance.
+ *
+ * Data that may be set on the input object:
+ *
+ * input.profile = <name of active profile>
+ *
+ * If the active profile is set, the following data from it must also
+ * be provided:
+ *
+ * input.profile
+ * input.build_id
+ * input.target_os
+ * input.target_cpu
+ * input.build_os
+ * input.build_cpu
+ * input.target_platform
+ * input.build_platform
+ * // The build_osenv_* variables describe the unix layer on Windows systems,
+ * // i.e. Cygwin, which may also be 32 or 64 bit.
+ * input.build_osenv
+ * input.build_osenv_cpu
+ * input.build_osenv_platform
+ *
+ * For more complex nested attributes, there is a method "get":
+ *
+ * input.get("<dependency>", "<attribute>")
+ *
+ * Valid attributes are:
+ * install_path
+ * download_path
+ * download_dir
+ *
+ *
+ * The output data generated by this configuration file has the following
+ * format:
+ *
+ * data: {
+ * // Identifies the version of this format to the tool reading it
+ * format_version: "1.0",
+ *
+ * // Name of base outputdir. JIB assumes the actual output dir is formed
+ * // by adding the configuration name: <output_basedir>/<config-name>
+ * output_basedir: "build",
+ * // Configure argument to use to specify configuration name
+ * configuration_configure_arg:
+ * // Make argument to use to specify configuration name
+ * configuration_make_arg:
+ *
+ * profiles: {
+ * <profile-name>: {
+ * // Name of os the profile is built to run on
+ * target_os; <string>
+ * // Name of cpu the profile is built to run on
+ * target_cpu; <string>
+ * // Combination of target_os and target_cpu for convenience
+ * target_platform; <string>
+ * // Name of os the profile is built on
+ * build_os; <string>
+ * // Name of cpu the profile is built on
+ * build_cpu; <string>
+ * // Combination of build_os and build_cpu for convenience
+ * build_platform; <string>
+ *
+ * // List of dependencies needed to build this profile
+ * dependencies: <Array of strings>
+ *
+ * // List of configure args to use for this profile
+ * configure_args: <Array of strings>
+ *
+ * // List of free form labels describing aspects of this profile
+ * labels: <Array of strings>
+ * }
+ * }
+ *
+ * // Dependencies use a Maven like deployment structure
+ * dependencies: {
+ * <dependency-name>: {
+ * // Organization part of path defining this dependency
+ * organization: <string>
+ * // File extension for this dependency
+ * ext: <string>
+ * // Module part of path for defining this dependency,
+ * // defaults to <dependency-name>
+ * module: <string>
+ * // Revision part of path for defining this dependency
+ * revision: <string>
+ *
+ * // List of configure args to add when using this dependency,
+ * // defaults to
+ * // "--with-<dependency-name>=input.get("<dependency-name", "install_path")"
+ * configure_args: <array of strings>
+ *
+ * // Name of environment variable to set when using this dependency
+ * // when running make
+ * environment_name: <string>
+ * // Value of environment variable to set when using this dependency
+ * // when running make
+ * environment_value: <string>
+ *
+ * // Value to add to the PATH variable when using this dependency,
+ * // applies to both make and configure
+ * environment_path: <string>
+ * }
+ *
+ * <dependency-name>: {
+ * // For certain dependencies where a legacy distribution mechanism is
+ * // already in place, the "javare" server layout is also supported
+ * // Indicate that an alternate server source and layout should be used
+ * server: "javare"
+ *
+ * // For "javare", a combination of module, revision,
+ * // build number (optional), files and checksum file is possible for
+ * // artifacts following the standard layout.
+ * module: <string>
+ * revision: <string>
+ * build_number: <string>
+ * checksum_file: <string>
+ * file: <string>
+ *
+ * // For other files, use checksum path and path instead
+ * checksum_path: <string>
+ * path: <string>
+ * }
+ * }
+ * }
+ */
+
+/**
+ * Main entry to generate the profile configuration
+ *
+ * @param input External data to use for generating the configuration
+ * @returns {{}} Profile configuration
+ */
+var getJibProfiles = function (input) {
+
+ var data = {};
+
+ // Identifies the version of this format to the tool reading it.
+ // 1.1 signifies that the publish, publish-src and get-src features are usable.
+ data.format_version = "1.1";
+
+ // Organization, product and version are used when uploading/publishing build results
+ data.organization = "";
+ data.product = "jdk";
+ data.version = getVersion();
+
+ // The base directory for the build output. JIB will assume that the
+ // actual build directory will be <output_basedir>/<configuration>
+ data.output_basedir = "build";
+ // The configure argument to use to specify the name of the configuration
+ data.configuration_configure_arg = "--with-conf-name=";
+ // The make argument to use to specify the name of the configuration
+ data.configuration_make_arg = "CONF_NAME=";
+
+ // Exclude list to use when Jib creates a source bundle
+ data.src_bundle_excludes = "./build webrev .hg */.hg */*/.hg */*/*/.hg";
+ // Include list to use when creating a minimal jib source bundle which
+ // contains just the jib configuration files.
+ data.conf_bundle_includes = "*/conf/jib-profiles.* common/autoconf/version-numbers"
+
+ // Define some common values
+ var common = getJibProfilesCommon(input, data);
+ // Generate the profiles part of the configuration
+ data.profiles = getJibProfilesProfiles(input, common, data);
+ // Generate the dependencies part of the configuration
+ data.dependencies = getJibProfilesDependencies(input, common, data);
+
+ return data;
+};
+
+/**
+ * Generates some common values
+ *
+ * @param input External data to use for generating the configuration
+ * @returns Common values
+ */
+var getJibProfilesCommon = function (input, data) {
+ var common = {};
+
+ common.organization = "jpg.infra.builddeps";
+ common.build_id = getBuildId(input);
+ common.build_number = input.build_number != null ? input.build_number : "0";
+
+ // List of the main profile names used for iteration
+ common.main_profile_names = [
+ "linux-x64", "linux-x86", "macosx-x64", "solaris-x64",
+ "solaris-sparcv9", "windows-x64", "windows-x86",
+ "linux-arm64", "linux-arm-vfp-hflt", "linux-arm-vfp-hflt-dyn"
+ ];
+
+ // These are the base setttings for all the main build profiles.
+ common.main_profile_base = {
+ dependencies: ["boot_jdk", "gnumake", "jtreg"],
+ default_make_targets: ["product-bundles", "test-bundles"],
+ configure_args: concat(["--enable-jtreg-failure-handler"],
+ versionArgs(input, common))
+ };
+ // Extra settings for debug profiles
+ common.debug_suffix = "-debug";
+ common.debug_profile_base = {
+ configure_args: ["--enable-debug"],
+ labels: "debug"
+ };
+ // Extra settings for slowdebug profiles
+ common.slowdebug_suffix = "-slowdebug";
+ common.slowdebug_profile_base = {
+ configure_args: ["--with-debug-level=slowdebug"],
+ labels: "slowdebug"
+ };
+ // Extra settings for openjdk only profiles
+ common.open_suffix = "-open";
+ common.open_profile_base = {
+ configure_args: ["--enable-openjdk-only"],
+ labels: "open"
+ };
+
+ common.configure_args_64bit = ["--with-target-bits=64"];
+ common.configure_args_32bit = ["--with-target-bits=32"];
+
+ /**
+ * Define common artifacts template for all main profiles
+ * @param o - Object containing data for artifacts
+ */
+ common.main_profile_artifacts = function (o) {
+ var jdk_subdir = (o.jdk_subdir != null ? o.jdk_subdir : "jdk-" + data.version);
+ var jre_subdir = (o.jre_subdir != null ? o.jre_subdir : "jre-" + data.version);
+ var pf = o.platform
+ return {
+ artifacts: {
+ jdk: {
+ local: "bundles/\\(jdk.*bin.tar.gz\\)",
+ remote: [
+ "bundles/" + pf + "/jdk-" + data.version + "_" + pf + "_bin.tar.gz",
+ "bundles/" + pf + "/\\1"
+ ],
+ subdir: jdk_subdir,
+ exploded: "images/jdk"
+ },
+ jre: {
+ local: "bundles/\\(jre.*bin.tar.gz\\)",
+ remote: [
+ "bundles/" + pf + "/jre-" + data.version + "_" + pf + "_bin.tar.gz",
+ "bundles/" + pf + "/\\1"
+ ],
+ subdir: jre_subdir,
+ exploded: "images/jre"
+ },
+ test: {
+ local: "bundles/\\(jdk.*bin-tests.tar.gz\\)",
+ remote: [
+ "bundles/" + pf + "/jdk-" + data.version + "_" + pf + "_bin-tests.tar.gz",
+ "bundles/" + pf + "/\\1"
+ ],
+ exploded: "images/test"
+ },
+ jdk_symbols: {
+ local: "bundles/\\(jdk.*bin-symbols.tar.gz\\)",
+ remote: [
+ "bundles/" + pf + "/jdk-" + data.version + "_" + pf + "_bin-symbols.tar.gz",
+ "bundles/" + pf + "/\\1"
+ ],
+ subdir: jdk_subdir,
+ exploded: "images/jdk"
+ },
+ jre_symbols: {
+ local: "bundles/\\(jre.*bin-symbols.tar.gz\\)",
+ remote: [
+ "bundles/" + pf + "/jre-" + data.version + "_" + pf + "_bin-symbols.tar.gz",
+ "bundles/" + pf + "/\\1"
+ ],
+ subdir: jre_subdir,
+ exploded: "images/jre"
+ }
+ }
+ };
+ };
+
+
+ /**
+ * Define common artifacts template for all debug profiles
+ * @param o - Object containing data for artifacts
+ */
+ common.debug_profile_artifacts = function (o) {
+ var jdk_subdir = "jdk-" + data.version + "/fastdebug";
+ var jre_subdir = "jre-" + data.version + "/fastdebug";
+ var pf = o.platform
+ return {
+ artifacts: {
+ jdk: {
+ local: "bundles/\\(jdk.*bin-debug.tar.gz\\)",
+ remote: [
+ "bundles/" + pf + "/jdk-" + data.version + "_" + pf + "_bin-debug.tar.gz",
+ "bundles/" + pf + "/\\1"
+ ],
+ subdir: jdk_subdir,
+ exploded: "images/jdk"
+ },
+ jre: {
+ local: "bundles/\\(jre.*bin-debug.tar.gz\\)",
+ remote: [
+ "bundles/" + pf + "/jre-" + data.version + "_" + pf + "_bin-debug.tar.gz",
+ "bundles/" + pf + "/\\1"
+ ],
+ subdir: jre_subdir,
+ exploded: "images/jre"
+ },
+ test: {
+ local: "bundles/\\(jdk.*bin-tests-debug.tar.gz\\)",
+ remote: [
+ "bundles/" + pf + "/jdk-" + data.version + "_" + pf + "_bin-tests-debug.tar.gz",
+ "bundles/" + pf + "/\\1"
+ ],
+ exploded: "images/test"
+ },
+ jdk_symbols: {
+ local: "bundles/\\(jdk.*bin-debug-symbols.tar.gz\\)",
+ remote: [
+ "bundles/" + pf + "/jdk-" + data.version + "_" + pf + "_bin-debug-symbols.tar.gz",
+ "bundles/" + pf + "/\\1"
+ ],
+ subdir: jdk_subdir,
+ exploded: "images/jdk"
+ },
+ jre_symbols: {
+ local: "bundles/\\(jre.*bin-debug-symbols.tar.gz\\)",
+ remote: [
+ "bundles/" + pf + "/jre-" + data.version + "_" + pf + "_bin-debug-symbols.tar.gz",
+ "bundles/" + pf + "/\\1"
+ ],
+ subdir: jre_subdir,
+ exploded: "images/jre"
+ }
+ }
+ };
+ };
+
+ var boot_jdk_revision = "8";
+ var boot_jdk_subdirpart = "1.8.0";
+ // JDK 8 does not work on sparc M7 cpus, need a newer update when building
+ // on such hardware.
+ if (input.build_cpu == "sparcv9") {
+ var cpu_brand = $EXEC("bash -c \"kstat -m cpu_info | grep brand | head -n1 | awk '{ print \$2 }'\"");
+ if (cpu_brand.trim().match('SPARC-.7')) {
+ boot_jdk_revision = "8u20";
+ boot_jdk_subdirpart = "1.8.0_20";
+ }
+ }
+ common.boot_jdk_revision = boot_jdk_revision;
+ common.boot_jdk_subdirpart = boot_jdk_subdirpart;
+ common.boot_jdk_home = input.get("boot_jdk", "home_path") + "/jdk"
+ + common.boot_jdk_subdirpart
+ + (input.build_os == "macosx" ? ".jdk/Contents/Home" : "");
+ common.boot_jdk_platform = input.build_os + "-"
+ + (input.build_cpu == "x86" ? "i586" : input.build_cpu);
+
+ return common;
+};
+
+/**
+ * Generates the profiles part of the configuration.
+ *
+ * @param input External data to use for generating the configuration
+ * @param common The common values
+ * @returns {{}} Profiles part of the configuration
+ */
+var getJibProfilesProfiles = function (input, common, data) {
+ // Main SE profiles
+ var profiles = {
+
+ "linux-x64": {
+ target_os: "linux",
+ target_cpu: "x64",
+ dependencies: ["devkit", "graphviz", "pandoc"],
+ configure_args: concat(common.configure_args_64bit,
+ "--enable-full-docs", "--with-zlib=system"),
+ default_make_targets: ["docs-bundles"],
+ },
+
+ "linux-x86": {
+ target_os: "linux",
+ target_cpu: "x86",
+ build_cpu: "x64",
+ dependencies: ["devkit"],
+ configure_args: concat(common.configure_args_32bit,
+ "--with-jvm-variants=minimal,server", "--with-zlib=system"),
+ },
+
+ "macosx-x64": {
+ target_os: "macosx",
+ target_cpu: "x64",
+ dependencies: ["devkit"],
+ configure_args: concat(common.configure_args_64bit, "--with-zlib=system"),
+ },
+
+ "solaris-x64": {
+ target_os: "solaris",
+ target_cpu: "x64",
+ dependencies: ["devkit", "cups"],
+ configure_args: concat(common.configure_args_64bit,
+ "--with-zlib=system", "--enable-dtrace"),
+ },
+
+ "solaris-sparcv9": {
+ target_os: "solaris",
+ target_cpu: "sparcv9",
+ dependencies: ["devkit", "cups"],
+ configure_args: concat(common.configure_args_64bit,
+ "--with-zlib=system", "--enable-dtrace"),
+ },
+
+ "windows-x64": {
+ target_os: "windows",
+ target_cpu: "x64",
+ dependencies: ["devkit", "freetype"],
+ configure_args: concat(common.configure_args_64bit),
+ },
+
+ "windows-x86": {
+ target_os: "windows",
+ target_cpu: "x86",
+ build_cpu: "x64",
+ dependencies: ["devkit", "freetype"],
+ configure_args: concat(common.configure_args_32bit),
+ },
+
+ "linux-arm64": {
+ target_os: "linux",
+ target_cpu: "aarch64",
+ build_cpu: "x64",
+ dependencies: ["devkit", "build_devkit", "cups", "headless_stubs"],
+ configure_args: [
+ "--with-cpu-port=arm64",
+ "--with-jvm-variants=server",
+ "--openjdk-target=aarch64-linux-gnu",
+ "--enable-headless-only"
+ ],
+ },
+
+ "linux-arm-vfp-hflt": {
+ target_os: "linux",
+ target_cpu: "arm",
+ build_cpu: "x64",
+ dependencies: ["devkit", "build_devkit", "cups"],
+ configure_args: [
+ "--with-jvm-variants=minimal1,client",
+ "--with-x=" + input.get("devkit", "install_path") + "/arm-linux-gnueabihf/libc/usr/X11R6-PI",
+ "--openjdk-target=arm-linux-gnueabihf",
+ "--with-abi-profile=arm-vfp-hflt"
+ ],
+ },
+
+ // Special version of the SE profile adjusted to be testable on arm64 hardware.
+ "linux-arm-vfp-hflt-dyn": {
+ configure_args: "--with-stdc++lib=dynamic"
+ }
+ };
+ // Let linux-arm-vfp-hflt-dyn inherit everything from linux-arm-vfp-hflt
+ profiles["linux-arm-vfp-hflt-dyn"] = concatObjects(
+ profiles["linux-arm-vfp-hflt-dyn"], profiles["linux-arm-vfp-hflt"]);
+
+ // Add the base settings to all the main profiles
+ common.main_profile_names.forEach(function (name) {
+ profiles[name] = concatObjects(common.main_profile_base, profiles[name]);
+ });
+
+ // Generate debug versions of all the main profiles
+ common.main_profile_names.forEach(function (name) {
+ var debugName = name + common.debug_suffix;
+ profiles[debugName] = concatObjects(profiles[name],
+ common.debug_profile_base);
+ });
+ // Generate slowdebug versions of all the main profiles
+ common.main_profile_names.forEach(function (name) {
+ var debugName = name + common.slowdebug_suffix;
+ profiles[debugName] = concatObjects(profiles[name],
+ common.slowdebug_profile_base);
+ });
+
+ // Generate open only profiles for all the main profiles for JPRT and reference
+ // implementation builds.
+ common.main_profile_names.forEach(function (name) {
+ var openName = name + common.open_suffix;
+ profiles[openName] = concatObjects(profiles[name],
+ common.open_profile_base);
+ });
+ // The open only profiles on linux are used for reference builds and should
+ // produce the compact profile images by default. This adds "profiles" as an
+ // extra default target.
+ var openOnlyProfilesExtra = {
+ "linux-x86-open": {
+ default_make_targets: "profiles-bundles",
+ configure_args: "--with-jvm-variants=client,server"
+ }
+ };
+ profiles = concatObjects(profiles, openOnlyProfilesExtra);
+
+ // Generate debug profiles for the open only profiles
+ common.main_profile_names.forEach(function (name) {
+ var openName = name + common.open_suffix;
+ var openDebugName = openName + common.debug_suffix;
+ profiles[openDebugName] = concatObjects(profiles[openName],
+ common.debug_profile_base);
+ });
+
+ // Profiles for building the zero jvm variant. These are used for verification
+ // in JPRT.
+ var zeroProfiles = {
+ "linux-x64-zero": {
+ target_os: "linux",
+ target_cpu: "x64",
+ dependencies: ["devkit"],
+ configure_args: concat(common.configure_args_64bit, [
+ "--with-zlib=system",
+ "--with-jvm-variants=zero",
+ "--enable-libffi-bundling"
+ ])
+ },
+
+ "linux-x86-zero": {
+ target_os: "linux",
+ target_cpu: "x86",
+ build_cpu: "x64",
+ dependencies: ["devkit"],
+ configure_args: concat(common.configure_args_32bit, [
+ "--with-zlib=system",
+ "--with-jvm-variants=zero",
+ "--enable-libffi-bundling"
+ ])
+ }
+ }
+ profiles = concatObjects(profiles, zeroProfiles);
+
+ // Add the base settings to the zero profiles and generate debug profiles
+ Object.keys(zeroProfiles).forEach(function (name) {
+ var debugName = name + common.debug_suffix;
+ profiles[name] = concatObjects(common.main_profile_base, profiles[name]);
+ profiles[debugName] = concatObjects(profiles[name], common.debug_profile_base);
+ });
+
+ // Profiles used to run tests. Used in JPRT and Mach 5.
+ var testOnlyProfiles = {
+ "run-test-jprt": {
+ target_os: input.build_os,
+ target_cpu: input.build_cpu,
+ dependencies: [ "jtreg", "gnumake", "boot_jdk" ],
+ labels: "test",
+ environment: {
+ "JT_JAVA": common.boot_jdk_home
+ }
+ },
+
+ "run-test": {
+ target_os: input.build_os,
+ target_cpu: input.build_cpu,
+ dependencies: [ "jtreg", "gnumake", "boot_jdk" ],
+ labels: "test",
+ environment: {
+ "JT_JAVA": common.boot_jdk_home
+ }
+ }
+ };
+ profiles = concatObjects(profiles, testOnlyProfiles);
+
+ // Profiles used to run tests using Jib for internal dependencies.
+ var testedProfile = input.testedProfile;
+ if (testedProfile == null) {
+ testedProfile = input.build_os + "-" + input.build_cpu;
+ }
+ var testOnlyProfilesPrebuilt = {
+ "run-test-prebuilt": {
+ src: "src.conf",
+ dependencies: [ "jtreg", "gnumake", "boot_jdk", testedProfile + ".jdk",
+ testedProfile + ".test", "src.full"
+ ],
+ work_dir: input.get("src.full", "install_path") + "/test",
+ environment: {
+ "JT_JAVA": common.boot_jdk_home,
+ "PRODUCT_HOME": input.get(testedProfile + ".jdk", "home_path"),
+ "TEST_IMAGE_DIR": input.get(testedProfile + ".test", "home_path"),
+ "TEST_OUTPUT_DIR": input.src_top_dir
+ },
+ labels: "test"
+ }
+ };
+ // If actually running the run-test-prebuilt profile, verify that the input
+ // variable is valid and if so, add the appropriate target_* values from
+ // the tested profile.
+ if (input.profile == "run-test-prebuilt") {
+ if (profiles[testedProfile] == null) {
+ error("testedProfile is not defined: " + testedProfile);
+ } else {
+ testOnlyProfilesPrebuilt["run-test-prebuilt"]["target_os"]
+ = profiles[testedProfile]["target_os"];
+ testOnlyProfilesPrebuilt["run-test-prebuilt"]["target_cpu"]
+ = profiles[testedProfile]["target_cpu"];
+ }
+ }
+ profiles = concatObjects(profiles, testOnlyProfilesPrebuilt);
+
+ // On macosx add the devkit bin dir to the path in all the run-test profiles.
+ // This gives us a guaranteed working version of lldb for the jtreg failure handler.
+ if (input.build_os == "macosx") {
+ macosxRunTestExtra = {
+ dependencies: [ "devkit" ],
+ environment_path: input.get("devkit", "install_path")
+ + "/Xcode.app/Contents/Developer/usr/bin"
+ }
+ profiles["run-test"] = concatObjects(profiles["run-test"], macosxRunTestExtra);
+ profiles["run-test-jprt"] = concatObjects(profiles["run-test-jprt"], macosxRunTestExtra);
+ profiles["run-test-prebuilt"] = concatObjects(profiles["run-test-prebuilt"], macosxRunTestExtra);
+ }
+
+ //
+ // Define artifacts for profiles
+ //
+ // Macosx bundles are named osx
+ // tar.gz.
+ var artifactData = {
+ "linux-x64": {
+ platform: "linux-x64",
+ },
+ "linux-x86": {
+ platform: "linux-x86",
+ },
+ "macosx-x64": {
+ platform: "osx-x64",
+ jdk_subdir: "jdk-" + data.version + ".jdk/Contents/Home",
+ jre_subdir: "jre-" + data.version + ".jre/Contents/Home"
+ },
+ "solaris-x64": {
+ platform: "solaris-x64",
+ },
+ "solaris-sparcv9": {
+ platform: "solaris-sparcv9",
+ },
+ "windows-x64": {
+ platform: "windows-x64",
+ },
+ "windows-x86": {
+ platform: "windows-x86",
+ },
+ "linux-arm64": {
+ platform: "linux-arm64-vfp-hflt",
+ },
+ "linux-arm-vfp-hflt": {
+ platform: "linux-arm32-vfp-hflt",
+ },
+ "linux-arm-vfp-hflt-dyn": {
+ platform: "linux-arm32-vfp-hflt-dyn",
+ }
+ }
+ // Generate common artifacts for all main profiles
+ Object.keys(artifactData).forEach(function (name) {
+ profiles[name] = concatObjects(profiles[name],
+ common.main_profile_artifacts(artifactData[name]));
+ });
+
+ // Generate common artifacts for all debug profiles
+ Object.keys(artifactData).forEach(function (name) {
+ var debugName = name + common.debug_suffix;
+ profiles[debugName] = concatObjects(profiles[debugName],
+ common.debug_profile_artifacts(artifactData[name]));
+ });
+
+ // Extra profile specific artifacts
+ profilesArtifacts = {
+ "linux-x64": {
+ artifacts: {
+ doc_api_spec: {
+ local: "bundles/\\(jdk.*doc-api-spec.tar.gz\\)",
+ remote: [
+ "bundles/common/jdk-" + data.version + "_doc-api-spec.tar.gz",
+ "bundles/linux-x64/\\1"
+ ],
+ },
+ }
+ },
+
+ "linux-x64-open": {
+ artifacts: {
+ jdk: {
+ local: "bundles/\\(jdk.*bin.tar.gz\\)",
+ remote: [
+ "bundles/openjdk/GPL/linux-x64/jdk-" + data.version
+ + "_linux-x64_bin.tar.gz",
+ "bundles/openjdk/GPL/linux-x64/\\1"
+ ],
+ subdir: "jdk-" + data.version
+ },
+ jre: {
+ local: "bundles/\\(jre.*bin.tar.gz\\)",
+ remote: "bundles/openjdk/GPL/linux-x64/\\1",
+ },
+ test: {
+ local: "bundles/\\(jdk.*bin-tests.tar.gz\\)",
+ remote: [
+ "bundles/openjdk/GPL/linux-x64/jdk-" + data.version
+ + "_linux-x64_bin-tests.tar.gz",
+ "bundles/openjdk/GPL/linux-x64/\\1"
+ ]
+ },
+ jdk_symbols: {
+ local: "bundles/\\(jdk.*bin-symbols.tar.gz\\)",
+ remote: [
+ "bundles/openjdk/GPL/linux-x64/jdk-" + data.version
+ + "_linux-x64_bin-symbols.tar.gz",
+ "bundles/openjdk/GPL/linux-x64/\\1"
+ ],
+ subdir: "jdk-" + data.version
+ },
+ jre_symbols: {
+ local: "bundles/\\(jre.*bin-symbols.tar.gz\\)",
+ remote: "bundles/openjdk/GPL/linux-x64/\\1",
+ },
+ doc_api_spec: {
+ local: "bundles/\\(jdk.*doc-api-spec.tar.gz\\)",
+ remote: "bundles/openjdk/GPL/linux-x64/\\1",
+ },
+ }
+ },
+
+ "linux-x86-open": {
+ artifacts: {
+ jdk: {
+ local: "bundles/\\(jdk.*bin.tar.gz\\)",
+ remote: [
+ "bundles/openjdk/GPL/linux-x86/jdk-" + data.version
+ + "_linux-x86_bin.tar.gz",
+ "bundles/openjdk/GPL/linux-x86/\\1"
+ ],
+ subdir: "jdk-" + data.version
+ },
+ jdk_symbols: {
+ local: "bundles/\\(jdk.*bin-symbols.tar.gz\\)",
+ remote: [
+ "bundles/openjdk/GPL/linux-x86/jdk-" + data.version
+ + "_linux-x86_bin-symbols.tar.gz",
+ "bundles/openjdk/GPL/linux-x86/\\1"
+ ],
+ subdir: "jdk-" + data.version
+ },
+ test: {
+ local: "bundles/\\(jdk.*bin-tests.tar.gz\\)",
+ remote: [
+ "bundles/openjdk/GPL/linux-x86/jdk-" + data.version
+ + "_linux-x86_bin-tests.tar.gz",
+ "bundles/openjdk/GPL/linux-x86/\\1"
+ ]
+ },
+ jre: {
+ // This regexp needs to not match the compact* files below
+ local: "bundles/\\(jre.*[+][0-9]\\{1,\\}_linux-x86_bin.tar.gz\\)",
+ remote: "bundles/openjdk/GPL/profile/linux-x86/\\1",
+ },
+ jre_compact1: {
+ local: "bundles/\\(jre.*-compact1_linux-x86_bin.tar.gz\\)",
+ remote: "bundles/openjdk/GPL/profile/linux-x86/\\1",
+ },
+ jre_compact2: {
+ local: "bundles/\\(jre.*-compact2_linux-x86_bin.tar.gz\\)",
+ remote: "bundles/openjdk/GPL/profile/linux-x86/\\1",
+ },
+ jre_compact3: {
+ local: "bundles/\\(jre.*-compact3_linux-x86_bin.tar.gz\\)",
+ remote: "bundles/openjdk/GPL/profile/linux-x86/\\1",
+ },
+ }
+ },
+
+ "windows-x86-open": {
+ artifacts: {
+ jdk: {
+ local: "bundles/\\(jdk.*bin.tar.gz\\)",
+ remote: [
+ "bundles/openjdk/GPL/windows-x86/jdk-" + data.version
+ + "_windows-x86_bin.tar.gz",
+ "bundles/openjdk/GPL/windows-x86/\\1"
+ ],
+ subdir: "jdk-" + data.version
+ },
+ jre: {
+ local: "bundles/\\(jre.*bin.tar.gz\\)",
+ remote: "bundles/openjdk/GPL/windows-x86/\\1"
+ },
+ test: {
+ local: "bundles/\\(jdk.*bin-tests.tar.gz\\)",
+ remote: [
+ "bundles/openjdk/GPL/windows-x86/jdk-" + data.version
+ + "_windows-x86_bin-tests.tar.gz",
+ "bundles/openjdk/GPL/windows-x86/\\1"
+ ]
+ },
+ jdk_symbols: {
+ local: "bundles/\\(jdk.*bin-symbols.tar.gz\\)",
+ remote: [
+ "bundles/openjdk/GPL/windows-x86/jdk-" + data.version
+ + "_windows-x86_bin-symbols.tar.gz",
+ "bundles/openjdk/GPL/windows-x86/\\1"
+ ],
+ subdir: "jdk-" + data.version
+ },
+ jre_symbols: {
+ local: "bundles/\\(jre.*bin-symbols.tar.gz\\)",
+ remote: "bundles/openjdk/GPL/windows-x86/\\1",
+ }
+ }
+ },
+
+ "linux-x86-open-debug": {
+ artifacts: {
+ jdk: {
+ local: "bundles/\\(jdk.*bin-debug.tar.gz\\)",
+ remote: "bundles/openjdk/GPL/profile/linux-x86/\\1",
+ },
+ jre: {
+ local: "bundles/\\(jre.*bin-debug.tar.gz\\)",
+ remote: "bundles/openjdk/GPL/profile/linux-x86/\\1",
+ },
+ jdk_symbols: {
+ local: "bundles/\\(jdk.*bin-debug-symbols.tar.gz\\)",
+ remote: "bundles/openjdk/GPL/profile/linux-x86/\\1",
+ },
+ }
+ },
+
+ };
+ profiles = concatObjects(profiles, profilesArtifacts);
+
+
+ // Define the reference implementation profiles. These are basically the same
+ // as the open profiles, but upload artifacts to a different location and
+ // are only defined for specific platforms.
+ profiles["linux-x64-ri"] = clone(profiles["linux-x64-open"]);
+ profiles["linux-x86-ri"] = clone(profiles["linux-x86-open"]);
+ profiles["linux-x86-ri-debug"] = clone(profiles["linux-x86-open-debug"]);
+ profiles["windows-x86-ri"] = clone(profiles["windows-x86-open"]);
+
+ // Generate artifacts for ri profiles
+ [ "linux-x64-ri", "linux-x86-ri", "linux-x86-ri-debug", "windows-x86-ri" ]
+ .forEach(function (name) {
+ // Rewrite all remote dirs to "bundles/openjdk/BCL/..."
+ for (artifactName in profiles[name].artifacts) {
+ var artifact = profiles[name].artifacts[artifactName];
+ artifact.remote = replaceAll("\/GPL\/", "/BCL/",
+ (artifact.remote != null ? artifact.remote : artifact.local));
+ }
+ });
+
+ // The windows ri profile needs to add the freetype license file
+ profilesRiFreetype = {
+ "windows-x86-ri": {
+ configure_args: "--with-freetype-license="
+ + input.get("freetype", "install_path")
+ + "/freetype-2.7.1-v120-x86/freetype.md"
+ }
+ };
+ profiles = concatObjects(profiles, profilesRiFreetype);
+
+ // Generate the missing platform attributes
+ profiles = generatePlatformAttributes(profiles);
+ profiles = generateDefaultMakeTargetsConfigureArg(common, profiles);
+ return profiles;
+};
+
+/**
+ * Generate the dependencies part of the configuration
+ *
+ * @param input External data to use for generating the configuration
+ * @param common The common values
+ * @returns {{}} Dependencies part of configuration
+ */
+var getJibProfilesDependencies = function (input, common) {
+
+ var devkit_platform_revisions = {
+ linux_x64: "gcc4.9.2-OEL6.4+1.1",
+ macosx_x64: "Xcode6.3-MacOSX10.9+1.0",
+ solaris_x64: "SS12u4-Solaris11u1+1.0",
+ solaris_sparcv9: "SS12u4-Solaris11u1+1.0",
+ windows_x64: "VS2013SP4+1.0",
+ linux_aarch64: "gcc-linaro-aarch64-linux-gnu-4.8-2013.11_linux+1.0",
+ linux_arm: (input.profile != null && input.profile.indexOf("hflt") >= 0
+ ? "gcc-linaro-arm-linux-gnueabihf-raspbian-2012.09-20120921_linux+1.0"
+ : "arm-linaro-4.7+1.0")
+ };
+
+ var devkit_platform = (input.target_cpu == "x86"
+ ? input.target_os + "_x64"
+ : input.target_platform);
+
+ var dependencies = {
+
+ boot_jdk: {
+ server: "javare",
+ module: "jdk",
+ revision: common.boot_jdk_revision,
+ checksum_file: common.boot_jdk_platform + "/MD5_VALUES",
+ file: common.boot_jdk_platform + "/jdk-" + common.boot_jdk_revision
+ + "-" + common.boot_jdk_platform + ".tar.gz",
+ configure_args: "--with-boot-jdk=" + common.boot_jdk_home,
+ environment_path: common.boot_jdk_home + "/bin"
+ },
+
+ devkit: {
+ organization: common.organization,
+ ext: "tar.gz",
+ module: "devkit-" + devkit_platform,
+ revision: devkit_platform_revisions[devkit_platform]
+ },
+
+ build_devkit: {
+ organization: common.organization,
+ ext: "tar.gz",
+ module: "devkit-" + input.build_platform,
+ revision: devkit_platform_revisions[input.build_platform]
+ },
+
+ cups: {
+ organization: common.organization,
+ ext: "tar.gz",
+ revision: "1.0118+1.0"
+ },
+
+ jtreg: {
+ server: "javare",
+ revision: "4.2",
+ build_number: "b07",
+ checksum_file: "MD5_VALUES",
+ file: "jtreg_bin-4.2.zip",
+ environment_name: "JT_HOME",
+ environment_path: input.get("jtreg", "install_path") + "/jtreg/bin"
+ },
+
+ gnumake: {
+ organization: common.organization,
+ ext: "tar.gz",
+ revision: "4.0+1.0",
+
+ module: (input.build_os == "windows"
+ ? "gnumake-" + input.build_osenv_platform
+ : "gnumake-" + input.build_platform),
+
+ configure_args: (input.build_os == "windows"
+ ? "MAKE=" + input.get("gnumake", "install_path") + "/cygwin/bin/make"
+ : "MAKE=" + input.get("gnumake", "install_path") + "/bin/make"),
+
+ environment_path: (input.build_os == "windows"
+ ? input.get("gnumake", "install_path") + "/cygwin/bin"
+ : input.get("gnumake", "install_path") + "/bin")
+ },
+
+ freetype: {
+ organization: common.organization,
+ ext: "tar.gz",
+ revision: "2.7.1-v120+1.0",
+ module: "freetype-" + input.target_platform
+ },
+
+ graphviz: {
+ organization: common.organization,
+ ext: "tar.gz",
+ revision: "2.38.0-1+1.1",
+ module: "graphviz-" + input.target_platform,
+ configure_args: "DOT=" + input.get("graphviz", "install_path") + "/dot",
+ environment_path: input.get("graphviz", "install_path")
+ },
+
+ pandoc: {
+ organization: common.organization,
+ ext: "tar.gz",
+ revision: "1.17.2+1.0",
+ module: "pandoc-" + input.target_platform,
+ configure_args: "PANDOC=" + input.get("pandoc", "install_path") + "/pandoc/pandoc",
+ environment_path: input.get("pandoc", "install_path") + "/pandoc"
+ },
+ };
+
+ return dependencies;
+};
+
+/**
+ * Generate the missing platform attributes for profiles
+ *
+ * @param profiles Profiles map to generate attributes on
+ * @returns {{}} New profiles map with platform attributes fully filled in
+ */
+var generatePlatformAttributes = function (profiles) {
+ var ret = concatObjects(profiles, {});
+ for (var profile in profiles) {
+ if (ret[profile].build_os == null) {
+ ret[profile].build_os = ret[profile].target_os;
+ }
+ if (ret[profile].build_cpu == null) {
+ ret[profile].build_cpu = ret[profile].target_cpu;
+ }
+ ret[profile].target_platform = ret[profile].target_os + "_" + ret[profile].target_cpu;
+ ret[profile].build_platform = ret[profile].build_os + "_" + ret[profile].build_cpu;
+ }
+ return ret;
+};
+
+/**
+ * The default_make_targets attribute on a profile is not a real Jib attribute.
+ * This function rewrites that attribute into the corresponding configure arg.
+ * Calling this function multiple times on the same profiles object is safe.
+ *
+ * @param common Common values
+ * @param profiles Profiles map to rewrite profiles for
+ * @returns {{}} New map of profiles with the make targets converted
+ */
+var generateDefaultMakeTargetsConfigureArg = function (common, profiles) {
+ var ret = concatObjects(profiles, {});
+ for (var profile in ret) {
+ if (ret[profile]["default_make_targets"] != null) {
+ var targetsString = concat(ret[profile].default_make_targets).join(" ");
+ // Iterate over all configure args and see if --with-default-make-target
+ // is already there and change it, otherwise add it.
+ var found = false;
+ for (var i in ret[profile].configure_args) {
+ var arg = ret[profile].configure_args[i];
+ if (arg != null && arg.startsWith("--with-default-make-target=")) {
+ found = true;
+ ret[profile].configure_args[i]
+ = "--with-default-make-target=" + targetsString;
+ }
+ }
+ if (!found) {
+ ret[profile].configure_args = concat(
+ ret[profile].configure_args,
+ "--with-default-make-target=" + targetsString);
+ }
+ }
+ }
+ return ret;
+}
+
+var getBuildId = function (input) {
+ if (input.build_id != null) {
+ return input.build_id;
+ } else {
+ var topdir = new java.io.File(__DIR__, "../..").getCanonicalFile().getName();
+ var userName = java.lang.System.getProperty("user.name");
+ return userName + "." + topdir;
+ }
+}
+
+/**
+ * Deep clones an object tree.
+ *
+ * @param o Object to clone
+ * @returns {{}} Clone of o
+ */
+var clone = function (o) {
+ return JSON.parse(JSON.stringify(o));
+};
+
+/**
+ * Concatenates all arguments into a new array
+ *
+ * @returns {Array.<T>} New array containing all arguments
+ */
+var concat = function () {
+ return Array.prototype.concat.apply([], arguments);
+};
+
+/**
+ * Takes a String or Array of Strings and does a replace operation on each
+ * of them.
+ *
+ * @param pattern Pattern to look for
+ * @param replacement Replacement text to insert
+ * @param a String or Array of Strings to replace
+ * @returns {Array} Either a new array or a new string depending on the input
+ */
+var replaceAll = function (pattern, replacement, a) {
+ // If a is an array
+ if (Array === a.constructor) {
+ var newA = [];
+ for (var i in a) {
+ newA.push(a[i].replace(pattern, replacement));
+ }
+ return newA;
+ } else {
+ return a.replace(pattern, replacement);
+ }
+};
+
+/**
+ * Deep concatenation of two objects. For each node encountered, merge
+ * the contents with the corresponding node in the other object tree,
+ * treating all strings as array elements.
+ *
+ * @param o1 Object to concatenate
+ * @param o2 Object to concatenate
+ * @returns {{}} New object tree containing the concatenation of o1 and o2
+ */
+var concatObjects = function (o1, o2) {
+ if (o1 == null) {
+ return clone(o2);
+ }
+ if (o2 == null) {
+ return clone(o1);
+ }
+ var ret = {};
+ for (var a in o1) {
+ if (o2[a] == null) {
+ ret[a] = clone(o1[a]);
+ }
+ }
+ for (var a in o2) {
+ if (o1[a] == null) {
+ ret[a] = clone(o2[a]);
+ } else {
+ if (typeof o1[a] == 'string') {
+ ret[a] = clone([o1[a]].concat(o2[a]));
+ } else if (Array.isArray(o1[a])) {
+ ret[a] = clone(o1[a].concat(o2[a]));
+ } else if (typeof o1[a] == 'object') {
+ ret[a] = concatObjects(o1[a], o2[a]);
+ }
+ }
+ }
+ return ret;
+};
+
+/**
+ * Constructs the numeric version string from reading the
+ * common/autoconf/version-numbers file and removing all trailing ".0".
+ *
+ * @param major Override major version
+ * @param minor Override minor version
+ * @param security Override security version
+ * @param patch Override patch version
+ * @returns {String} The numeric version string
+ */
+var getVersion = function (major, minor, security, patch) {
+ var version_numbers = getVersionNumbers();
+ var version = (major != null ? major : version_numbers.get("DEFAULT_VERSION_MAJOR"))
+ + "." + (minor != null ? minor : version_numbers.get("DEFAULT_VERSION_MINOR"))
+ + "." + (security != null ? security : version_numbers.get("DEFAULT_VERSION_SECURITY"))
+ + "." + (patch != null ? patch : version_numbers.get("DEFAULT_VERSION_PATCH"));
+ while (version.match(".*\\.0$")) {
+ version = version.substring(0, version.length - 2);
+ }
+ return version;
+};
+
+/**
+ * Constructs the common version configure args based on build type and
+ * other version inputs
+ */
+var versionArgs = function(input, common) {
+ var args = ["--with-version-build=" + common.build_number];
+ if (input.build_type == "promoted") {
+ args = concat(args,
+ // This needs to be changed when we start building release candidates
+ "--with-version-pre=ea",
+ "--without-version-opt");
+ } else {
+ args = concat(args, "--with-version-opt=" + common.build_id);
+ }
+ return args;
+}
+
+// Properties representation of the common/autoconf/version-numbers file. Lazily
+// initiated by the function below.
+var version_numbers;
+
+/**
+ * Read the common/autoconf/version-numbers file into a Properties object.
+ *
+ * @returns {java.utilProperties}
+ */
+var getVersionNumbers = function () {
+ // Read version information from common/autoconf/version-numbers
+ if (version_numbers == null) {
+ version_numbers = new java.util.Properties();
+ var stream = new java.io.FileInputStream(__DIR__ + "/../../common/autoconf/version-numbers");
+ version_numbers.load(stream);
+ stream.close();
+ }
+ return version_numbers;
+}
diff --git a/common/doc/building.html b/common/doc/building.html
new file mode 100644
index 0000000..48ddbc1
--- /dev/null
+++ b/common/doc/building.html
@@ -0,0 +1,960 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name="generator" content="pandoc">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
+ <title>Building OpenJDK</title>
+ <style type="text/css">code{white-space: pre;}</style>
+ <link rel="stylesheet" href="../../jdk/make/data/docs-resources/resources/jdk-default.css">
+ <!--[if lt IE 9]>
+ <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
+ <![endif]-->
+ <style type="text/css">pre, code, tt { color: #1d6ae5; }</style>
+</head>
+<body>
+<header>
+<h1 class="title">Building OpenJDK</h1>
+</header>
+<nav id="TOC">
+<ul>
+<li><a href="#tldr-instructions-for-the-impatient">TL;DR (Instructions for the Impatient)</a></li>
+<li><a href="#introduction">Introduction</a></li>
+<li><a href="#getting-the-source-code">Getting the Source Code</a><ul>
+<li><a href="#special-considerations">Special Considerations</a></li>
+<li><a href="#using-get_source.sh">Using get_source.sh</a></li>
+<li><a href="#using-hgforest.sh">Using hgforest.sh</a></li>
+<li><a href="#using-the-trees-extension">Using the Trees Extension</a></li>
+</ul></li>
+<li><a href="#build-hardware-requirements">Build Hardware Requirements</a><ul>
+<li><a href="#building-on-x86">Building on x86</a></li>
+<li><a href="#building-on-sparc">Building on sparc</a></li>
+<li><a href="#building-on-armaarch64">Building on arm/aarch64</a></li>
+</ul></li>
+<li><a href="#operating-system-requirements">Operating System Requirements</a><ul>
+<li><a href="#windows">Windows</a></li>
+<li><a href="#solaris">Solaris</a></li>
+<li><a href="#macos">macOS</a></li>
+<li><a href="#linux">Linux</a></li>
+<li><a href="#aix">AIX</a></li>
+</ul></li>
+<li><a href="#native-compiler-toolchain-requirements">Native Compiler (Toolchain) Requirements</a><ul>
+<li><a href="#gcc">gcc</a></li>
+<li><a href="#clang">clang</a></li>
+<li><a href="#apple-xcode">Apple Xcode</a></li>
+<li><a href="#oracle-solaris-studio">Oracle Solaris Studio</a></li>
+<li><a href="#microsoft-visual-studio">Microsoft Visual Studio</a></li>
+<li><a href="#ibm-xl-cc">IBM XL C/C++</a></li>
+</ul></li>
+<li><a href="#boot-jdk-requirements">Boot JDK Requirements</a><ul>
+<li><a href="#jdk-8-on-linux">JDK 8 on Linux</a></li>
+<li><a href="#jdk-8-on-windows">JDK 8 on Windows</a></li>
+<li><a href="#jdk-8-on-macos">JDK 8 on macOS</a></li>
+<li><a href="#jdk-8-on-aix">JDK 8 on AIX</a></li>
+</ul></li>
+<li><a href="#external-library-requirements">External Library Requirements</a><ul>
+<li><a href="#freetype">FreeType</a></li>
+<li><a href="#cups">CUPS</a></li>
+<li><a href="#x11">X11</a></li>
+<li><a href="#alsa">ALSA</a></li>
+<li><a href="#libffi">libffi</a></li>
+<li><a href="#libelf">libelf</a></li>
+</ul></li>
+<li><a href="#other-tooling-requirements">Other Tooling Requirements</a><ul>
+<li><a href="#gnu-make">GNU Make</a></li>
+<li><a href="#gnu-bash">GNU Bash</a></li>
+<li><a href="#autoconf">Autoconf</a></li>
+</ul></li>
+<li><a href="#running-configure">Running Configure</a><ul>
+<li><a href="#common-configure-arguments">Common Configure Arguments</a></li>
+<li><a href="#configure-control-variables">Configure Control Variables</a></li>
+</ul></li>
+<li><a href="#running-make">Running Make</a><ul>
+<li><a href="#common-make-targets">Common Make Targets</a></li>
+<li><a href="#make-control-variables">Make Control Variables</a></li>
+</ul></li>
+<li><a href="#running-tests">Running Tests</a></li>
+<li><a href="#cross-compiling">Cross-compiling</a><ul>
+<li><a href="#boot-jdk-and-build-jdk">Boot JDK and Build JDK</a></li>
+<li><a href="#specifying-the-target-platform">Specifying the Target Platform</a></li>
+<li><a href="#toolchain-considerations">Toolchain Considerations</a></li>
+<li><a href="#native-libraries">Native Libraries</a></li>
+<li><a href="#building-for-armaarch64">Building for ARM/aarch64</a></li>
+<li><a href="#verifying-the-build">Verifying the Build</a></li>
+</ul></li>
+<li><a href="#build-performance">Build Performance</a><ul>
+<li><a href="#disk-speed">Disk Speed</a></li>
+<li><a href="#virus-checking">Virus Checking</a></li>
+<li><a href="#ccache">Ccache</a></li>
+<li><a href="#precompiled-headers">Precompiled Headers</a></li>
+<li><a href="#icecc-icecream">Icecc / icecream</a></li>
+<li><a href="#using-sjavac">Using sjavac</a></li>
+<li><a href="#building-the-right-target">Building the Right Target</a></li>
+</ul></li>
+<li><a href="#troubleshooting">Troubleshooting</a><ul>
+<li><a href="#locating-the-source-of-the-error">Locating the Source of the Error</a></li>
+<li><a href="#fixing-unexpected-build-failures">Fixing Unexpected Build Failures</a></li>
+<li><a href="#specific-build-issues">Specific Build Issues</a></li>
+<li><a href="#getting-help">Getting Help</a></li>
+</ul></li>
+<li><a href="#hints-and-suggestions-for-advanced-users">Hints and Suggestions for Advanced Users</a><ul>
+<li><a href="#setting-up-a-forest-for-pushing-changes-defpath">Setting Up a Forest for Pushing Changes (defpath)</a></li>
+<li><a href="#bash-completion">Bash Completion</a></li>
+<li><a href="#using-multiple-configurations">Using Multiple Configurations</a></li>
+<li><a href="#handling-reconfigurations">Handling Reconfigurations</a></li>
+<li><a href="#using-fine-grained-make-targets">Using Fine-Grained Make Targets</a></li>
+<li><a href="#learn-about-mercurial">Learn About Mercurial</a></li>
+</ul></li>
+<li><a href="#understanding-the-build-system">Understanding the Build System</a><ul>
+<li><a href="#configurations">Configurations</a></li>
+<li><a href="#build-output-structure">Build Output Structure</a></li>
+<li><a href="#fixpath">Fixpath</a></li>
+<li><a href="#native-debug-symbols">Native Debug Symbols</a></li>
+<li><a href="#autoconf-details">Autoconf Details</a></li>
+<li><a href="#developing-the-build-system-itself">Developing the Build System Itself</a></li>
+</ul></li>
+<li><a href="#contributing-to-openjdk">Contributing to OpenJDK</a></li>
+</ul>
+</nav>
+<h2 id="tldr-instructions-for-the-impatient">TL;DR (Instructions for the Impatient)</h2>
+<p>If you are eager to try out building OpenJDK, these simple steps works most of the time. They assume that you have installed Mercurial (and Cygwin if running on Windows) and cloned the top-level OpenJDK repository that you want to build.</p>
+<ol type="1">
+<li><p><a href="#getting-the-source-code">Get the complete source code</a>:<br />
+<code>bash get_source.sh</code></p></li>
+<li><p><a href="#running-configure">Run configure</a>:<br />
+<code>bash configure</code></p>
+<p>If <code>configure</code> fails due to missing dependencies (to either the <a href="#native-compiler-toolchain-requirements">toolchain</a>, <a href="#external-library-requirements">external libraries</a> or the <a href="#boot-jdk-requirements">boot JDK</a>), most of the time it prints a suggestion on how to resolve the situation on your platform. Follow the instructions, and try running <code>bash configure</code> again.</p></li>
+<li><p><a href="#running-make">Run make</a>:<br />
+<code>make images</code></p></li>
+<li><p>Verify your newly built JDK:<br />
+<code>./build/*/images/jdk/bin/java -version</code></p></li>
+<li><p><a href="##running-tests">Run basic tests</a>:<br />
+<code>make run-test-tier1</code></p></li>
+</ol>
+<p>If any of these steps failed, or if you want to know more about build requirements or build functionality, please continue reading this document.</p>
+<h2 id="introduction">Introduction</h2>
+<p>OpenJDK is a complex software project. Building it requires a certain amount of technical expertise, a fair number of dependencies on external software, and reasonably powerful hardware.</p>
+<p>If you just want to use OpenJDK and not build it yourself, this document is not for you. See for instance <a href="http://openjdk.java.net/install">OpenJDK installation</a> for some methods of installing a prebuilt OpenJDK.</p>
+<h2 id="getting-the-source-code">Getting the Source Code</h2>
+<p>OpenJDK uses <a href="http://www.mercurial-scm.org">Mercurial</a> for source control. The source code is contained not in a single Mercurial repository, but in a tree (&quot;forest&quot;) of interrelated repositories. You will need to check out all of the repositories to be able to build OpenJDK. To assist you in dealing with this somewhat unusual arrangement, there are multiple tools available, which are explained below.</p>
+<p>In any case, make sure you are getting the correct version. At the <a href="http://hg.openjdk.java.net/">OpenJDK Mercurial server</a> you can see a list of all available forests. If you want to build an older version, e.g. JDK 8, it is recommended that you get the <code>jdk8u</code> forest, which contains incremental updates, instead of the <code>jdk8</code> forest, which was frozen at JDK 8 GA.</p>
+<p>If you are new to Mercurial, a good place to start is the <a href="http://www.mercurial-scm.org/guide">Mercurial Beginner's Guide</a>. The rest of this document assumes a working knowledge of Mercurial.</p>
+<h3 id="special-considerations">Special Considerations</h3>
+<p>For a smooth building experience, it is recommended that you follow these rules on where and how to check out the source code.</p>
+<ul>
+<li><p>Do not check out the source code in a path which contains spaces. Chances are the build will not work. This is most likely to be an issue on Windows systems.</p></li>
+<li><p>Do not check out the source code in a path which has a very long name or is nested many levels deep. Chances are you will hit an OS limitation during the build.</p></li>
+<li><p>Put the source code on a local disk, not a network share. If possible, use an SSD. The build process is very disk intensive, and having slow disk access will significantly increase build times. If you need to use a network share for the source code, see below for suggestions on how to keep the build artifacts on a local disk.</p></li>
+<li><p>On Windows, extra care must be taken to make sure the <a href="#cygwin">Cygwin</a> environment is consistent. It is recommended that you follow this procedure:</p>
+<ul>
+<li><p>Create the directory that is going to contain the top directory of the OpenJDK clone by using the <code>mkdir</code> command in the Cygwin bash shell. That is, do <em>not</em> create it using Windows Explorer. This will ensure that it will have proper Cygwin attributes, and that it's children will inherit those attributes.</p></li>
+<li><p>Do not put the OpenJDK clone in a path under your Cygwin home directory. This is especially important if your user name contains spaces and/or mixed upper and lower case letters.</p></li>
+<li><p>Clone the OpenJDK repository using the Cygwin command line <code>hg</code> client as instructed in this document. That is, do <em>not</em> use another Mercurial client such as TortoiseHg.</p></li>
+</ul>
+<p>Failure to follow this procedure might result in hard-to-debug build problems.</p></li>
+</ul>
+<h3 id="using-get_source.sh">Using get_source.sh</h3>
+<p>The simplest way to get the entire forest is probably to clone the top-level repository and then run the <code>get_source.sh</code> script, like this:</p>
+<pre><code>hg clone http://hg.openjdk.java.net/jdk9/jdk9
+cd jdk9
+bash get_source.sh</code></pre>
+<p>The first time this is run, it will clone all the sub-repositories. Any subsequent execution of the script will update all sub-repositories to the latest revision.</p>
+<h3 id="using-hgforest.sh">Using hgforest.sh</h3>
+<p>The <code>hgforest.sh</code> script is more expressive than <code>get_source.sh</code>. It takes any number of arguments, and runs <code>hg</code> with those arguments on each sub-repository in the forest. The <code>get_source.sh</code> script is basically a simple wrapper that runs either <code>hgforest.sh clone</code> or <code>hgforest.sh pull -u</code>.</p>
+<ul>
+<li><p>Cloning the forest:</p>
+<pre><code>hg clone http://hg.openjdk.java.net/jdk9/jdk9
+cd jdk9
+bash common/bin/hgforest.sh clone</code></pre></li>
+<li><p>Pulling and updating the forest:</p>
+<pre><code>bash common/bin/hgforest.sh pull -u</code></pre></li>
+<li><p>Merging over the entire forest:</p>
+<pre><code>bash common/bin/hgforest.sh merge</code></pre></li>
+</ul>
+<h3 id="using-the-trees-extension">Using the Trees Extension</h3>
+<p>The trees extension is a Mercurial add-on that helps you deal with the forest. More information is available on the <a href="http://openjdk.java.net/projects/code-tools/trees">Code Tools trees page</a>.</p>
+<h4 id="installing-the-extension">Installing the Extension</h4>
+<p>Install the extension by cloning <code>http://hg.openjdk.java.net/code-tools/trees</code> and updating your <code>.hgrc</code> file. Here's one way to do this:</p>
+<pre><code>cd ~
+mkdir hg-ext
+cd hg-ext
+hg clone http://hg.openjdk.java.net/code-tools/trees
+cat &lt;&lt; EOT &gt;&gt; ~/.hgrc
+[extensions]
+trees=~/hg-ext/trees/trees.py
+EOT</code></pre>
+<h4 id="initializing-the-tree">Initializing the Tree</h4>
+<p>The trees extension needs to know the structure of the forest. If you have already cloned the entire forest using another method, you can initialize the forest like this:</p>
+<pre><code>hg tconf --set --walk --depth</code></pre>
+<p>Or you can clone the entire forest at once, if you substitute <code>clone</code> with <code>tclone</code> when cloning the top-level repository, e.g. like this:</p>
+<pre><code>hg tclone http://hg.openjdk.java.net/jdk9/jdk9</code></pre>
+<p>In this case, the forest will be properly initialized from the start.</p>
+<h4 id="other-operations">Other Operations</h4>
+<p>The trees extensions supplement many common operations with a trees version by prefixing a <code>t</code> to the normal Mercurial command, e.g. <code>tcommit</code>, <code>tstatus</code> or <code>tmerge</code>. For instance, to update the entire forest:</p>
+<pre><code>hg tpull -u</code></pre>
+<h2 id="build-hardware-requirements">Build Hardware Requirements</h2>
+<p>OpenJDK is a massive project, and require machines ranging from decent to powerful to be able to build in a reasonable amount of time, or to be able to complete a build at all.</p>
+<p>We <em>strongly</em> recommend usage of an SSD disk for the build, since disk speed is one of the limiting factors for build performance.</p>
+<h3 id="building-on-x86">Building on x86</h3>
+<p>At a minimum, a machine with 2-4 cores is advisable, as well as 2-4 GB of RAM. (The more cores to use, the more memory you need.) At least 6 GB of free disk space is required (8 GB minimum for building on Solaris).</p>
+<p>Even for 32-bit builds, it is recommended to use a 64-bit build machine, and instead create a 32-bit target using <code>--with-target-bits=32</code>.</p>
+<h3 id="building-on-sparc">Building on sparc</h3>
+<p>At a minimum, a machine with 4 cores is advisable, as well as 4 GB of RAM. (The more cores to use, the more memory you need.) At least 8 GB of free disk space is required.</p>
+<h3 id="building-on-armaarch64">Building on arm/aarch64</h3>
+<p>This is not recommended. Instead, see the section on <a href="#cross-compiling">Cross-compiling</a>.</p>
+<h2 id="operating-system-requirements">Operating System Requirements</h2>
+<p>The mainline OpenJDK project supports Linux, Solaris, macOS, AIX and Windows. Support for other operating system, e.g. BSD, exists in separate &quot;port&quot; projects.</p>
+<p>In general, OpenJDK can be built on a wide range of versions of these operating systems, but the further you deviate from what is tested on a daily basis, the more likely you are to run into problems.</p>
+<p>This table lists the OS versions used by Oracle when building JDK 9. Such information is always subject to change, but this table is up to date at the time of writing.</p>
+<table>
+<thead>
+<tr class="header">
+<th style="text-align: left;">Operating system</th>
+<th style="text-align: left;">Vendor/version used</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: left;">Linux</td>
+<td style="text-align: left;">Oracle Enterprise Linux 6.4 / 7.1 (using kernel 3.8.13)</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">Solaris</td>
+<td style="text-align: left;">Solaris 11.1 SRU 21.4.1 / 11.2 SRU 5.5</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">macOS</td>
+<td style="text-align: left;">Mac OS X 10.9 (Mavericks) / 10.10 (Yosemite)</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">Windows</td>
+<td style="text-align: left;">Windows Server 2012 R2</td>
+</tr>
+</tbody>
+</table>
+<p>The double version numbers for Linux, Solaris and macOS is due to the hybrid model used at Oracle, where header files and external libraries from an older version is used when building on a more modern version of the OS.</p>
+<p>The Build Group has a wiki page with <a href="https://wiki.openjdk.java.net/display/Build/Supported+Build+Platforms">Supported Build Platforms</a>. From time to time, this is updated by the community to list successes or failures of building on different platforms.</p>
+<h3 id="windows">Windows</h3>
+<p>Windows XP is not a supported platform, but all newer Windows should be able to build OpenJDK.</p>
+<p>On Windows, it is important that you pay attention to the instructions in the <a href="#special-considerations">Special Considerations</a>.</p>
+<p>Windows is the only non-POSIX OS supported by OpenJDK, and as such, requires some extra care. A POSIX support layer is required to build on Windows. For OpenJDK 9, the only supported such layer is Cygwin. (Msys is no longer supported due to a too old bash; msys2 and the new Windows Subsystem for Linux (WSL) would likely be possible to support in a future version but that would require a community effort to implement.)</p>
+<p>Internally in the build system, all paths are represented as Unix-style paths, e.g. <code>/cygdrive/c/hg/jdk9/Makefile</code> rather than <code>C:\hg\jdk9\Makefile</code>. This rule also applies to input to the build system, e.g. in arguments to <code>configure</code>. So, use <code>--with-freetype=/cygdrive/c/freetype</code> rather than <code>--with-freetype=c:\freetype</code>. For details on this conversion, see the section on <a href="#fixpath">Fixpath</a>.</p>
+<h4 id="cygwin">Cygwin</h4>
+<p>A functioning <a href="http://www.cygwin.com/">Cygwin</a> environment is thus required for building OpenJDK on Windows. If you have a 64-bit OS, we strongly recommend using the 64-bit version of Cygwin.</p>
+<p><strong>Note:</strong> Cygwin has a model of continuously updating all packages without any easy way to install or revert to a specific version of a package. This means that whenever you add or update a package in Cygwin, you might (inadvertently) update tools that are used by the OpenJDK build process, and that can cause unexpected build problems.</p>
+<p>OpenJDK requires GNU Make 4.0 or greater on Windows. This is usually not a problem, since Cygwin currently only distributes GNU Make at a version above 4.0.</p>
+<p>Apart from the basic Cygwin installation, the following packages must also be installed:</p>
+<ul>
+<li><code>make</code></li>
+<li><code>zip</code></li>
+<li><code>unzip</code></li>
+</ul>
+<p>Often, you can install these packages using the following command line:</p>
+<pre><code>&lt;path to Cygwin setup&gt;/setup-x86_64 -q -P make -P unzip -P zip</code></pre>
+<p>Unfortunately, Cygwin can be unreliable in certain circumstances. If you experience build tool crashes or strange issues when building on Windows, please check the Cygwin FAQ on the <a href="https://cygwin.com/faq/faq.html#faq.using.bloda">&quot;BLODA&quot; list</a> and the section on <a href="https://cygwin.com/faq/faq.html#faq.using.fixing-fork-failures">fork() failures</a>.</p>
+<h3 id="solaris">Solaris</h3>
+<p>See <code>make/devkit/solaris11.1-package-list.txt</code> for a list of recommended packages to install when building on Solaris. The versions specified in this list is the versions used by the daily builds at Oracle, and is likely to work properly.</p>
+<p>Older versions of Solaris shipped a broken version of <code>objcopy</code>. At least version 2.21.1 is needed, which is provided by Solaris 11 Update 1. Objcopy is needed if you want to have external debug symbols. Please make sure you are using at least version 2.21.1 of objcopy, or that you disable external debug symbols.</p>
+<h3 id="macos">macOS</h3>
+<p>Apple is using a quite aggressive scheme of pushing OS updates, and coupling these updates with required updates of Xcode. Unfortunately, this makes it difficult for a project like OpenJDK to keep pace with a continuously updated machine running macOS. See the section on <a href="#apple-xcode">Apple Xcode</a> on some strategies to deal with this.</p>
+<p>It is recommended that you use at least Mac OS X 10.9 (Mavericks). At the time of writing, OpenJDK has been successfully compiled on macOS versions up to 10.12.5 (Sierra), using XCode 8.3.2 and <code>--disable-warnings-as-errors</code>.</p>
+<p>The standard macOS environment contains the basic tooling needed to build, but for external libraries a package manager is recommended. OpenJDK uses <a href="https://brew.sh/">homebrew</a> in the examples, but feel free to use whatever manager you want (or none).</p>
+<h3 id="linux">Linux</h3>
+<p>It is often not much problem to build OpenJDK on Linux. The only general advice is to try to use the compilers, external libraries and header files as provided by your distribution.</p>
+<p>The basic tooling is provided as part of the core operating system, but you will most likely need to install developer packages.</p>
+<p>For apt-based distributions (Debian, Ubuntu, etc), try this:</p>
+<pre><code>sudo apt-get install build-essential</code></pre>
+<p>For rpm-based distributions (Fedora, Red Hat, etc), try this:</p>
+<pre><code>sudo yum groupinstall &quot;Development Tools&quot;</code></pre>
+<h3 id="aix">AIX</h3>
+<p>The regular builds by SAP is using AIX version 7.1, but AIX 5.3 is also supported. See the <a href="http://cr.openjdk.java.net/~simonis/ppc-aix-port">OpenJDK PowerPC Port Status Page</a> for details.</p>
+<h2 id="native-compiler-toolchain-requirements">Native Compiler (Toolchain) Requirements</h2>
+<p>Large portions of OpenJDK consists of native code, that needs to be compiled to be able to run on the target platform. In theory, toolchain and operating system should be independent factors, but in practice there's more or less a one-to-one correlation between target operating system and toolchain.</p>
+<table>
+<thead>
+<tr class="header">
+<th style="text-align: left;">Operating system</th>
+<th style="text-align: left;">Supported toolchain</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: left;">Linux</td>
+<td style="text-align: left;">gcc, clang</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">macOS</td>
+<td style="text-align: left;">Apple Xcode (using clang)</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">Solaris</td>
+<td style="text-align: left;">Oracle Solaris Studio</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">AIX</td>
+<td style="text-align: left;">IBM XL C/C++</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">Windows</td>
+<td style="text-align: left;">Microsoft Visual Studio</td>
+</tr>
+</tbody>
+</table>
+<p>Please see the individual sections on the toolchains for version recommendations. As a reference, these versions of the toolchains are used, at the time of writing, by Oracle for the daily builds of OpenJDK. It should be possible to compile OpenJDK with both older and newer versions, but the closer you stay to this list, the more likely you are to compile successfully without issues.</p>
+<table>
+<thead>
+<tr class="header">
+<th style="text-align: left;">Operating system</th>
+<th style="text-align: left;">Toolchain version</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: left;">Linux</td>
+<td style="text-align: left;">gcc 4.9.2</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">macOS</td>
+<td style="text-align: left;">Apple Xcode 6.3 (using clang 6.1.0)</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">Solaris</td>
+<td style="text-align: left;">Oracle Solaris Studio 12.4 (with compiler version 5.13)</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">Windows</td>
+<td style="text-align: left;">Microsoft Visual Studio 2013 update 4</td>
+</tr>
+</tbody>
+</table>
+<h3 id="gcc">gcc</h3>
+<p>The minimum accepted version of gcc is 4.3. Older versions will not be accepted by <code>configure</code>.</p>
+<p>However, gcc 4.3 is quite old and OpenJDK is not regularly tested on this version, so it is recommended to use a more modern gcc.</p>
+<p>OpenJDK 9 includes patches that should allow gcc 6 to compile, but this should be considered experimental.</p>
+<p>In general, any version between these two should be usable.</p>
+<h3 id="clang">clang</h3>
+<p>The minimum accepted version of clang is 3.2. Older versions will not be accepted by <code>configure</code>.</p>
+<p>To use clang instead of gcc on Linux, use <code>--with-toolchain-type=clang</code>.</p>
+<h3 id="apple-xcode">Apple Xcode</h3>
+<p>The oldest supported version of Xcode is 5.</p>
+<p>You will need the Xcode command lines developers tools to be able to build OpenJDK. (Actually, <em>only</em> the command lines tools are needed, not the IDE.) The simplest way to install these is to run:</p>
+<pre><code>xcode-select --install</code></pre>
+<p>It is advisable to keep an older version of Xcode for building OpenJDK when updating Xcode. This <a href="http://iosdevelopertips.com/xcode/install-multiple-versions-of-xcode.html">blog page</a> has good suggestions on managing multiple Xcode versions. To use a specific version of Xcode, use <code>xcode-select -s</code> before running <code>configure</code>, or use <code>--with-toolchain-path</code> to point to the version of Xcode to use, e.g. <code>configure --with-toolchain-path=/Applications/Xcode5.app/Contents/Developer/usr/bin</code></p>
+<p>If you have recently (inadvertently) updated your OS and/or Xcode version, and OpenJDK can no longer be built, please see the section on <a href="#problems-with-the-build-environment">Problems with the Build Environment</a>, and <a href="#getting-help">Getting Help</a> to find out if there are any recent, non-merged patches available for this update.</p>
+<h3 id="oracle-solaris-studio">Oracle Solaris Studio</h3>
+<p>The minimum accepted version of the Solaris Studio compilers is 5.13 (corresponding to Solaris Studio 12.4). Older versions will not be accepted by configure.</p>
+<p>The Solaris Studio installation should contain at least these packages:</p>
+<table>
+<thead>
+<tr class="header">
+<th style="text-align: left;">Package</th>
+<th style="text-align: left;">Version</th>
+</tr>
+</thead>
+<tbody>
+<tr class="odd">
+<td style="text-align: left;">developer/solarisstudio-124/backend</td>
+<td style="text-align: left;">12.4-1.0.6.0</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">developer/solarisstudio-124/c++</td>
+<td style="text-align: left;">12.4-1.0.10.0</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">developer/solarisstudio-124/cc</td>
+<td style="text-align: left;">12.4-1.0.4.0</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">developer/solarisstudio-124/library/c++-libs</td>
+<td style="text-align: left;">12.4-1.0.10.0</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">developer/solarisstudio-124/library/math-libs</td>
+<td style="text-align: left;">12.4-1.0.0.1</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">developer/solarisstudio-124/library/studio-gccrt</td>
+<td style="text-align: left;">12.4-1.0.0.1</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">developer/solarisstudio-124/studio-common</td>
+<td style="text-align: left;">12.4-1.0.0.1</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">developer/solarisstudio-124/studio-ja</td>
+<td style="text-align: left;">12.4-1.0.0.1</td>
+</tr>
+<tr class="odd">
+<td style="text-align: left;">developer/solarisstudio-124/studio-legal</td>
+<td style="text-align: left;">12.4-1.0.0.1</td>
+</tr>
+<tr class="even">
+<td style="text-align: left;">developer/solarisstudio-124/studio-zhCN</td>
+<td style="text-align: left;">12.4-1.0.0.1</td>
+</tr>
+</tbody>
+</table>
+<p>Compiling with Solaris Studio can sometimes be finicky. This is the exact version used by Oracle, which worked correctly at the time of writing:</p>
+<pre><code>$ cc -V
+cc: Sun C 5.13 SunOS_i386 2014/10/20
+$ CC -V
+CC: Sun C++ 5.13 SunOS_i386 151846-10 2015/10/30</code></pre>
+<h3 id="microsoft-visual-studio">Microsoft Visual Studio</h3>
+<p>The minimum accepted version of Visual Studio is 2010. Older versions will not be accepted by <code>configure</code>. The maximum accepted version of Visual Studio is 2013.</p>
+<p>If you have multiple versions of Visual Studio installed, <code>configure</code> will by default pick the latest. You can request a specific version to be used by setting <code>--with-toolchain-version</code>, e.g. <code>--with-toolchain-version=2010</code>.</p>
+<p>If you get <code>LINK: fatal error LNK1123: failure during conversion to COFF: file invalid</code> when building using Visual Studio 2010, you have encountered <a href="http://support.microsoft.com/kb/2757355">KB2757355</a>, a bug triggered by a specific installation order. However, the solution suggested by the KB article does not always resolve the problem. See <a href="https://stackoverflow.com/questions/10888391">this stackoverflow discussion</a> for other suggestions.</p>
+<h3 id="ibm-xl-cc">IBM XL C/C++</h3>
+<p>The regular builds by SAP is using version 12.1, described as <code>IBM XL C/C++ for AIX, V12.1 (5765-J02, 5725-C72) Version: 12.01.0000.0017</code>.</p>
+<p>See the <a href="http://cr.openjdk.java.net/~simonis/ppc-aix-port">OpenJDK PowerPC Port Status Page</a> for details.</p>
+<h2 id="boot-jdk-requirements">Boot JDK Requirements</h2>
+<p>Paradoxically, building OpenJDK requires a pre-existing JDK. This is called the &quot;boot JDK&quot;. The boot JDK does not have to be OpenJDK, though. If you are porting OpenJDK to a new platform, chances are that there already exists another JDK for that platform that is usable as boot JDK.</p>
+<p>The rule of thumb is that the boot JDK for building JDK major version <em>N</em> should be an JDK of major version <em>N-1</em>, so for building JDK 9 a JDK 8 would be suitable as boot JDK. However, OpenJDK should be able to &quot;build itself&quot;, so an up-to-date build of the current OpenJDK source is an acceptable alternative. If you are following the <em>N-1</em> rule, make sure you got the latest update version, since JDK 8 GA might not be able to build JDK 9 on all platforms.</p>
+<p>If the Boot JDK is not automatically detected, or the wrong JDK is picked, use <code>--with-boot-jdk</code> to point to the JDK to use.</p>
+<h3 id="jdk-8-on-linux">JDK 8 on Linux</h3>
+<p>On apt-based distros (like Debian and Ubuntu), <code>sudo apt-get install openjdk-8-jdk</code> is typically enough to install OpenJDK 8. On rpm-based distros (like Fedora and Red Hat), try <code>sudo yum install java-1.8.0-openjdk-devel</code>.</p>
+<h3 id="jdk-8-on-windows">JDK 8 on Windows</h3>
+<p>No pre-compiled binaries of OpenJDK 8 are readily available for Windows at the time of writing. An alternative is to download the <a href="http://www.oracle.com/technetwork/java/javase/downloads">Oracle JDK</a>. Another is the <a href="https://adoptopenjdk.net/">Adopt OpenJDK Project</a>, which publishes experimental prebuilt binaries for Windows.</p>
+<h3 id="jdk-8-on-macos">JDK 8 on macOS</h3>
+<p>No pre-compiled binaries of OpenJDK 8 are readily available for macOS at the time of writing. An alternative is to download the <a href="http://www.oracle.com/technetwork/java/javase/downloads">Oracle JDK</a>, or to install it using <code>brew cask install java</code>. Another option is the <a href="https://adoptopenjdk.net/">Adopt OpenJDK Project</a>, which publishes experimental prebuilt binaries for macOS.</p>
+<h3 id="jdk-8-on-aix">JDK 8 on AIX</h3>
+<p>No pre-compiled binaries of OpenJDK 8 are readily available for AIX at the time of writing. A starting point for working with OpenJDK on AIX is the <a href="http://openjdk.java.net/projects/ppc-aix-port/">PowerPC/AIX Port Project</a>.</p>
+<h2 id="external-library-requirements">External Library Requirements</h2>
+<p>Different platforms require different external libraries. In general, libraries are not optional - that is, they are either required or not used.</p>
+<p>If a required library is not detected by <code>configure</code>, you need to provide the path to it. There are two forms of the <code>configure</code> arguments to point to an external library: <code>--with-&lt;LIB&gt;=&lt;path&gt;</code> or <code>--with-&lt;LIB&gt;-include=&lt;path to include&gt; --with-&lt;LIB&gt;-lib=&lt;path to lib&gt;</code>. The first variant is more concise, but require the include files an library files to reside in a default hierarchy under this directory. In most cases, it works fine.</p>
+<p>As a fallback, the second version allows you to point to the include directory and the lib directory separately.</p>
+<h3 id="freetype">FreeType</h3>
+<p>FreeType2 from <a href="http://www.freetype.org/">The FreeType Project</a> is required on all platforms. At least version 2.3 is required.</p>
+<ul>
+<li>To install on an apt-based Linux, try running <code>sudo apt-get install libcups2-dev</code>.</li>
+<li>To install on an rpm-based Linux, try running <code>sudo yum install cups-devel</code>.</li>
+<li>To install on Solaris, try running <code>pkg install system/library/freetype-2</code>.</li>
+<li>To install on macOS, try running <code>brew install freetype</code>.</li>
+<li>To install on Windows, see <a href="#building-freetype-on-windows">below</a>.</li>
+</ul>
+<p>Use <code>--with-freetype=&lt;path&gt;</code> if <code>configure</code> does not properly locate your FreeType files.</p>
+<h4 id="building-freetype-on-windows">Building FreeType on Windows</h4>
+<p>On Windows, there is no readily available compiled version of FreeType. OpenJDK can help you compile FreeType from source. Download the FreeType sources and unpack them into an arbitrary directory:</p>
+<pre><code>wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.3.tar.gz
+tar -xzf freetype-2.5.3.tar.gz</code></pre>
+<p>Then run <code>configure</code> with <code>--with-freetype-src=&lt;freetype_src&gt;</code>. This will automatically build the freetype library into <code>&lt;freetype_src&gt;/lib64</code> for 64-bit builds or into <code>&lt;freetype_src&gt;/lib32</code> for 32-bit builds. Afterwards you can always use <code>--with-freetype-include=&lt;freetype_src&gt;/include</code> and <code>--with-freetype-lib=&lt;freetype_src&gt;/lib[32|64]</code> for other builds.</p>
+<p>Alternatively you can unpack the sources like this to use the default directory:</p>
+<pre><code>tar --one-top-level=$HOME/freetype --strip-components=1 -xzf freetype-2.5.3.tar.gz</code></pre>
+<h3 id="cups">CUPS</h3>
+<p>CUPS, <a href="http://www.cups.org">Common UNIX Printing System</a> header files are required on all platforms, except Windows. Often these files are provided by your operating system.</p>
+<ul>
+<li>To install on an apt-based Linux, try running <code>sudo apt-get install libcups2-dev</code>.</li>
+<li>To install on an rpm-based Linux, try running <code>sudo yum install cups-devel</code>.</li>
+<li>To install on Solaris, try running <code>pkg install print/cups</code>.</li>
+</ul>
+<p>Use <code>--with-cups=&lt;path&gt;</code> if <code>configure</code> does not properly locate your CUPS files.</p>
+<h3 id="x11">X11</h3>
+<p>Certain <a href="http://www.x.org/">X11</a> libraries and include files are required on Linux and Solaris.</p>
+<ul>
+<li>To install on an apt-based Linux, try running <code>sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev</code>.</li>
+<li>To install on an rpm-based Linux, try running <code>sudo yum install libXtst-devel libXt-devel libXrender-devel libXi-devel</code>.</li>
+<li>To install on Solaris, try running <code>pkg install x11/header/x11-protocols x11/library/libice x11/library/libpthread-stubs x11/library/libsm x11/library/libx11 x11/library/libxau x11/library/libxcb x11/library/libxdmcp x11/library/libxevie x11/library/libxext x11/library/libxrender x11/library/libxscrnsaver x11/library/libxtst x11/library/toolkit/libxt</code>.</li>
+</ul>
+<p>Use <code>--with-x=&lt;path&gt;</code> if <code>configure</code> does not properly locate your X11 files.</p>
+<h3 id="alsa">ALSA</h3>
+<p>ALSA, <a href="https://www.alsa-project.org/">Advanced Linux Sound Architecture</a> is required on Linux. At least version 0.9.1 of ALSA is required.</p>
+<ul>
+<li>To install on an apt-based Linux, try running <code>sudo apt-get install libasound2-dev</code>.</li>
+<li>To install on an rpm-based Linux, try running <code>sudo yum install alsa-lib-devel</code>.</li>
+</ul>
+<p>Use <code>--with-alsa=&lt;path&gt;</code> if <code>configure</code> does not properly locate your ALSA files.</p>
+<h3 id="libffi">libffi</h3>
+<p>libffi, the <a href="http://sourceware.org/libffi">Portable Foreign Function Interface Library</a> is required when building the Zero version of Hotspot.</p>
+<ul>
+<li>To install on an apt-based Linux, try running <code>sudo apt-get install libffi-dev</code>.</li>
+<li>To install on an rpm-based Linux, try running <code>sudo yum install libffi-devel</code>.</li>
+</ul>
+<p>Use <code>--with-libffi=&lt;path&gt;</code> if <code>configure</code> does not properly locate your libffi files.</p>
+<h3 id="libelf">libelf</h3>
+<p>libelf from the <a href="http://sourceware.org/elfutils">elfutils project</a> is required when building the AOT feature of Hotspot.</p>
+<ul>
+<li>To install on an apt-based Linux, try running <code>sudo apt-get install libelf-dev</code>.</li>
+<li>To install on an rpm-based Linux, try running <code>sudo yum install elfutils-libelf-devel</code>.</li>
+</ul>
+<p>Use <code>--with-libelf=&lt;path&gt;</code> if <code>configure</code> does not properly locate your libelf files.</p>
+<h2 id="other-tooling-requirements">Other Tooling Requirements</h2>
+<h3 id="gnu-make">GNU Make</h3>
+<p>OpenJDK requires <a href="http://www.gnu.org/software/make">GNU Make</a>. No other flavors of make are supported.</p>
+<p>At least version 3.81 of GNU Make must be used. For distributions supporting GNU Make 4.0 or above, we strongly recommend it. GNU Make 4.0 contains useful functionality to handle parallel building (supported by <code>--with-output-sync</code>) and speed and stability improvements.</p>
+<p>Note that <code>configure</code> locates and verifies a properly functioning version of <code>make</code> and stores the path to this <code>make</code> binary in the configuration. If you start a build using <code>make</code> on the command line, you will be using the version of make found first in your <code>PATH</code>, and not necessarily the one stored in the configuration. This initial make will be used as &quot;bootstrap make&quot;, and in a second stage, the make located by <code>configure</code> will be called. Normally, this will present no issues, but if you have a very old <code>make</code>, or a non-GNU Make <code>make</code> in your path, this might cause issues.</p>
+<p>If you want to override the default make found by <code>configure</code>, use the <code>MAKE</code> configure variable, e.g. <code>configure MAKE=/opt/gnu/make</code>.</p>
+<p>On Solaris, it is common to call the GNU version of make by using <code>gmake</code>.</p>
+<h3 id="gnu-bash">GNU Bash</h3>
+<p>OpenJDK requires <a href="http://www.gnu.org/software/bash">GNU Bash</a>. No other shells are supported.</p>
+<p>At least version 3.2 of GNU Bash must be used.</p>
+<h3 id="autoconf">Autoconf</h3>
+<p>If you want to modify the build system itself, you need to install <a href="http://www.gnu.org/software/autoconf">Autoconf</a>.</p>
+<p>However, if you only need to build OpenJDK or if you only edit the actual OpenJDK source files, there is no dependency on autoconf, since the source distribution includes a pre-generated <code>configure</code> shell script.</p>
+<p>See the section on <a href="#autoconf-details">Autoconf Details</a> for details on how OpenJDK uses autoconf. This is especially important if you plan to contribute changes to OpenJDK that modifies the build system.</p>
+<h2 id="running-configure">Running Configure</h2>
+<p>To build OpenJDK, you need a &quot;configuration&quot;, which consists of a directory where to store the build output, coupled with information about the platform, the specific build machine, and choices that affect how OpenJDK is built.</p>
+<p>The configuration is created by the <code>configure</code> script. The basic invocation of the <code>configure</code> script looks like this:</p>
+<pre><code>bash configure [options]</code></pre>
+<p>This will create an output directory containing the configuration and setup an area for the build result. This directory typically looks like <code>build/linux-x64-normal-server-release</code>, but the actual name depends on your specific configuration. (It can also be set directly, see <a href="#using-multiple-configurations">Using Multiple Configurations</a>). This directory is referred to as <code>$BUILD</code> in this documentation.</p>
+<p><code>configure</code> will try to figure out what system you are running on and where all necessary build components are. If you have all prerequisites for building installed, it should find everything. If it fails to detect any component automatically, it will exit and inform you about the problem.</p>
+<p>Some command line examples:</p>
+<ul>
+<li><p>Create a 32-bit build for Windows with FreeType2 in <code>C:\freetype-i586</code>:</p>
+<pre><code>bash configure --with-freetype=/cygdrive/c/freetype-i586 --with-target-bits=32</code></pre></li>
+<li><p>Create a debug build with the <code>server</code> JVM and DTrace enabled:</p>
+<pre><code>bash configure --enable-debug --with-jvm-variants=server --enable-dtrace</code></pre></li>
+</ul>
+<h3 id="common-configure-arguments">Common Configure Arguments</h3>
+<p>Here follows some of the most common and important <code>configure</code> argument.</p>
+<p>To get up-to-date information on <em>all</em> available <code>configure</code> argument, please run:</p>
+<pre><code>bash configure --help</code></pre>
+<p>(Note that this help text also include general autoconf options, like <code>--dvidir</code>, that is not relevant to OpenJDK. To list only OpenJDK specific features, use <code>bash configure --help=short</code> instead.)</p>
+<h4 id="configure-arguments-for-tailoring-the-build">Configure Arguments for Tailoring the Build</h4>
+<ul>
+<li><code>--enable-debug</code> - Set the debug level to <code>fastdebug</code> (this is a shorthand for <code>--with-debug-level=fastdebug</code>)</li>
+<li><code>--with-debug-level=&lt;level&gt;</code> - Set the debug level, which can be <code>release</code>, <code>fastdebug</code>, <code>slowdebug</code> or <code>optimized</code>. Default is <code>release</code>. <code>optimized</code> is variant of <code>release</code> with additional Hotspot debug code.</li>
+<li><code>--with-native-debug-symbols=&lt;method&gt;</code> - Specify if and how native debug symbols should be built. Available methods are <code>none</code>, <code>internal</code>, <code>external</code>, <code>zipped</code>. Default behavior depends on platform. See <a href="#native-debug-symbols">Native Debug Symbols</a> for more details.</li>
+<li><code>--with-version-string=&lt;string&gt;</code> - Specify the version string this build will be identified with.</li>
+<li><code>--with-version-&lt;part&gt;=&lt;value&gt;</code> - A group of options, where <code>&lt;part&gt;</code> can be any of <code>pre</code>, <code>opt</code>, <code>build</code>, <code>major</code>, <code>minor</code>, <code>security</code> or <code>patch</code>. Use these options to modify just the corresponding part of the version string from the default, or the value provided by <code>--with-version-string</code>.</li>
+<li><code>--with-jvm-variants=&lt;variant&gt;[,&lt;variant&gt;...]</code> - Build the specified variant (or variants) of Hotspot. Valid variants are: <code>server</code>, <code>client</code>, <code>minimal</code>, <code>core</code>, <code>zero</code>, <code>zeroshark</code>, <code>custom</code>. Note that not all variants are possible to combine in a single build.</li>
+<li><code>--with-jvm-features=&lt;feature&gt;[,&lt;feature&gt;...]</code> - Use the specified JVM features when building Hotspot. The list of features will be enabled on top of the default list. For the <code>custom</code> JVM variant, this default list is empty. A complete list of available JVM features can be found using <code>bash configure --help</code>.</li>
+<li><code>--with-target-bits=&lt;bits&gt;</code> - Create a target binary suitable for running on a <code>&lt;bits&gt;</code> platform. Use this to create 32-bit output on a 64-bit build platform, instead of doing a full cross-compile. (This is known as a <em>reduced</em> build.)</li>
+</ul>
+<h4 id="configure-arguments-for-native-compilation">Configure Arguments for Native Compilation</h4>
+<ul>
+<li><code>--with-devkit=&lt;path&gt;</code> - Use this devkit for compilers, tools and resources</li>
+<li><code>--with-sysroot=&lt;path&gt;</code> - Use this directory as sysroot</li>
+<li><code>--with-extra-path=&lt;path&gt;[;&lt;path&gt;]</code> - Prepend these directories to the default path when searching for all kinds of binaries</li>
+<li><code>--with-toolchain-path=&lt;path&gt;[;&lt;path&gt;]</code> - Prepend these directories when searching for toolchain binaries (compilers etc)</li>
+<li><code>--with-extra-cflags=&lt;flags&gt;</code> - Append these flags when compiling JDK C files</li>
+<li><code>--with-extra-cxxflags=&lt;flags&gt;</code> - Append these flags when compiling JDK C++ files</li>
+<li><code>--with-extra-ldflags=&lt;flags&gt;</code> - Append these flags when linking JDK libraries</li>
+</ul>
+<h4 id="configure-arguments-for-external-dependencies">Configure Arguments for External Dependencies</h4>
+<ul>
+<li><code>--with-boot-jdk=&lt;path&gt;</code> - Set the path to the <a href="#boot-jdk-requirements">Boot JDK</a></li>
+<li><code>--with-freetype=&lt;path&gt;</code> - Set the path to <a href="#freetype">FreeType</a></li>
+<li><code>--with-cups=&lt;path&gt;</code> - Set the path to <a href="#cups">CUPS</a></li>
+<li><code>--with-x=&lt;path&gt;</code> - Set the path to <a href="#x11">X11</a></li>
+<li><code>--with-alsa=&lt;path&gt;</code> - Set the path to <a href="#alsa">ALSA</a></li>
+<li><code>--with-libffi=&lt;path&gt;</code> - Set the path to <a href="#libffi">libffi</a></li>
+<li><code>--with-libelf=&lt;path&gt;</code> - Set the path to <a href="#libelf">libelf</a></li>
+<li><code>--with-jtreg=&lt;path&gt;</code> - Set the path to JTReg. See <a href="#running-tests">Running Tests</a></li>
+</ul>
+<p>Certain third-party libraries used by OpenJDK (libjpeg, giflib, libpng, lcms and zlib) are included in the OpenJDK repository. The default behavior of the OpenJDK build is to use this version of these libraries, but they might be replaced by an external version. To do so, specify <code>system</code> as the <code>&lt;source&gt;</code> option in these arguments. (The default is <code>bundled</code>).</p>
+<ul>
+<li><code>--with-libjpeg=&lt;source&gt;</code> - Use the specified source for libjpeg</li>
+<li><code>--with-giflib=&lt;source&gt;</code> - Use the specified source for giflib</li>
+<li><code>--with-libpng=&lt;source&gt;</code> - Use the specified source for libpng</li>
+<li><code>--with-lcms=&lt;source&gt;</code> - Use the specified source for lcms</li>
+<li><code>--with-zlib=&lt;source&gt;</code> - Use the specified source for zlib</li>
+</ul>
+<p>On Linux, it is possible to select either static or dynamic linking of the C++ runtime. The default is static linking, with dynamic linking as fallback if the static library is not found.</p>
+<ul>
+<li><code>--with-stdc++lib=&lt;method&gt;</code> - Use the specified method (<code>static</code>, <code>dynamic</code> or <code>default</code>) for linking the C++ runtime.</li>
+</ul>
+<h3 id="configure-control-variables">Configure Control Variables</h3>
+<p>It is possible to control certain aspects of <code>configure</code> by overriding the value of <code>configure</code> variables, either on the command line or in the environment.</p>
+<p>Normally, this is <strong>not recommended</strong>. If used improperly, it can lead to a broken configuration. Unless you're well versed in the build system, this is hard to use properly. Therefore, <code>configure</code> will print a warning if this is detected.</p>
+<p>However, there are a few <code>configure</code> variables, known as <em>control variables</em> that are supposed to be overriden on the command line. These are variables that describe the location of tools needed by the build, like <code>MAKE</code> or <code>GREP</code>. If any such variable is specified, <code>configure</code> will use that value instead of trying to autodetect the tool. For instance, <code>bash configure MAKE=/opt/gnumake4.0/bin/make</code>.</p>
+<p>If a configure argument exists, use that instead, e.g. use <code>--with-jtreg</code> instead of setting <code>JTREGEXE</code>.</p>
+<p>Also note that, despite what autoconf claims, setting <code>CFLAGS</code> will not accomplish anything. Instead use <code>--with-extra-cflags</code> (and similar for <code>cxxflags</code> and <code>ldflags</code>).</p>
+<h2 id="running-make">Running Make</h2>
+<p>When you have a proper configuration, all you need to do to build OpenJDK is to run <code>make</code>. (But see the warning at <a href="#gnu-make">GNU Make</a> about running the correct version of make.)</p>
+<p>When running <code>make</code> without any arguments, the default target is used, which is the same as running <code>make default</code> or <code>make jdk</code>. This will build a minimal (or roughly minimal) set of compiled output (known as an &quot;exploded image&quot;) needed for a developer to actually execute the newly built JDK. The idea is that in an incremental development fashion, when doing a normal make, you should only spend time recompiling what's changed (making it purely incremental) and only do the work that's needed to actually run and test your code.</p>
+<p>The output of the exploded image resides in <code>$BUILD/jdk</code>. You can test the newly built JDK like this: <code>$BUILD/jdk/bin/java -version</code>.</p>
+<h3 id="common-make-targets">Common Make Targets</h3>
+<p>Apart from the default target, here are some common make targets:</p>
+<ul>
+<li><code>hotspot</code> - Build all of hotspot (but only hotspot)</li>
+<li><code>hotspot-&lt;variant&gt;</code> - Build just the specified jvm variant</li>
+<li><code>images</code> or <code>product-images</code> - Build the JRE and JDK images</li>
+<li><code>docs</code> or <code>docs-image</code> - Build the documentation image</li>
+<li><code>test-image</code> - Build the test image</li>
+<li><code>all</code> or <code>all-images</code> - Build all images (product, docs and test)</li>
+<li><code>bootcycle-images</code> - Build images twice, second time with newly built JDK (good for testing)</li>
+<li><code>clean</code> - Remove all files generated by make, but not those generated by configure</li>
+<li><code>dist-clean</code> - Remove all files, including configuration</li>
+</ul>
+<p>Run <code>make help</code> to get an up-to-date list of important make targets and make control variables.</p>
+<p>It is possible to build just a single module, a single phase, or a single phase of a single module, by creating make targets according to these followin patterns. A phase can be either of <code>gensrc</code>, <code>gendata</code>, <code>copy</code>, <code>java</code>, <code>launchers</code>, <code>libs</code> or <code>rmic</code>. See <a href="#using-fine-grained-make-targets">Using Fine-Grained Make Targets</a> for more details about this functionality.</p>
+<ul>
+<li><code>&lt;phase&gt;</code> - Build the specified phase and everything it depends on</li>
+<li><code>&lt;module&gt;</code> - Build the specified module and everything it depends on</li>
+<li><code>&lt;module&gt;-&lt;phase&gt;</code> - Compile the specified phase for the specified module and everything it depends on</li>
+</ul>
+<p>Similarly, it is possible to clean just a part of the build by creating make targets according to these patterns:</p>
+<ul>
+<li><code>clean-&lt;outputdir&gt;</code> - Remove the subdir in the output dir with the name</li>
+<li><code>clean-&lt;phase&gt;</code> - Remove all build results related to a certain build phase</li>
+<li><code>clean-&lt;module&gt;</code> - Remove all build results related to a certain module</li>
+<li><code>clean-&lt;module&gt;-&lt;phase&gt;</code> - Remove all build results related to a certain module and phase</li>
+</ul>
+<h3 id="make-control-variables">Make Control Variables</h3>
+<p>It is possible to control <code>make</code> behavior by overriding the value of <code>make</code> variables, either on the command line or in the environment.</p>
+<p>Normally, this is <strong>not recommended</strong>. If used improperly, it can lead to a broken build. Unless you're well versed in the build system, this is hard to use properly. Therefore, <code>make</code> will print a warning if this is detected.</p>
+<p>However, there are a few <code>make</code> variables, known as <em>control variables</em> that are supposed to be overriden on the command line. These make up the &quot;make time&quot; configuration, as opposed to the &quot;configure time&quot; configuration.</p>
+<h4 id="general-make-control-variables">General Make Control Variables</h4>
+<ul>
+<li><code>JOBS</code> - Specify the number of jobs to build with. See <a href="#build-performance">Build Performance</a>.</li>
+<li><code>LOG</code> - Specify the logging level and functionality. See <a href="#checking-the-build-log-file">Checking the Build Log File</a></li>
+<li><code>CONF</code> and <code>CONF_NAME</code> - Selecting the configuration(s) to use. See <a href="#using-multiple-configurations">Using Multiple Configurations</a></li>
+</ul>
+<h4 id="test-make-control-variables">Test Make Control Variables</h4>
+<p>These make control variables only make sense when running tests. Please see <a href="testing.html">Testing OpenJDK</a> for details.</p>
+<ul>
+<li><code>TEST</code></li>
+<li><code>TEST_JOBS</code></li>
+<li><code>JTREG</code></li>
+<li><code>GTEST</code></li>
+</ul>
+<h4 id="advanced-make-control-variables">Advanced Make Control Variables</h4>
+<p>These advanced make control variables can be potentially unsafe. See <a href="#hints-and-suggestions-for-advanced-users">Hints and Suggestions for Advanced Users</a> and <a href="#understanding-the-build-system">Understanding the Build System</a> for details.</p>
+<ul>
+<li><code>SPEC</code></li>
+<li><code>CONF_CHECK</code></li>
+<li><code>COMPARE_BUILD</code></li>
+<li><code>JDK_FILTER</code></li>
+</ul>
+<h2 id="running-tests">Running Tests</h2>
+<p>Most of the OpenJDK tests are using the <a href="http://openjdk.java.net/jtreg">JTReg</a> test framework. Make sure that your configuration knows where to find your installation of JTReg. If this is not picked up automatically, use the <code>--with-jtreg=&lt;path to jtreg home&gt;</code> option to point to the JTReg framework. Note that this option should point to the JTReg home, i.e. the top directory, containing <code>lib/jtreg.jar</code> etc.</p>
+<p>To execute the most basic tests (tier 1), use:</p>
+<pre><code>make run-test-tier1</code></pre>
+<p>For more details on how to run tests, please see the <a href="testing.html">Testing OpenJDK</a> document.</p>
+<h2 id="cross-compiling">Cross-compiling</h2>
+<p>Cross-compiling means using one platform (the <em>build</em> platform) to generate output that can ran on another platform (the <em>target</em> platform).</p>
+<p>The typical reason for cross-compiling is that the build is performed on a more powerful desktop computer, but the resulting binaries will be able to run on a different, typically low-performing system. Most of the complications that arise when building for embedded is due to this separation of <em>build</em> and <em>target</em> systems.</p>
+<p>This requires a more complex setup and build procedure. This section assumes you are familiar with cross-compiling in general, and will only deal with the particularities of cross-compiling OpenJDK. If you are new to cross-compiling, please see the <a href="https://en.wikipedia.org/wiki/Cross_compiler#External_links">external links at Wikipedia</a> for a good start on reading materials.</p>
+<p>Cross-compiling OpenJDK requires you to be able to build both for the build platform and for the target platform. The reason for the former is that we need to build and execute tools during the build process, both native tools and Java tools.</p>
+<p>If all you want to do is to compile a 32-bit version, for the same OS, on a 64-bit machine, consider using <code>--with-target-bits=32</code> instead of doing a full-blown cross-compilation. (While this surely is possible, it's a lot more work and will take much longer to build.)</p>
+<h3 id="boot-jdk-and-build-jdk">Boot JDK and Build JDK</h3>
+<p>When cross-compiling, make sure you use a boot JDK that runs on the <em>build</em> system, and not on the <em>target</em> system.</p>
+<p>To be able to build, we need a &quot;Build JDK&quot;, which is a JDK built from the current sources (that is, the same as the end result of the entire build process), but able to run on the <em>build</em> system, and not the <em>target</em> system. (In contrast, the Boot JDK should be from an older release, e.g. JDK 8 when building JDK 9.)</p>
+<p>The build process will create a minimal Build JDK for you, as part of building. To speed up the build, you can use <code>--with-build-jdk</code> to <code>configure</code> to point to a pre-built Build JDK. Please note that the build result is unpredictable, and can possibly break in subtle ways, if the Build JDK does not <strong>exactly</strong> match the current sources.</p>
+<h3 id="specifying-the-target-platform">Specifying the Target Platform</h3>
+<p>You <em>must</em> specify the target platform when cross-compiling. Doing so will also automatically turn the build into a cross-compiling mode. The simplest way to do this is to use the <code>--openjdk-target</code> argument, e.g. <code>--openjdk-target=arm-linux-gnueabihf</code>. or <code>--openjdk-target=aarch64-oe-linux</code>. This will automatically set the <code>--build</code>, <code>--host</code> and <code>--target</code> options for autoconf, which can otherwise be confusing. (In autoconf terminology, the &quot;target&quot; is known as &quot;host&quot;, and &quot;target&quot; is used for building a Canadian cross-compiler.)</p>
+<h3 id="toolchain-considerations">Toolchain Considerations</h3>
+<p>You will need two copies of your toolchain, one which generates output that can run on the target system (the normal, or <em>target</em>, toolchain), and one that generates output that can run on the build system (the <em>build</em> toolchain). Note that cross-compiling is only supported for gcc at the time being. The gcc standard is to prefix cross-compiling toolchains with the target denominator. If you follow this standard, <code>configure</code> is likely to pick up the toolchain correctly.</p>
+<p>The <em>build</em> toolchain will be autodetected just the same way the normal <em>build</em>/<em>target</em> toolchain will be autodetected when not cross-compiling. If this is not what you want, or if the autodetection fails, you can specify a devkit containing the <em>build</em> toolchain using <code>--with-build-devkit</code> to <code>configure</code>, or by giving <code>BUILD_CC</code> and <code>BUILD_CXX</code> arguments.</p>
+<p>It is often helpful to locate the cross-compilation tools, headers and libraries in a separate directory, outside the normal path, and point out that directory to <code>configure</code>. Do this by setting the sysroot (<code>--with-sysroot</code>) and appending the directory when searching for cross-compilations tools (<code>--with-toolchain-path</code>). As a compact form, you can also use <code>--with-devkit</code> to point to a single directory, if it is correctly setup. (See <code>basics.m4</code> for details.)</p>
+<p>If you are unsure what toolchain and versions to use, these have been proved working at the time of writing:</p>
+<ul>
+<li><a href="https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-aarch64-linux-gnu-4.8-2013.11_linux.tar.xz">aarch64</a></li>
+<li><a href="https://launchpad.net/linaro-toolchain-unsupported/trunk/2012.09/+download/gcc-linaro-arm-linux-gnueabihf-raspbian-2012.09-20120921_linux.tar.bz2">arm 32-bit hardware floating point</a></li>
+</ul>
+<h3 id="native-libraries">Native Libraries</h3>
+<p>You will need copies of external native libraries for the <em>target</em> system, present on the <em>build</em> machine while building.</p>
+<p>Take care not to replace the <em>build</em> system's version of these libraries by mistake, since that can render the <em>build</em> machine unusable.</p>
+<p>Make sure that the libraries you point to (ALSA, X11, etc) are for the <em>target</em>, not the <em>build</em>, platform.</p>
+<h4 id="alsa-1">ALSA</h4>
+<p>You will need alsa libraries suitable for your <em>target</em> system. For most cases, using Debian's pre-built libraries work fine.</p>
+<p>Note that alsa is needed even if you only want to build a headless JDK.</p>
+<ul>
+<li><p>Go to <a href="https://www.debian.org/distrib/packages">Debian Package Search</a> and search for the <code>libasound2</code> and <code>libasound2-dev</code> packages for your <em>target</em> system. Download them to /tmp.</p></li>
+<li><p>Install the libraries into the cross-compilation toolchain. For instance:</p>
+<pre><code>cd /tools/gcc-linaro-arm-linux-gnueabihf-raspbian-2012.09-20120921_linux/arm-linux-gnueabihf/libc
+dpkg-deb -x /tmp/libasound2_1.0.25-4_armhf.deb .
+dpkg-deb -x /tmp/libasound2-dev_1.0.25-4_armhf.deb .</code></pre></li>
+<li><p>If alsa is not properly detected by <code>configure</code>, you can point it out by <code>--with-alsa</code>.</p></li>
+</ul>
+<h4 id="x11-1">X11</h4>
+<p>You will need X11 libraries suitable for your <em>target</em> system. For most cases, using Debian's pre-built libraries work fine.</p>
+<p>Note that X11 is needed even if you only want to build a headless JDK.</p>
+<ul>
+<li>Go to <a href="https://www.debian.org/distrib/packages">Debian Package Search</a>, search for the following packages for your <em>target</em> system, and download them to /tmp/target-x11:
+<ul>
+<li>libxi</li>
+<li>libxi-dev</li>
+<li>x11proto-core-dev</li>
+<li>x11proto-input-dev</li>
+<li>x11proto-kb-dev</li>
+<li>x11proto-render-dev</li>
+<li>x11proto-xext-dev</li>
+<li>libice-dev</li>
+<li>libxrender</li>
+<li>libxrender-dev</li>
+<li>libsm-dev</li>
+<li>libxt-dev</li>
+<li>libx11</li>
+<li>libx11-dev</li>
+<li>libxtst</li>
+<li>libxtst-dev</li>
+<li>libxext</li>
+<li>libxext-dev</li>
+</ul></li>
+<li><p>Install the libraries into the cross-compilation toolchain. For instance:</p>
+<pre><code>cd /tools/gcc-linaro-arm-linux-gnueabihf-raspbian-2012.09-20120921_linux/arm-linux-gnueabihf/libc/usr
+mkdir X11R6
+cd X11R6
+for deb in /tmp/target-x11/*.deb ; do dpkg-deb -x $deb . ; done
+mv usr/* .
+cd lib
+cp arm-linux-gnueabihf/* .</code></pre>
+<p>You can ignore the following messages. These libraries are not needed to successfully complete a full JDK build.</p>
+<pre><code>cp: cannot stat `arm-linux-gnueabihf/libICE.so&#39;: No such file or directory
+cp: cannot stat `arm-linux-gnueabihf/libSM.so&#39;: No such file or directory
+cp: cannot stat `arm-linux-gnueabihf/libXt.so&#39;: No such file or directory</code></pre></li>
+<li><p>If the X11 libraries are not properly detected by <code>configure</code>, you can point them out by <code>--with-x</code>.</p></li>
+</ul>
+<h3 id="building-for-armaarch64">Building for ARM/aarch64</h3>
+<p>A common cross-compilation target is the ARM CPU. When building for ARM, it is useful to set the ABI profile. A number of pre-defined ABI profiles are available using <code>--with-abi-profile</code>: arm-vfp-sflt, arm-vfp-hflt, arm-sflt, armv5-vfp-sflt, armv6-vfp-hflt. Note that soft-float ABIs are no longer properly supported on OpenJDK.</p>
+<p>OpenJDK contains two different ports for the aarch64 platform, one is the original aarch64 port from the <a href="http://openjdk.java.net/projects/aarch64-port">AArch64 Port Project</a> and one is a 64-bit version of the Oracle contributed ARM port. When targeting aarch64, by the default the original aarch64 port is used. To select the Oracle ARM 64 port, use <code>--with-cpu-port=arm64</code>. Also set the corresponding value (<code>aarch64</code> or <code>arm64</code>) to --with-abi-profile, to ensure a consistent build.</p>
+<h3 id="verifying-the-build">Verifying the Build</h3>
+<p>The build will end up in a directory named like <code>build/linux-arm-normal-server-release</code>.</p>
+<p>Inside this build output directory, the <code>images/jdk</code> and <code>images/jre</code> will contain the newly built JDK and JRE, respectively, for your <em>target</em> system.</p>
+<p>Copy these folders to your <em>target</em> system. Then you can run e.g. <code>images/jdk/bin/java -version</code>.</p>
+<h2 id="build-performance">Build Performance</h2>
+<p>Building OpenJDK requires a lot of horsepower. Some of the build tools can be adjusted to utilize more or less of resources such as parallel threads and memory. The <code>configure</code> script analyzes your system and selects reasonable values for such options based on your hardware. If you encounter resource problems, such as out of memory conditions, you can modify the detected values with:</p>
+<ul>
+<li><p><code>--with-num-cores</code> -- number of cores in the build system, e.g. <code>--with-num-cores=8</code>.</p></li>
+<li><p><code>--with-memory-size</code> -- memory (in MB) available in the build system, e.g. <code>--with-memory-size=1024</code></p></li>
+</ul>
+<p>You can also specify directly the number of build jobs to use with <code>--with-jobs=N</code> to <code>configure</code>, or <code>JOBS=N</code> to <code>make</code>. Do not use the <code>-j</code> flag to <code>make</code>. In most cases it will be ignored by the makefiles, but it can cause problems for some make targets.</p>
+<p>It might also be necessary to specify the JVM arguments passed to the Boot JDK, using e.g. <code>--with-boot-jdk-jvmargs=&quot;-Xmx8G&quot;</code>. Doing so will override the default JVM arguments passed to the Boot JDK.</p>
+<p>At the end of a successful execution of <code>configure</code>, you will get a performance summary, indicating how well the build will perform. Here you will also get performance hints. If you want to build fast, pay attention to those!</p>
+<p>If you want to tweak build performance, run with <code>make LOG=info</code> to get a build time summary at the end of the build process.</p>
+<h3 id="disk-speed">Disk Speed</h3>
+<p>If you are using network shares, e.g. via NFS, for your source code, make sure the build directory is situated on local disk (e.g. by <code>ln -s /localdisk/jdk-build $JDK-SHARE/build</code>). The performance penalty is extremely high for building on a network share; close to unusable.</p>
+<p>Also, make sure that your build tools (including Boot JDK and toolchain) is located on a local disk and not a network share.</p>
+<p>As has been stressed elsewhere, do use SSD for source code and build directory, as well as (if possible) the build tools.</p>
+<h3 id="virus-checking">Virus Checking</h3>
+<p>The use of virus checking software, especially on Windows, can <em>significantly</em> slow down building of OpenJDK. If possible, turn off such software, or exclude the directory containing the OpenJDK source code from on-the-fly checking.</p>
+<h3 id="ccache">Ccache</h3>
+<p>The OpenJDK build supports building with ccache when using gcc or clang. Using ccache can radically speed up compilation of native code if you often rebuild the same sources. Your milage may vary however, so we recommend evaluating it for yourself. To enable it, make sure it's on the path and configure with <code>--enable-ccache</code>.</p>
+<h3 id="precompiled-headers">Precompiled Headers</h3>
+<p>By default, the Hotspot build uses preccompiled headers (PCH) on the toolchains were it is properly supported (clang, gcc, and Visual Studio). Normally, this speeds up the build process, but in some circumstances, it can actually slow things down.</p>
+<p>You can experiment by disabling precompiled headers using <code>--disable-precompiled-headers</code>.</p>
+<h3 id="icecc-icecream">Icecc / icecream</h3>
+<p><a href="http://github.com/icecc/icecream">icecc/icecream</a> is a simple way to setup a distributed compiler network. If you have multiple machines available for building OpenJDK, you can drastically cut individual build times by utilizing it.</p>
+<p>To use, setup an icecc network, and install icecc on the build machine. Then run <code>configure</code> using <code>--enable-icecc</code>.</p>
+<h3 id="using-sjavac">Using sjavac</h3>
+<p>To speed up Java compilation, especially incremental compilations, you can try the experimental sjavac compiler by using <code>--enable-sjavac</code>.</p>
+<h3 id="building-the-right-target">Building the Right Target</h3>
+<p>Selecting the proper target to build can have dramatic impact on build time. For normal usage, <code>jdk</code> or the default target is just fine. You only need to build <code>images</code> for shipping, or if your tests require it.</p>
+<p>See also <a href="#using-fine-grained-make-targets">Using Fine-Grained Make Targets</a> on how to build an even smaller subset of the product.</p>
+<h2 id="troubleshooting">Troubleshooting</h2>
+<p>If your build fails, it can sometimes be difficult to pinpoint the problem or find a proper solution.</p>
+<h3 id="locating-the-source-of-the-error">Locating the Source of the Error</h3>
+<p>When a build fails, it can be hard to pinpoint the actual cause of the error. In a typical build process, different parts of the product build in parallel, with the output interlaced.</p>
+<h4 id="build-failure-summary">Build Failure Summary</h4>
+<p>To help you, the build system will print a failure summary at the end. It looks like this:</p>
+<pre><code>ERROR: Build failed for target &#39;hotspot&#39; in configuration &#39;linux-x64&#39; (exit code 2)
+
+=== Output from failing command(s) repeated here ===
+* For target hotspot_variant-server_libjvm_objs_psMemoryPool.o:
+/localhome/hg/jdk9-sandbox/hotspot/src/share/vm/services/psMemoryPool.cpp:1:1: error: &#39;failhere&#39; does not name a type
+ ... (rest of output omitted)
+
+* All command lines available in /localhome/hg/jdk9-sandbox/build/linux-x64/make-support/failure-logs.
+=== End of repeated output ===
+
+=== Make failed targets repeated here ===
+lib/CompileJvm.gmk:207: recipe for target &#39;/localhome/hg/jdk9-sandbox/build/linux-x64/hotspot/variant-server/libjvm/objs/psMemoryPool.o&#39; failed
+make/Main.gmk:263: recipe for target &#39;hotspot-server-libs&#39; failed
+=== End of repeated output ===
+
+Hint: Try searching the build log for the name of the first failed target.
+Hint: If caused by a warning, try configure --disable-warnings-as-errors.</code></pre>
+<p>Let's break it down! First, the selected configuration, and the top-level target you entered on the command line that caused the failure is printed.</p>
+<p>Then, between the <code>Output from failing command(s) repeated here</code> and <code>End of repeated output</code> the first lines of output (stdout and stderr) from the actual failing command is repeated. In most cases, this is the error message that caused the build to fail. If multiple commands were failing (this can happen in a parallel build), output from all failed commands will be printed here.</p>
+<p>The path to the <code>failure-logs</code> directory is printed. In this file you will find a <code>&lt;target&gt;.log</code> file that contains the output from this command in its entirety, and also a <code>&lt;target&gt;.cmd</code>, which contain the complete command line used for running this command. You can re-run the failing command by executing <code>. &lt;path to failure-logs&gt;/&lt;target&gt;.cmd</code> in your shell.</p>
+<p>Another way to trace the failure is to follow the chain of make targets, from top-level targets to individual file targets. Between <code>Make failed targets repeated here</code> and <code>End of repeated output</code> the output from make showing this chain is repeated. The first failed recipe will typically contain the full path to the file in question that failed to compile. Following lines will show a trace of make targets why we ended up trying to compile that file.</p>
+<p>Finally, some hints are given on how to locate the error in the complete log. In this example, we would try searching the log file for &quot;<code>psMemoryPool.o</code>&quot;. Another way to quickly locate make errors in the log is to search for &quot;<code>] Error</code>&quot; or &quot;<code>***</code>&quot;.</p>
+<p>Note that the build failure summary will only help you if the issue was a compilation failure or similar. If the problem is more esoteric, or is due to errors in the build machinery, you will likely get empty output logs, and <code>No indication of failed target found</code> instead of the make target chain.</p>
+<h4 id="checking-the-build-log-file">Checking the Build Log File</h4>
+<p>The output (stdout and stderr) from the latest build is always stored in <code>$BUILD/build.log</code>. The previous build log is stored as <code>build.log.old</code>. This means that it is not necessary to redirect the build output yourself if you want to process it.</p>
+<p>You can increase the verbosity of the log file, by the <code>LOG</code> control variable to <code>make</code>. If you want to see the command lines used in compilations, use <code>LOG=cmdlines</code>. To increase the general verbosity, use <code>LOG=info</code>, <code>LOG=debug</code> or <code>LOG=trace</code>. Both of these can be combined with <code>cmdlines</code>, e.g. <code>LOG=info,cmdlines</code>. The <code>debug</code> log level will show most shell commands executed by make, and <code>trace</code> will show all. Beware that both these log levels will produce a massive build log!</p>
+<h3 id="fixing-unexpected-build-failures">Fixing Unexpected Build Failures</h3>
+<p>Most of the time, the build will fail due to incorrect changes in the source code.</p>
+<p>Sometimes the build can fail with no apparent changes that have caused the failure. If this is the first time you are building OpenJDK on this particular computer, and the build fails, the problem is likely with your build environment. But even if you have previously built OpenJDK with success, and it now fails, your build environment might have changed (perhaps due to OS upgrades or similar). But most likely, such failures are due to problems with the incremental rebuild.</p>
+<h4 id="problems-with-the-build-environment">Problems with the Build Environment</h4>
+<p>Make sure your configuration is correct. Re-run <code>configure</code>, and look for any warnings. Warnings that appear in the middle of the <code>configure</code> output is also repeated at the end, after the summary. The entire log is stored in <code>$BUILD/configure.log</code>.</p>
+<p>Verify that the summary at the end looks correct. Are you indeed using the Boot JDK and native toolchain that you expect?</p>
+<p>By default, OpenJDK has a strict approach where warnings from the compiler is considered errors which fail the build. For very new or very old compiler versions, this can trigger new classes of warnings, which thus fails the build. Run <code>configure</code> with <code>--disable-warnings-as-errors</code> to turn of this behavior. (The warnings will still show, but not make the build fail.)</p>
+<h4 id="problems-with-incremental-rebuilds">Problems with Incremental Rebuilds</h4>
+<p>Incremental rebuilds mean that when you modify part of the product, only the affected parts get rebuilt. While this works great in most cases, and significantly speed up the development process, from time to time complex interdependencies will result in an incorrect build result. This is the most common cause for unexpected build problems, together with inconsistencies between the different Mercurial repositories in the forest.</p>
+<p>Here are a suggested list of things to try if you are having unexpected build problems. Each step requires more time than the one before, so try them in order. Most issues will be solved at step 1 or 2.</p>
+<ol type="1">
+<li><p>Make sure your forest is up-to-date</p>
+<p>Run <code>bash get_source.sh</code> to make sure you have the latest version of all repositories.</p></li>
+<li><p>Clean build results</p>
+<p>The simplest way to fix incremental rebuild issues is to run <code>make clean</code>. This will remove all build results, but not the configuration or any build system support artifacts. In most cases, this will solve build errors resulting from incremental build mismatches.</p></li>
+<li><p>Completely clean the build directory.</p>
+<p>If this does not work, the next step is to run <code>make dist-clean</code>, or removing the build output directory (<code>$BUILD</code>). This will clean all generated output, including your configuration. You will need to re-run <code>configure</code> after this step. A good idea is to run <code>make print-configuration</code> before running <code>make dist-clean</code>, as this will print your current <code>configure</code> command line. Here's a way to do this:</p>
+<pre><code>make print-configuration &gt; current-configuration
+make dist-clean
+bash configure $(cat current-configuration)
+make</code></pre></li>
+<li><p>Re-clone the Mercurial forest</p>
+<p>Sometimes the Mercurial repositories themselves gets in a state that causes the product to be un-buildable. In such a case, the simplest solution is often the &quot;sledgehammer approach&quot;: delete the entire forest, and re-clone it. If you have local changes, save them first to a different location using <code>hg export</code>.</p></li>
+</ol>
+<h3 id="specific-build-issues">Specific Build Issues</h3>
+<h4 id="clock-skew">Clock Skew</h4>
+<p>If you get an error message like this:</p>
+<pre><code>File &#39;xxx&#39; has modification time in the future.
+Clock skew detected. Your build may be incomplete.</code></pre>
+<p>then the clock on your build machine is out of sync with the timestamps on the source files. Other errors, apparently unrelated but in fact caused by the clock skew, can occur along with the clock skew warnings. These secondary errors may tend to obscure the fact that the true root cause of the problem is an out-of-sync clock.</p>
+<p>If you see these warnings, reset the clock on the build machine, run <code>make clean</code> and restart the build.</p>
+<h4 id="out-of-memory-errors">Out of Memory Errors</h4>
+<p>On Solaris, you might get an error message like this:</p>
+<pre><code>Trouble writing out table to disk</code></pre>
+<p>To solve this, increase the amount of swap space on your build machine.</p>
+<p>On Windows, you might get error messages like this:</p>
+<pre><code>fatal error - couldn&#39;t allocate heap
+cannot create ... Permission denied
+spawn failed</code></pre>
+<p>This can be a sign of a Cygwin problem. See the information about solving problems in the <a href="#cygwin">Cygwin</a> section. Rebooting the computer might help temporarily.</p>
+<h3 id="getting-help">Getting Help</h3>
+<p>If none of the suggestions in this document helps you, or if you find what you believe is a bug in the build system, please contact the Build Group by sending a mail to <a href="mailto:build-dev@openjdk.java.net">build-dev@openjdk.java.net</a>. Please include the relevant parts of the configure and/or build log.</p>
+<p>If you need general help or advice about developing for OpenJDK, you can also contact the Adoption Group. See the section on <a href="#contributing-to-openjdk">Contributing to OpenJDK</a> for more information.</p>
+<h2 id="hints-and-suggestions-for-advanced-users">Hints and Suggestions for Advanced Users</h2>
+<h3 id="setting-up-a-forest-for-pushing-changes-defpath">Setting Up a Forest for Pushing Changes (defpath)</h3>
+<p>To help you prepare a proper push path for a Mercurial repository, there exists a useful tool known as <a href="http://openjdk.java.net/projects/code-tools/defpath">defpath</a>. It will help you setup a proper push path for pushing changes to OpenJDK.</p>
+<p>Install the extension by cloning <code>http://hg.openjdk.java.net/code-tools/defpath</code> and updating your <code>.hgrc</code> file. Here's one way to do this:</p>
+<pre><code>cd ~
+mkdir hg-ext
+cd hg-ext
+hg clone http://hg.openjdk.java.net/code-tools/defpath
+cat &lt;&lt; EOT &gt;&gt; ~/.hgrc
+[extensions]
+defpath=~/hg-ext/defpath/defpath.py
+EOT</code></pre>
+<p>You can now setup a proper push path using:</p>
+<pre><code>hg defpath -d -u &lt;your OpenJDK username&gt;</code></pre>
+<p>If you also have the <code>trees</code> extension installed in Mercurial, you will automatically get a <code>tdefpath</code> command, which is even more useful. By running <code>hg tdefpath -du &lt;username&gt;</code> in the top repository of your forest, all repos will get setup automatically. This is the recommended usage.</p>
+<h3 id="bash-completion">Bash Completion</h3>
+<p>The <code>configure</code> and <code>make</code> commands tries to play nice with bash command-line completion (using <code>&lt;tab&gt;</code> or <code>&lt;tab&gt;&lt;tab&gt;</code>). To use this functionality, make sure you enable completion in your <code>~/.bashrc</code> (see instructions for bash in your operating system).</p>
+<p>Make completion will work out of the box, and will complete valid make targets. For instance, typing <code>make jdk-i&lt;tab&gt;</code> will complete to <code>make jdk-image</code>.</p>
+<p>The <code>configure</code> script can get completion for options, but for this to work you need to help <code>bash</code> on the way. The standard way of running the script, <code>bash configure</code>, will not be understood by bash completion. You need <code>configure</code> to be the command to run. One way to achieve this is to add a simple helper script to your path:</p>
+<pre><code>cat &lt;&lt; EOT &gt; /tmp/configure
+#!/bin/bash
+if [ \$(pwd) = \$(cd \$(dirname \$0); pwd) ] ; then
+ echo &gt;&amp;2 &quot;Abort: Trying to call configure helper recursively&quot;
+ exit 1
+fi
+
+bash \$PWD/configure &quot;\$@&quot;
+EOT
+chmod +x /tmp/configure
+sudo mv /tmp/configure /usr/local/bin</code></pre>
+<p>Now <code>configure --en&lt;tab&gt;-dt&lt;tab&gt;</code> will result in <code>configure --enable-dtrace</code>.</p>
+<h3 id="using-multiple-configurations">Using Multiple Configurations</h3>
+<p>You can have multiple configurations for a single source forest. When you create a new configuration, run <code>configure --with-conf-name=&lt;name&gt;</code> to create a configuration with the name <code>&lt;name&gt;</code>. Alternatively, you can create a directory under <code>build</code> and run <code>configure</code> from there, e.g. <code>mkdir build/&lt;name&gt; &amp;&amp; cd build/&lt;name&gt; &amp;&amp; bash ../../configure</code>.</p>
+<p>Then you can build that configuration using <code>make CONF_NAME=&lt;name&gt;</code> or <code>make CONF=&lt;pattern&gt;</code>, where <code>&lt;pattern&gt;</code> is a substring matching one or several configurations, e.g. <code>CONF=debug</code>. The special empty pattern (<code>CONF=</code>) will match <em>all</em> available configuration, so <code>make CONF= hotspot</code> will build the <code>hotspot</code> target for all configurations. Alternatively, you can execute <code>make</code> in the configuration directory, e.g. <code>cd build/&lt;name&gt; &amp;&amp; make</code>.</p>
+<h3 id="handling-reconfigurations">Handling Reconfigurations</h3>
+<p>If you update the forest and part of the configure script has changed, the build system will force you to re-run <code>configure</code>.</p>
+<p>Most of the time, you will be fine by running <code>configure</code> again with the same arguments as the last time, which can easily be performed by <code>make reconfigure</code>. To simplify this, you can use the <code>CONF_CHECK</code> make control variable, either as <code>make CONF_CHECK=auto</code>, or by setting an environment variable. For instance, if you add <code>export CONF_CHECK=auto</code> to your <code>.bashrc</code> file, <code>make</code> will always run <code>reconfigure</code> automatically whenever the configure script has changed.</p>
+<p>You can also use <code>CONF_CHECK=ignore</code> to skip the check for a needed configure update. This might speed up the build, but comes at the risk of an incorrect build result. This is only recommended if you know what you're doing.</p>
+<p>From time to time, you will also need to modify the command line to <code>configure</code> due to changes. Use <code>make print-configure</code> to show the command line used for your current configuration.</p>
+<h3 id="using-fine-grained-make-targets">Using Fine-Grained Make Targets</h3>
+<p>The default behavior for make is to create consistent and correct output, at the expense of build speed, if necessary.</p>
+<p>If you are prepared to take some risk of an incorrect build, and know enough of the system to understand how things build and interact, you can speed up the build process considerably by instructing make to only build a portion of the product.</p>
+<h4 id="building-individual-modules">Building Individual Modules</h4>
+<p>The safe way to use fine-grained make targets is to use the module specific make targets. All source code in JDK 9 is organized so it belongs to a module, e.g. <code>java.base</code> or <code>jdk.jdwp.agent</code>. You can build only a specific module, by giving it as make target: <code>make jdk.jdwp.agent</code>. If the specified module depends on other modules (e.g. <code>java.base</code>), those modules will be built first.</p>
+<p>You can also specify a set of modules, just as you can always specify a set of make targets: <code>make jdk.crypto.cryptoki jdk.crypto.ec jdk.crypto.mscapi jdk.crypto.ucrypto</code></p>
+<h4 id="building-individual-module-phases">Building Individual Module Phases</h4>
+<p>The build process for each module is divided into separate phases. Not all modules need all phases. Which are needed depends on what kind of source code and other artifact the module consists of. The phases are:</p>
+<ul>
+<li><code>gensrc</code> (Generate source code to compile)</li>
+<li><code>gendata</code> (Generate non-source code artifacts)</li>
+<li><code>copy</code> (Copy resource artifacts)</li>
+<li><code>java</code> (Compile Java code)</li>
+<li><code>launchers</code> (Compile native executables)</li>
+<li><code>libs</code> (Compile native libraries)</li>
+<li><code>rmic</code> (Run the <code>rmic</code> tool)</li>
+</ul>
+<p>You can build only a single phase for a module by using the notation <code>$MODULE-$PHASE</code>. For instance, to build the <code>gensrc</code> phase for <code>java.base</code>, use <code>make java.base-gensrc</code>.</p>
+<p>Note that some phases may depend on others, e.g. <code>java</code> depends on <code>gensrc</code> (if present). Make will build all needed prerequisites before building the requested phase.</p>
+<h4 id="skipping-the-dependency-check">Skipping the Dependency Check</h4>
+<p>When using an iterative development style with frequent quick rebuilds, the dependency check made by make can take up a significant portion of the time spent on the rebuild. In such cases, it can be useful to bypass the dependency check in make.</p>
+<blockquote>
+<p><strong>Note that if used incorrectly, this can lead to a broken build!</strong></p>
+</blockquote>
+<p>To achieve this, append <code>-only</code> to the build target. For instance, <code>make jdk.jdwp.agent-java-only</code> will <em>only</em> build the <code>java</code> phase of the <code>jdk.jdwp.agent</code> module. If the required dependencies are not present, the build can fail. On the other hand, the execution time measures in milliseconds.</p>
+<p>A useful pattern is to build the first time normally (e.g. <code>make jdk.jdwp.agent</code>) and then on subsequent builds, use the <code>-only</code> make target.</p>
+<h4 id="rebuilding-part-of-java.base-jdk_filter">Rebuilding Part of java.base (JDK_FILTER)</h4>
+<p>If you are modifying files in <code>java.base</code>, which is the by far largest module in OpenJDK, then you need to rebuild all those files whenever a single file has changed. (This inefficiency will hopefully be addressed in JDK 10.)</p>
+<p>As a hack, you can use the make control variable <code>JDK_FILTER</code> to specify a pattern that will be used to limit the set of files being recompiled. For instance, <code>make java.base JDK_FILTER=javax/crypto</code> (or, to combine methods, <code>make java.base-java-only JDK_FILTER=javax/crypto</code>) will limit the compilation to files in the <code>javax.crypto</code> package.</p>
+<h3 id="learn-about-mercurial">Learn About Mercurial</h3>
+<p>To become an efficient OpenJDK developer, it is recommended that you invest in learning Mercurial properly. Here are some links that can get you started:</p>
+<ul>
+<li><a href="http://www.mercurial-scm.org/wiki/GitConcepts">Mercurial for git users</a></li>
+<li><a href="http://www.mercurial-scm.org/wiki/Tutorial">The official Mercurial tutorial</a></li>
+<li><a href="http://hginit.com/">hg init</a></li>
+<li><a href="http://hgbook.red-bean.com/read/">Mercurial: The Definitive Guide</a></li>
+</ul>
+<h2 id="understanding-the-build-system">Understanding the Build System</h2>
+<p>This section will give you a more technical description on the details of the build system.</p>
+<h3 id="configurations">Configurations</h3>
+<p>The build system expects to find one or more configuration. These are technically defined by the <code>spec.gmk</code> in a subdirectory to the <code>build</code> subdirectory. The <code>spec.gmk</code> file is generated by <code>configure</code>, and contains in principle the configuration (directly or by files included by <code>spec.gmk</code>).</p>
+<p>You can, in fact, select a configuration to build by pointing to the <code>spec.gmk</code> file with the <code>SPEC</code> make control variable, e.g. <code>make SPEC=$BUILD/spec.gmk</code>. While this is not the recommended way to call <code>make</code> as a user, it is what is used under the hood by the build system.</p>
+<h3 id="build-output-structure">Build Output Structure</h3>
+<p>The build output for a configuration will end up in <code>build/&lt;configuration name&gt;</code>, which we refer to as <code>$BUILD</code> in this document. The <code>$BUILD</code> directory contains the following important directories:</p>
+<pre><code>buildtools/
+configure-support/
+hotspot/
+images/
+jdk/
+make-support/
+support/
+test-results/
+test-support/</code></pre>
+<p>This is what they are used for:</p>
+<ul>
+<li><p><code>images</code>: This is the directory were the output of the <code>*-image</code> make targets end up. For instance, <code>make jdk-image</code> ends up in <code>images/jdk</code>.</p></li>
+<li><p><code>jdk</code>: This is the &quot;exploded image&quot;. After <code>make jdk</code>, you will be able to launch the newly built JDK by running <code>$BUILD/jdk/bin/java</code>.</p></li>
+<li><p><code>test-results</code>: This directory contains the results from running tests.</p></li>
+<li><p><code>support</code>: This is an area for intermediate files needed during the build, e.g. generated source code, object files and class files. Some noteworthy directories in <code>support</code> is <code>gensrc</code>, which contains the generated source code, and the <code>modules_*</code> directories, which contains the files in a per-module hierarchy that will later be collapsed into the <code>jdk</code> directory of the exploded image.</p></li>
+<li><p><code>buildtools</code>: This is an area for tools compiled for the build platform that are used during the rest of the build.</p></li>
+<li><p><code>hotspot</code>: This is an area for intermediate files needed when building hotspot.</p></li>
+<li><p><code>configure-support</code>, <code>make-support</code> and <code>test-support</code>: These directories contain files that are needed by the build system for <code>configure</code>, <code>make</code> and for running tests.</p></li>
+</ul>
+<h3 id="fixpath">Fixpath</h3>
+<p>Windows path typically look like <code>C:\User\foo</code>, while Unix paths look like <code>/home/foo</code>. Tools with roots from Unix often experience issues related to this mismatch when running on Windows.</p>
+<p>In the OpenJDK build, we always use Unix paths internally, and only just before calling a tool that does not understand Unix paths do we convert them to Windows paths.</p>
+<p>This conversion is done by the <code>fixpath</code> tool, which is a small wrapper that modifies unix-style paths to Windows-style paths in command lines. Fixpath is compiled automatically by <code>configure</code>.</p>
+<h3 id="native-debug-symbols">Native Debug Symbols</h3>
+<p>Native libraries and executables can have debug symbol (and other debug information) associated with them. How this works is very much platform dependent, but a common problem is that debug symbol information takes a lot of disk space, but is rarely needed by the end user.</p>
+<p>The OpenJDK supports different methods on how to handle debug symbols. The method used is selected by <code>--with-native-debug-symbols</code>, and available methods are <code>none</code>, <code>internal</code>, <code>external</code>, <code>zipped</code>.</p>
+<ul>
+<li><p><code>none</code> means that no debug symbols will be generated during the build.</p></li>
+<li><p><code>internal</code> means that debug symbols will be generated during the build, and they will be stored in the generated binary.</p></li>
+<li><p><code>external</code> means that debug symbols will be generated during the build, and after the compilation, they will be moved into a separate <code>.debuginfo</code> file. (This was previously known as FDS, Full Debug Symbols).</p></li>
+<li><p><code>zipped</code> is like <code>external</code>, but the .debuginfo file will also be zipped into a <code>.diz</code> file.</p></li>
+</ul>
+<p>When building for distribution, <code>zipped</code> is a good solution. Binaries built with <code>internal</code> is suitable for use by developers, since they facilitate debugging, but should be stripped before distributed to end users.</p>
+<h3 id="autoconf-details">Autoconf Details</h3>
+<p>The <code>configure</code> script is based on the autoconf framework, but in some details deviate from a normal autoconf <code>configure</code> script.</p>
+<p>The <code>configure</code> script in the top level directory of OpenJDK is just a thin wrapper that calls <code>common/autoconf/configure</code>. This in turn provides functionality that is not easily expressed in the normal Autoconf framework, and then calls into the core of the <code>configure</code> script, which is the <code>common/autoconf/generated-configure.sh</code> file.</p>
+<p>As the name implies, this file is generated by Autoconf. It is checked in after regeneration, to alleviate the common user to have to install Autoconf.</p>
+<p>The build system will detect if the Autoconf source files have changed, and will trigger a regeneration of <code>common/autoconf/generated-configure.sh</code> if needed. You can also manually request such an update by <code>bash common/autoconf/autogen.sh</code>.</p>
+<p>If you make changes to the build system that requires a re-generation, note the following:</p>
+<ul>
+<li><p>You must use <em>exactly</em> version 2.69 of autoconf for your patch to be accepted. This is to avoid spurious changes in the generated file. Note that Ubuntu 16.04 ships a patched version of autoconf which claims to be 2.69, but is not.</p></li>
+<li><p>You do not need to include the generated file in reviews.</p></li>
+<li><p>If the generated file needs updating, the Oracle JDK closed counter-part will also need to be updated. It is very much appreciated if you ask for an Oracle engineer to sponsor your push so this can be made in tandem.</p></li>
+</ul>
+<h3 id="developing-the-build-system-itself">Developing the Build System Itself</h3>
+<p>This section contains a few remarks about how to develop for the build system itself. It is not relevant if you are only making changes in the product source code.</p>
+<p>While technically using <code>make</code>, the make source files of the OpenJDK does not resemble most other Makefiles. Instead of listing specific targets and actions (perhaps using patterns), the basic modus operandi is to call a high-level function (or properly, macro) from the API in <code>make/common</code>. For instance, to compile all classes in the <code>jdk.internal.foo</code> package in the <code>jdk.foo</code> module, a call like this would be made:</p>
+<pre><code>$(eval $(call SetupJavaCompilation, BUILD_FOO_CLASSES, \
+ SETUP := GENERATE_OLDBYTECODE, \
+ SRC := $(JDK_TOPDIR)/src/jkd.foo/share/classes, \
+ INCLUDES := jdk/internal/foo, \
+ BIN := $(SUPPORT_OUTPUTDIR)/foo_classes, \
+))</code></pre>
+<p>By encapsulating and expressing the high-level knowledge of <em>what</em> should be done, rather than <em>how</em> it should be done (as is normal in Makefiles), we can build a much more powerful and flexible build system.</p>
+<p>Correct dependency tracking is paramount. Sloppy dependency tracking will lead to improper parallelization, or worse, race conditions.</p>
+<p>To test for/debug race conditions, try running <code>make JOBS=1</code> and <code>make JOBS=100</code> and see if it makes any difference. (It shouldn't).</p>
+<p>To compare the output of two different builds and see if, and how, they differ, run <code>$BUILD1/compare.sh -o $BUILD2</code>, where <code>$BUILD1</code> and <code>$BUILD2</code> are the two builds you want to compare.</p>
+<p>To automatically build two consecutive versions and compare them, use <code>COMPARE_BUILD</code>. The value of <code>COMPARE_BUILD</code> is a set of variable=value assignments, like this:</p>
+<pre><code>make COMPARE_BUILD=CONF=--enable-new-hotspot-feature:MAKE=hotspot</code></pre>
+<p>See <code>make/InitSupport.gmk</code> for details on how to use <code>COMPARE_BUILD</code>.</p>
+<p>To analyze build performance, run with <code>LOG=trace</code> and check <code>$BUILD/build-trace-time.log</code>. Use <code>JOBS=1</code> to avoid parallelism.</p>
+<p>Please check that you adhere to the <a href="http://openjdk.java.net/groups/build/doc/code-conventions.html">Code Conventions for the Build System</a> before submitting patches. Also see the section in <a href="#autoconf-details">Autoconf Details</a> about the generated configure script.</p>
+<h2 id="contributing-to-openjdk">Contributing to OpenJDK</h2>
+<p>So, now you've build your OpenJDK, and made your first patch, and want to contribute it back to the OpenJDK community.</p>
+<p>First of all: Thank you! We gladly welcome your contribution to the OpenJDK. However, please bear in mind that OpenJDK is a massive project, and we must ask you to follow our rules and guidelines to be able to accept your contribution.</p>
+<p>The official place to start is the <a href="http://openjdk.java.net/contribute/">'How to contribute' page</a>. There is also an official (but somewhat outdated and skimpy on details) <a href="http://openjdk.java.net/guide/">Developer's Guide</a>.</p>
+<p>If this seems overwhelming to you, the Adoption Group is there to help you! A good place to start is their <a href="https://wiki.openjdk.java.net/display/Adoption/New+Contributor">'New Contributor' page</a>, or start reading the comprehensive <a href="https://adoptopenjdk.gitbooks.io/adoptopenjdk-getting-started-kit/en/">Getting Started Kit</a>. The Adoption Group will also happily answer any questions you have about contributing. Contact them by <a href="http://mail.openjdk.java.net/mailman/listinfo/adoption-discuss">mail</a> or <a href="http://openjdk.java.net/irc/">IRC</a>.</p>
+</body>
+</html>
diff --git a/common/doc/building.md b/common/doc/building.md
new file mode 100644
index 0000000..a6dd2a6
--- /dev/null
+++ b/common/doc/building.md
@@ -0,0 +1,1883 @@
+% Building OpenJDK
+
+## TL;DR (Instructions for the Impatient)
+
+If you are eager to try out building OpenJDK, these simple steps works most of
+the time. They assume that you have installed Mercurial (and Cygwin if running
+on Windows) and cloned the top-level OpenJDK repository that you want to build.
+
+ 1. [Get the complete source code](#getting-the-source-code): \
+ `bash get_source.sh`
+
+ 2. [Run configure](#running-configure): \
+ `bash configure`
+
+ If `configure` fails due to missing dependencies (to either the
+ [toolchain](#native-compiler-toolchain-requirements), [external libraries](
+ #external-library-requirements) or the [boot JDK](#boot-jdk-requirements)),
+ most of the time it prints a suggestion on how to resolve the situation on
+ your platform. Follow the instructions, and try running `bash configure`
+ again.
+
+ 3. [Run make](#running-make): \
+ `make images`
+
+ 4. Verify your newly built JDK: \
+ `./build/*/images/jdk/bin/java -version`
+
+ 5. [Run basic tests](##running-tests): \
+ `make run-test-tier1`
+
+If any of these steps failed, or if you want to know more about build
+requirements or build functionality, please continue reading this document.
+
+## Introduction
+
+OpenJDK is a complex software project. Building it requires a certain amount of
+technical expertise, a fair number of dependencies on external software, and
+reasonably powerful hardware.
+
+If you just want to use OpenJDK and not build it yourself, this document is not
+for you. See for instance [OpenJDK installation](
+http://openjdk.java.net/install) for some methods of installing a prebuilt
+OpenJDK.
+
+## Getting the Source Code
+
+OpenJDK uses [Mercurial](http://www.mercurial-scm.org) for source control. The
+source code is contained not in a single Mercurial repository, but in a tree
+("forest") of interrelated repositories. You will need to check out all of the
+repositories to be able to build OpenJDK. To assist you in dealing with this
+somewhat unusual arrangement, there are multiple tools available, which are
+explained below.
+
+In any case, make sure you are getting the correct version. At the [OpenJDK
+Mercurial server](http://hg.openjdk.java.net/) you can see a list of all
+available forests. If you want to build an older version, e.g. JDK 8, it is
+recommended that you get the `jdk8u` forest, which contains incremental
+updates, instead of the `jdk8` forest, which was frozen at JDK 8 GA.
+
+If you are new to Mercurial, a good place to start is the [Mercurial Beginner's
+Guide](http://www.mercurial-scm.org/guide). The rest of this document assumes a
+working knowledge of Mercurial.
+
+### Special Considerations
+
+For a smooth building experience, it is recommended that you follow these rules
+on where and how to check out the source code.
+
+ * Do not check out the source code in a path which contains spaces. Chances
+ are the build will not work. This is most likely to be an issue on Windows
+ systems.
+
+ * Do not check out the source code in a path which has a very long name or is
+ nested many levels deep. Chances are you will hit an OS limitation during
+ the build.
+
+ * Put the source code on a local disk, not a network share. If possible, use
+ an SSD. The build process is very disk intensive, and having slow disk
+ access will significantly increase build times. If you need to use a
+ network share for the source code, see below for suggestions on how to keep
+ the build artifacts on a local disk.
+
+ * On Windows, extra care must be taken to make sure the [Cygwin](#cygwin)
+ environment is consistent. It is recommended that you follow this
+ procedure:
+
+ * Create the directory that is going to contain the top directory of the
+ OpenJDK clone by using the `mkdir` command in the Cygwin bash shell.
+ That is, do *not* create it using Windows Explorer. This will ensure
+ that it will have proper Cygwin attributes, and that it's children will
+ inherit those attributes.
+
+ * Do not put the OpenJDK clone in a path under your Cygwin home
+ directory. This is especially important if your user name contains
+ spaces and/or mixed upper and lower case letters.
+
+ * Clone the OpenJDK repository using the Cygwin command line `hg` client
+ as instructed in this document. That is, do *not* use another Mercurial
+ client such as TortoiseHg.
+
+ Failure to follow this procedure might result in hard-to-debug build
+ problems.
+
+### Using get\_source.sh
+
+The simplest way to get the entire forest is probably to clone the top-level
+repository and then run the `get_source.sh` script, like this:
+
+```
+hg clone http://hg.openjdk.java.net/jdk9/jdk9
+cd jdk9
+bash get_source.sh
+```
+
+The first time this is run, it will clone all the sub-repositories. Any
+subsequent execution of the script will update all sub-repositories to the
+latest revision.
+
+### Using hgforest.sh
+
+The `hgforest.sh` script is more expressive than `get_source.sh`. It takes any
+number of arguments, and runs `hg` with those arguments on each sub-repository
+in the forest. The `get_source.sh` script is basically a simple wrapper that
+runs either `hgforest.sh clone` or `hgforest.sh pull -u`.
+
+ * Cloning the forest:
+ ```
+ hg clone http://hg.openjdk.java.net/jdk9/jdk9
+ cd jdk9
+ bash common/bin/hgforest.sh clone
+ ```
+
+ * Pulling and updating the forest:
+ ```
+ bash common/bin/hgforest.sh pull -u
+ ```
+
+ * Merging over the entire forest:
+ ```
+ bash common/bin/hgforest.sh merge
+ ```
+
+### Using the Trees Extension
+
+The trees extension is a Mercurial add-on that helps you deal with the forest.
+More information is available on the [Code Tools trees page](
+http://openjdk.java.net/projects/code-tools/trees).
+
+#### Installing the Extension
+
+Install the extension by cloning `http://hg.openjdk.java.net/code-tools/trees`
+and updating your `.hgrc` file. Here's one way to do this:
+
+```
+cd ~
+mkdir hg-ext
+cd hg-ext
+hg clone http://hg.openjdk.java.net/code-tools/trees
+cat << EOT >> ~/.hgrc
+[extensions]
+trees=~/hg-ext/trees/trees.py
+EOT
+```
+
+#### Initializing the Tree
+
+The trees extension needs to know the structure of the forest. If you have
+already cloned the entire forest using another method, you can initialize the
+forest like this:
+
+```
+hg tconf --set --walk --depth
+```
+
+Or you can clone the entire forest at once, if you substitute `clone` with
+`tclone` when cloning the top-level repository, e.g. like this:
+
+```
+hg tclone http://hg.openjdk.java.net/jdk9/jdk9
+```
+
+In this case, the forest will be properly initialized from the start.
+
+#### Other Operations
+
+The trees extensions supplement many common operations with a trees version by
+prefixing a `t` to the normal Mercurial command, e.g. `tcommit`, `tstatus` or
+`tmerge`. For instance, to update the entire forest:
+
+```
+hg tpull -u
+```
+
+## Build Hardware Requirements
+
+OpenJDK is a massive project, and require machines ranging from decent to
+powerful to be able to build in a reasonable amount of time, or to be able to
+complete a build at all.
+
+We *strongly* recommend usage of an SSD disk for the build, since disk speed is
+one of the limiting factors for build performance.
+
+### Building on x86
+
+At a minimum, a machine with 2-4 cores is advisable, as well as 2-4 GB of RAM.
+(The more cores to use, the more memory you need.) At least 6 GB of free disk
+space is required (8 GB minimum for building on Solaris).
+
+Even for 32-bit builds, it is recommended to use a 64-bit build machine, and
+instead create a 32-bit target using `--with-target-bits=32`.
+
+### Building on sparc
+
+At a minimum, a machine with 4 cores is advisable, as well as 4 GB of RAM. (The
+more cores to use, the more memory you need.) At least 8 GB of free disk space
+is required.
+
+### Building on arm/aarch64
+
+This is not recommended. Instead, see the section on [Cross-compiling](
+#cross-compiling).
+
+## Operating System Requirements
+
+The mainline OpenJDK project supports Linux, Solaris, macOS, AIX and Windows.
+Support for other operating system, e.g. BSD, exists in separate "port"
+projects.
+
+In general, OpenJDK can be built on a wide range of versions of these operating
+systems, but the further you deviate from what is tested on a daily basis, the
+more likely you are to run into problems.
+
+This table lists the OS versions used by Oracle when building JDK 9. Such
+information is always subject to change, but this table is up to date at the
+time of writing.
+
+ Operating system Vendor/version used
+ ----------------- -------------------------------------------------------
+ Linux Oracle Enterprise Linux 6.4 / 7.1 (using kernel 3.8.13)
+ Solaris Solaris 11.1 SRU 21.4.1 / 11.2 SRU 5.5
+ macOS Mac OS X 10.9 (Mavericks) / 10.10 (Yosemite)
+ Windows Windows Server 2012 R2
+
+The double version numbers for Linux, Solaris and macOS is due to the hybrid
+model used at Oracle, where header files and external libraries from an older
+version is used when building on a more modern version of the OS.
+
+The Build Group has a wiki page with [Supported Build Platforms](
+https://wiki.openjdk.java.net/display/Build/Supported+Build+Platforms). From
+time to time, this is updated by the community to list successes or failures of
+building on different platforms.
+
+### Windows
+
+Windows XP is not a supported platform, but all newer Windows should be able to
+build OpenJDK.
+
+On Windows, it is important that you pay attention to the instructions in the
+[Special Considerations](#special-considerations).
+
+Windows is the only non-POSIX OS supported by OpenJDK, and as such, requires
+some extra care. A POSIX support layer is required to build on Windows. For
+OpenJDK 9, the only supported such layer is Cygwin. (Msys is no longer
+supported due to a too old bash; msys2 and the new Windows Subsystem for Linux
+(WSL) would likely be possible to support in a future version but that would
+require a community effort to implement.)
+
+Internally in the build system, all paths are represented as Unix-style paths,
+e.g. `/cygdrive/c/hg/jdk9/Makefile` rather than `C:\hg\jdk9\Makefile`. This
+rule also applies to input to the build system, e.g. in arguments to
+`configure`. So, use `--with-freetype=/cygdrive/c/freetype` rather than
+`--with-freetype=c:\freetype`. For details on this conversion, see the section
+on [Fixpath](#fixpath).
+
+#### Cygwin
+
+A functioning [Cygwin](http://www.cygwin.com/) environment is thus required for
+building OpenJDK on Windows. If you have a 64-bit OS, we strongly recommend
+using the 64-bit version of Cygwin.
+
+**Note:** Cygwin has a model of continuously updating all packages without any
+easy way to install or revert to a specific version of a package. This means
+that whenever you add or update a package in Cygwin, you might (inadvertently)
+update tools that are used by the OpenJDK build process, and that can cause
+unexpected build problems.
+
+OpenJDK requires GNU Make 4.0 or greater on Windows. This is usually not a
+problem, since Cygwin currently only distributes GNU Make at a version above
+4.0.
+
+Apart from the basic Cygwin installation, the following packages must also be
+installed:
+
+ * `make`
+ * `zip`
+ * `unzip`
+
+Often, you can install these packages using the following command line:
+```
+<path to Cygwin setup>/setup-x86_64 -q -P make -P unzip -P zip
+```
+
+Unfortunately, Cygwin can be unreliable in certain circumstances. If you
+experience build tool crashes or strange issues when building on Windows,
+please check the Cygwin FAQ on the ["BLODA" list](
+https://cygwin.com/faq/faq.html#faq.using.bloda) and the section on [fork()
+failures](https://cygwin.com/faq/faq.html#faq.using.fixing-fork-failures).
+
+### Solaris
+
+See `make/devkit/solaris11.1-package-list.txt` for a list of recommended
+packages to install when building on Solaris. The versions specified in this
+list is the versions used by the daily builds at Oracle, and is likely to work
+properly.
+
+Older versions of Solaris shipped a broken version of `objcopy`. At least
+version 2.21.1 is needed, which is provided by Solaris 11 Update 1. Objcopy is
+needed if you want to have external debug symbols. Please make sure you are
+using at least version 2.21.1 of objcopy, or that you disable external debug
+symbols.
+
+### macOS
+
+Apple is using a quite aggressive scheme of pushing OS updates, and coupling
+these updates with required updates of Xcode. Unfortunately, this makes it
+difficult for a project like OpenJDK to keep pace with a continuously updated
+machine running macOS. See the section on [Apple Xcode](#apple-xcode) on some
+strategies to deal with this.
+
+It is recommended that you use at least Mac OS X 10.9 (Mavericks). At the time
+of writing, OpenJDK has been successfully compiled on macOS versions up to
+10.12.5 (Sierra), using XCode 8.3.2 and `--disable-warnings-as-errors`.
+
+The standard macOS environment contains the basic tooling needed to build, but
+for external libraries a package manager is recommended. OpenJDK uses
+[homebrew](https://brew.sh/) in the examples, but feel free to use whatever
+manager you want (or none).
+
+### Linux
+
+It is often not much problem to build OpenJDK on Linux. The only general advice
+is to try to use the compilers, external libraries and header files as provided
+by your distribution.
+
+The basic tooling is provided as part of the core operating system, but you
+will most likely need to install developer packages.
+
+For apt-based distributions (Debian, Ubuntu, etc), try this:
+```
+sudo apt-get install build-essential
+```
+
+For rpm-based distributions (Fedora, Red Hat, etc), try this:
+```
+sudo yum groupinstall "Development Tools"
+```
+
+### AIX
+
+The regular builds by SAP is using AIX version 7.1, but AIX 5.3 is also
+supported. See the [OpenJDK PowerPC Port Status Page](
+http://cr.openjdk.java.net/~simonis/ppc-aix-port) for details.
+
+## Native Compiler (Toolchain) Requirements
+
+Large portions of OpenJDK consists of native code, that needs to be compiled to
+be able to run on the target platform. In theory, toolchain and operating
+system should be independent factors, but in practice there's more or less a
+one-to-one correlation between target operating system and toolchain.
+
+ Operating system Supported toolchain
+ ------------------ -------------------------
+ Linux gcc, clang
+ macOS Apple Xcode (using clang)
+ Solaris Oracle Solaris Studio
+ AIX IBM XL C/C++
+ Windows Microsoft Visual Studio
+
+Please see the individual sections on the toolchains for version
+recommendations. As a reference, these versions of the toolchains are used, at
+the time of writing, by Oracle for the daily builds of OpenJDK. It should be
+possible to compile OpenJDK with both older and newer versions, but the closer
+you stay to this list, the more likely you are to compile successfully without
+issues.
+
+ Operating system Toolchain version
+ ------------------ -------------------------------------------------------
+ Linux gcc 4.9.2
+ macOS Apple Xcode 6.3 (using clang 6.1.0)
+ Solaris Oracle Solaris Studio 12.4 (with compiler version 5.13)
+ Windows Microsoft Visual Studio 2013 update 4
+
+### gcc
+
+The minimum accepted version of gcc is 4.3. Older versions will not be accepted
+by `configure`.
+
+However, gcc 4.3 is quite old and OpenJDK is not regularly tested on this
+version, so it is recommended to use a more modern gcc.
+
+OpenJDK 9 includes patches that should allow gcc 6 to compile, but this should
+be considered experimental.
+
+In general, any version between these two should be usable.
+
+### clang
+
+The minimum accepted version of clang is 3.2. Older versions will not be
+accepted by `configure`.
+
+To use clang instead of gcc on Linux, use `--with-toolchain-type=clang`.
+
+### Apple Xcode
+
+The oldest supported version of Xcode is 5.
+
+You will need the Xcode command lines developers tools to be able to build
+OpenJDK. (Actually, *only* the command lines tools are needed, not the IDE.)
+The simplest way to install these is to run:
+```
+xcode-select --install
+```
+
+It is advisable to keep an older version of Xcode for building OpenJDK when
+updating Xcode. This [blog page](
+http://iosdevelopertips.com/xcode/install-multiple-versions-of-xcode.html) has
+good suggestions on managing multiple Xcode versions. To use a specific version
+of Xcode, use `xcode-select -s` before running `configure`, or use
+`--with-toolchain-path` to point to the version of Xcode to use, e.g.
+`configure --with-toolchain-path=/Applications/Xcode5.app/Contents/Developer/usr/bin`
+
+If you have recently (inadvertently) updated your OS and/or Xcode version, and
+OpenJDK can no longer be built, please see the section on [Problems with the
+Build Environment](#problems-with-the-build-environment), and [Getting
+Help](#getting-help) to find out if there are any recent, non-merged patches
+available for this update.
+
+### Oracle Solaris Studio
+
+The minimum accepted version of the Solaris Studio compilers is 5.13
+(corresponding to Solaris Studio 12.4). Older versions will not be accepted by
+configure.
+
+The Solaris Studio installation should contain at least these packages:
+
+ Package Version
+ -------------------------------------------------- -------------
+ developer/solarisstudio-124/backend 12.4-1.0.6.0
+ developer/solarisstudio-124/c++ 12.4-1.0.10.0
+ developer/solarisstudio-124/cc 12.4-1.0.4.0
+ developer/solarisstudio-124/library/c++-libs 12.4-1.0.10.0
+ developer/solarisstudio-124/library/math-libs 12.4-1.0.0.1
+ developer/solarisstudio-124/library/studio-gccrt 12.4-1.0.0.1
+ developer/solarisstudio-124/studio-common 12.4-1.0.0.1
+ developer/solarisstudio-124/studio-ja 12.4-1.0.0.1
+ developer/solarisstudio-124/studio-legal 12.4-1.0.0.1
+ developer/solarisstudio-124/studio-zhCN 12.4-1.0.0.1
+
+Compiling with Solaris Studio can sometimes be finicky. This is the exact
+version used by Oracle, which worked correctly at the time of writing:
+```
+$ cc -V
+cc: Sun C 5.13 SunOS_i386 2014/10/20
+$ CC -V
+CC: Sun C++ 5.13 SunOS_i386 151846-10 2015/10/30
+```
+
+### Microsoft Visual Studio
+
+The minimum accepted version of Visual Studio is 2010. Older versions will not
+be accepted by `configure`. The maximum accepted version of Visual Studio is
+2013.
+
+If you have multiple versions of Visual Studio installed, `configure` will by
+default pick the latest. You can request a specific version to be used by
+setting `--with-toolchain-version`, e.g. `--with-toolchain-version=2010`.
+
+If you get `LINK: fatal error LNK1123: failure during conversion to COFF: file
+invalid` when building using Visual Studio 2010, you have encountered
+[KB2757355](http://support.microsoft.com/kb/2757355), a bug triggered by a
+specific installation order. However, the solution suggested by the KB article
+does not always resolve the problem. See [this stackoverflow discussion](
+https://stackoverflow.com/questions/10888391) for other suggestions.
+
+### IBM XL C/C++
+
+The regular builds by SAP is using version 12.1, described as `IBM XL C/C++ for
+AIX, V12.1 (5765-J02, 5725-C72) Version: 12.01.0000.0017`.
+
+See the [OpenJDK PowerPC Port Status Page](
+http://cr.openjdk.java.net/~simonis/ppc-aix-port) for details.
+
+## Boot JDK Requirements
+
+Paradoxically, building OpenJDK requires a pre-existing JDK. This is called the
+"boot JDK". The boot JDK does not have to be OpenJDK, though. If you are
+porting OpenJDK to a new platform, chances are that there already exists
+another JDK for that platform that is usable as boot JDK.
+
+The rule of thumb is that the boot JDK for building JDK major version *N*
+should be an JDK of major version *N-1*, so for building JDK 9 a JDK 8 would be
+suitable as boot JDK. However, OpenJDK should be able to "build itself", so an
+up-to-date build of the current OpenJDK source is an acceptable alternative. If
+you are following the *N-1* rule, make sure you got the latest update version,
+since JDK 8 GA might not be able to build JDK 9 on all platforms.
+
+If the Boot JDK is not automatically detected, or the wrong JDK is picked, use
+`--with-boot-jdk` to point to the JDK to use.
+
+### JDK 8 on Linux
+
+On apt-based distros (like Debian and Ubuntu), `sudo apt-get install
+openjdk-8-jdk` is typically enough to install OpenJDK 8. On rpm-based distros
+(like Fedora and Red Hat), try `sudo yum install java-1.8.0-openjdk-devel`.
+
+### JDK 8 on Windows
+
+No pre-compiled binaries of OpenJDK 8 are readily available for Windows at the
+time of writing. An alternative is to download the [Oracle JDK](
+http://www.oracle.com/technetwork/java/javase/downloads). Another is the [Adopt
+OpenJDK Project](https://adoptopenjdk.net/), which publishes experimental
+prebuilt binaries for Windows.
+
+### JDK 8 on macOS
+
+No pre-compiled binaries of OpenJDK 8 are readily available for macOS at the
+time of writing. An alternative is to download the [Oracle JDK](
+http://www.oracle.com/technetwork/java/javase/downloads), or to install it
+using `brew cask install java`. Another option is the [Adopt OpenJDK Project](
+https://adoptopenjdk.net/), which publishes experimental prebuilt binaries for
+macOS.
+
+### JDK 8 on AIX
+
+No pre-compiled binaries of OpenJDK 8 are readily available for AIX at the
+time of writing. A starting point for working with OpenJDK on AIX is
+the [PowerPC/AIX Port Project](http://openjdk.java.net/projects/ppc-aix-port/).
+
+## External Library Requirements
+
+Different platforms require different external libraries. In general, libraries
+are not optional - that is, they are either required or not used.
+
+If a required library is not detected by `configure`, you need to provide the
+path to it. There are two forms of the `configure` arguments to point to an
+external library: `--with-<LIB>=<path>` or `--with-<LIB>-include=<path to
+include> --with-<LIB>-lib=<path to lib>`. The first variant is more concise,
+but require the include files an library files to reside in a default hierarchy
+under this directory. In most cases, it works fine.
+
+As a fallback, the second version allows you to point to the include directory
+and the lib directory separately.
+
+### FreeType
+
+FreeType2 from [The FreeType Project](http://www.freetype.org/) is required on
+all platforms. At least version 2.3 is required.
+
+ * To install on an apt-based Linux, try running `sudo apt-get install
+ libcups2-dev`.
+ * To install on an rpm-based Linux, try running `sudo yum install
+ cups-devel`.
+ * To install on Solaris, try running `pkg install system/library/freetype-2`.
+ * To install on macOS, try running `brew install freetype`.
+ * To install on Windows, see [below](#building-freetype-on-windows).
+
+Use `--with-freetype=<path>` if `configure` does not properly locate your
+FreeType files.
+
+#### Building FreeType on Windows
+
+On Windows, there is no readily available compiled version of FreeType. OpenJDK
+can help you compile FreeType from source. Download the FreeType sources and
+unpack them into an arbitrary directory:
+
+```
+wget http://download.savannah.gnu.org/releases/freetype/freetype-2.5.3.tar.gz
+tar -xzf freetype-2.5.3.tar.gz
+```
+
+Then run `configure` with `--with-freetype-src=<freetype_src>`. This will
+automatically build the freetype library into `<freetype_src>/lib64` for 64-bit
+builds or into `<freetype_src>/lib32` for 32-bit builds. Afterwards you can
+always use `--with-freetype-include=<freetype_src>/include` and
+`--with-freetype-lib=<freetype_src>/lib[32|64]` for other builds.
+
+Alternatively you can unpack the sources like this to use the default
+directory:
+
+```
+tar --one-top-level=$HOME/freetype --strip-components=1 -xzf freetype-2.5.3.tar.gz
+```
+
+### CUPS
+
+CUPS, [Common UNIX Printing System](http://www.cups.org) header files are
+required on all platforms, except Windows. Often these files are provided by
+your operating system.
+
+ * To install on an apt-based Linux, try running `sudo apt-get install
+ libcups2-dev`.
+ * To install on an rpm-based Linux, try running `sudo yum install
+ cups-devel`.
+ * To install on Solaris, try running `pkg install print/cups`.
+
+Use `--with-cups=<path>` if `configure` does not properly locate your CUPS
+files.
+
+### X11
+
+Certain [X11](http://www.x.org/) libraries and include files are required on
+Linux and Solaris.
+
+ * To install on an apt-based Linux, try running `sudo apt-get install
+ libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev`.
+ * To install on an rpm-based Linux, try running `sudo yum install
+ libXtst-devel libXt-devel libXrender-devel libXi-devel`.
+ * To install on Solaris, try running `pkg install x11/header/x11-protocols
+ x11/library/libice x11/library/libpthread-stubs x11/library/libsm
+ x11/library/libx11 x11/library/libxau x11/library/libxcb
+ x11/library/libxdmcp x11/library/libxevie x11/library/libxext
+ x11/library/libxrender x11/library/libxscrnsaver x11/library/libxtst
+ x11/library/toolkit/libxt`.
+
+Use `--with-x=<path>` if `configure` does not properly locate your X11 files.
+
+### ALSA
+
+ALSA, [Advanced Linux Sound Architecture](https://www.alsa-project.org/) is
+required on Linux. At least version 0.9.1 of ALSA is required.
+
+ * To install on an apt-based Linux, try running `sudo apt-get install
+ libasound2-dev`.
+ * To install on an rpm-based Linux, try running `sudo yum install
+ alsa-lib-devel`.
+
+Use `--with-alsa=<path>` if `configure` does not properly locate your ALSA
+files.
+
+### libffi
+
+libffi, the [Portable Foreign Function Interface Library](
+http://sourceware.org/libffi) is required when building the Zero version of
+Hotspot.
+
+ * To install on an apt-based Linux, try running `sudo apt-get install
+ libffi-dev`.
+ * To install on an rpm-based Linux, try running `sudo yum install
+ libffi-devel`.
+
+Use `--with-libffi=<path>` if `configure` does not properly locate your libffi
+files.
+
+### libelf
+
+libelf from the [elfutils project](http://sourceware.org/elfutils) is required
+when building the AOT feature of Hotspot.
+
+ * To install on an apt-based Linux, try running `sudo apt-get install
+ libelf-dev`.
+ * To install on an rpm-based Linux, try running `sudo yum install
+ elfutils-libelf-devel`.
+
+Use `--with-libelf=<path>` if `configure` does not properly locate your libelf
+files.
+
+## Other Tooling Requirements
+
+### GNU Make
+
+OpenJDK requires [GNU Make](http://www.gnu.org/software/make). No other flavors
+of make are supported.
+
+At least version 3.81 of GNU Make must be used. For distributions supporting
+GNU Make 4.0 or above, we strongly recommend it. GNU Make 4.0 contains useful
+functionality to handle parallel building (supported by `--with-output-sync`)
+and speed and stability improvements.
+
+Note that `configure` locates and verifies a properly functioning version of
+`make` and stores the path to this `make` binary in the configuration. If you
+start a build using `make` on the command line, you will be using the version
+of make found first in your `PATH`, and not necessarily the one stored in the
+configuration. This initial make will be used as "bootstrap make", and in a
+second stage, the make located by `configure` will be called. Normally, this
+will present no issues, but if you have a very old `make`, or a non-GNU Make
+`make` in your path, this might cause issues.
+
+If you want to override the default make found by `configure`, use the `MAKE`
+configure variable, e.g. `configure MAKE=/opt/gnu/make`.
+
+On Solaris, it is common to call the GNU version of make by using `gmake`.
+
+### GNU Bash
+
+OpenJDK requires [GNU Bash](http://www.gnu.org/software/bash). No other shells
+are supported.
+
+At least version 3.2 of GNU Bash must be used.
+
+### Autoconf
+
+If you want to modify the build system itself, you need to install [Autoconf](
+http://www.gnu.org/software/autoconf).
+
+However, if you only need to build OpenJDK or if you only edit the actual
+OpenJDK source files, there is no dependency on autoconf, since the source
+distribution includes a pre-generated `configure` shell script.
+
+See the section on [Autoconf Details](#autoconf-details) for details on how
+OpenJDK uses autoconf. This is especially important if you plan to contribute
+changes to OpenJDK that modifies the build system.
+
+## Running Configure
+
+To build OpenJDK, you need a "configuration", which consists of a directory
+where to store the build output, coupled with information about the platform,
+the specific build machine, and choices that affect how OpenJDK is built.
+
+The configuration is created by the `configure` script. The basic invocation of
+the `configure` script looks like this:
+
+```
+bash configure [options]
+```
+
+This will create an output directory containing the configuration and setup an
+area for the build result. This directory typically looks like
+`build/linux-x64-normal-server-release`, but the actual name depends on your
+specific configuration. (It can also be set directly, see [Using Multiple
+Configurations](#using-multiple-configurations)). This directory is referred to
+as `$BUILD` in this documentation.
+
+`configure` will try to figure out what system you are running on and where all
+necessary build components are. If you have all prerequisites for building
+installed, it should find everything. If it fails to detect any component
+automatically, it will exit and inform you about the problem.
+
+Some command line examples:
+
+ * Create a 32-bit build for Windows with FreeType2 in `C:\freetype-i586`:
+ ```
+ bash configure --with-freetype=/cygdrive/c/freetype-i586 --with-target-bits=32
+ ```
+
+ * Create a debug build with the `server` JVM and DTrace enabled:
+ ```
+ bash configure --enable-debug --with-jvm-variants=server --enable-dtrace
+ ```
+
+### Common Configure Arguments
+
+Here follows some of the most common and important `configure` argument.
+
+To get up-to-date information on *all* available `configure` argument, please
+run:
+```
+bash configure --help
+```
+
+(Note that this help text also include general autoconf options, like
+`--dvidir`, that is not relevant to OpenJDK. To list only OpenJDK specific
+features, use `bash configure --help=short` instead.)
+
+#### Configure Arguments for Tailoring the Build
+
+ * `--enable-debug` - Set the debug level to `fastdebug` (this is a shorthand
+ for `--with-debug-level=fastdebug`)
+ * `--with-debug-level=<level>` - Set the debug level, which can be `release`,
+ `fastdebug`, `slowdebug` or `optimized`. Default is `release`. `optimized`
+ is variant of `release` with additional Hotspot debug code.
+ * `--with-native-debug-symbols=<method>` - Specify if and how native debug
+ symbols should be built. Available methods are `none`, `internal`,
+ `external`, `zipped`. Default behavior depends on platform. See [Native
+ Debug Symbols](#native-debug-symbols) for more details.
+ * `--with-version-string=<string>` - Specify the version string this build
+ will be identified with.
+ * `--with-version-<part>=<value>` - A group of options, where `<part>` can be
+ any of `pre`, `opt`, `build`, `major`, `minor`, `security` or `patch`. Use
+ these options to modify just the corresponding part of the version string
+ from the default, or the value provided by `--with-version-string`.
+ * `--with-jvm-variants=<variant>[,<variant>...]` - Build the specified variant
+ (or variants) of Hotspot. Valid variants are: `server`, `client`,
+ `minimal`, `core`, `zero`, `zeroshark`, `custom`. Note that not all
+ variants are possible to combine in a single build.
+ * `--with-jvm-features=<feature>[,<feature>...]` - Use the specified JVM
+ features when building Hotspot. The list of features will be enabled on top
+ of the default list. For the `custom` JVM variant, this default list is
+ empty. A complete list of available JVM features can be found using `bash
+ configure --help`.
+ * `--with-target-bits=<bits>` - Create a target binary suitable for running
+ on a `<bits>` platform. Use this to create 32-bit output on a 64-bit build
+ platform, instead of doing a full cross-compile. (This is known as a
+ *reduced* build.)
+
+#### Configure Arguments for Native Compilation
+
+ * `--with-devkit=<path>` - Use this devkit for compilers, tools and resources
+ * `--with-sysroot=<path>` - Use this directory as sysroot
+ * `--with-extra-path=<path>[;<path>]` - Prepend these directories to the
+ default path when searching for all kinds of binaries
+ * `--with-toolchain-path=<path>[;<path>]` - Prepend these directories when
+ searching for toolchain binaries (compilers etc)
+ * `--with-extra-cflags=<flags>` - Append these flags when compiling JDK C
+ files
+ * `--with-extra-cxxflags=<flags>` - Append these flags when compiling JDK C++
+ files
+ * `--with-extra-ldflags=<flags>` - Append these flags when linking JDK
+ libraries
+
+#### Configure Arguments for External Dependencies
+
+ * `--with-boot-jdk=<path>` - Set the path to the [Boot JDK](
+ #boot-jdk-requirements)
+ * `--with-freetype=<path>` - Set the path to [FreeType](#freetype)
+ * `--with-cups=<path>` - Set the path to [CUPS](#cups)
+ * `--with-x=<path>` - Set the path to [X11](#x11)
+ * `--with-alsa=<path>` - Set the path to [ALSA](#alsa)
+ * `--with-libffi=<path>` - Set the path to [libffi](#libffi)
+ * `--with-libelf=<path>` - Set the path to [libelf](#libelf)
+ * `--with-jtreg=<path>` - Set the path to JTReg. See [Running Tests](
+ #running-tests)
+
+Certain third-party libraries used by OpenJDK (libjpeg, giflib, libpng, lcms
+and zlib) are included in the OpenJDK repository. The default behavior of the
+OpenJDK build is to use this version of these libraries, but they might be
+replaced by an external version. To do so, specify `system` as the `<source>`
+option in these arguments. (The default is `bundled`).
+
+ * `--with-libjpeg=<source>` - Use the specified source for libjpeg
+ * `--with-giflib=<source>` - Use the specified source for giflib
+ * `--with-libpng=<source>` - Use the specified source for libpng
+ * `--with-lcms=<source>` - Use the specified source for lcms
+ * `--with-zlib=<source>` - Use the specified source for zlib
+
+On Linux, it is possible to select either static or dynamic linking of the C++
+runtime. The default is static linking, with dynamic linking as fallback if the
+static library is not found.
+
+ * `--with-stdc++lib=<method>` - Use the specified method (`static`, `dynamic`
+ or `default`) for linking the C++ runtime.
+
+### Configure Control Variables
+
+It is possible to control certain aspects of `configure` by overriding the
+value of `configure` variables, either on the command line or in the
+environment.
+
+Normally, this is **not recommended**. If used improperly, it can lead to a
+broken configuration. Unless you're well versed in the build system, this is
+hard to use properly. Therefore, `configure` will print a warning if this is
+detected.
+
+However, there are a few `configure` variables, known as *control variables*
+that are supposed to be overriden on the command line. These are variables that
+describe the location of tools needed by the build, like `MAKE` or `GREP`. If
+any such variable is specified, `configure` will use that value instead of
+trying to autodetect the tool. For instance, `bash configure
+MAKE=/opt/gnumake4.0/bin/make`.
+
+If a configure argument exists, use that instead, e.g. use `--with-jtreg`
+instead of setting `JTREGEXE`.
+
+Also note that, despite what autoconf claims, setting `CFLAGS` will not
+accomplish anything. Instead use `--with-extra-cflags` (and similar for
+`cxxflags` and `ldflags`).
+
+## Running Make
+
+When you have a proper configuration, all you need to do to build OpenJDK is to
+run `make`. (But see the warning at [GNU Make](#gnu-make) about running the
+correct version of make.)
+
+When running `make` without any arguments, the default target is used, which is
+the same as running `make default` or `make jdk`. This will build a minimal (or
+roughly minimal) set of compiled output (known as an "exploded image") needed
+for a developer to actually execute the newly built JDK. The idea is that in an
+incremental development fashion, when doing a normal make, you should only
+spend time recompiling what's changed (making it purely incremental) and only
+do the work that's needed to actually run and test your code.
+
+The output of the exploded image resides in `$BUILD/jdk`. You can test the
+newly built JDK like this: `$BUILD/jdk/bin/java -version`.
+
+### Common Make Targets
+
+Apart from the default target, here are some common make targets:
+
+ * `hotspot` - Build all of hotspot (but only hotspot)
+ * `hotspot-<variant>` - Build just the specified jvm variant
+ * `images` or `product-images` - Build the JRE and JDK images
+ * `docs` or `docs-image` - Build the documentation image
+ * `test-image` - Build the test image
+ * `all` or `all-images` - Build all images (product, docs and test)
+ * `bootcycle-images` - Build images twice, second time with newly built JDK
+ (good for testing)
+ * `clean` - Remove all files generated by make, but not those generated by
+ configure
+ * `dist-clean` - Remove all files, including configuration
+
+Run `make help` to get an up-to-date list of important make targets and make
+control variables.
+
+It is possible to build just a single module, a single phase, or a single phase
+of a single module, by creating make targets according to these followin
+patterns. A phase can be either of `gensrc`, `gendata`, `copy`, `java`,
+`launchers`, `libs` or `rmic`. See [Using Fine-Grained Make Targets](
+#using-fine-grained-make-targets) for more details about this functionality.
+
+ * `<phase>` - Build the specified phase and everything it depends on
+ * `<module>` - Build the specified module and everything it depends on
+ * `<module>-<phase>` - Compile the specified phase for the specified module
+ and everything it depends on
+
+Similarly, it is possible to clean just a part of the build by creating make
+targets according to these patterns:
+
+ * `clean-<outputdir>` - Remove the subdir in the output dir with the name
+ * `clean-<phase>` - Remove all build results related to a certain build
+ phase
+ * `clean-<module>` - Remove all build results related to a certain module
+ * `clean-<module>-<phase>` - Remove all build results related to a certain
+ module and phase
+
+### Make Control Variables
+
+It is possible to control `make` behavior by overriding the value of `make`
+variables, either on the command line or in the environment.
+
+Normally, this is **not recommended**. If used improperly, it can lead to a
+broken build. Unless you're well versed in the build system, this is hard to
+use properly. Therefore, `make` will print a warning if this is detected.
+
+However, there are a few `make` variables, known as *control variables* that
+are supposed to be overriden on the command line. These make up the "make time"
+configuration, as opposed to the "configure time" configuration.
+
+#### General Make Control Variables
+
+ * `JOBS` - Specify the number of jobs to build with. See [Build
+ Performance](#build-performance).
+ * `LOG` - Specify the logging level and functionality. See [Checking the
+ Build Log File](#checking-the-build-log-file)
+ * `CONF` and `CONF_NAME` - Selecting the configuration(s) to use. See [Using
+ Multiple Configurations](#using-multiple-configurations)
+
+#### Test Make Control Variables
+
+These make control variables only make sense when running tests. Please see
+[Testing OpenJDK](testing.html) for details.
+
+ * `TEST`
+ * `TEST_JOBS`
+ * `JTREG`
+ * `GTEST`
+
+#### Advanced Make Control Variables
+
+These advanced make control variables can be potentially unsafe. See [Hints and
+Suggestions for Advanced Users](#hints-and-suggestions-for-advanced-users) and
+[Understanding the Build System](#understanding-the-build-system) for details.
+
+ * `SPEC`
+ * `CONF_CHECK`
+ * `COMPARE_BUILD`
+ * `JDK_FILTER`
+
+## Running Tests
+
+Most of the OpenJDK tests are using the [JTReg](http://openjdk.java.net/jtreg)
+test framework. Make sure that your configuration knows where to find your
+installation of JTReg. If this is not picked up automatically, use the
+`--with-jtreg=<path to jtreg home>` option to point to the JTReg framework.
+Note that this option should point to the JTReg home, i.e. the top directory,
+containing `lib/jtreg.jar` etc.
+
+To execute the most basic tests (tier 1), use:
+```
+make run-test-tier1
+```
+
+For more details on how to run tests, please see the [Testing
+OpenJDK](testing.html) document.
+
+## Cross-compiling
+
+Cross-compiling means using one platform (the *build* platform) to generate
+output that can ran on another platform (the *target* platform).
+
+The typical reason for cross-compiling is that the build is performed on a more
+powerful desktop computer, but the resulting binaries will be able to run on a
+different, typically low-performing system. Most of the complications that
+arise when building for embedded is due to this separation of *build* and
+*target* systems.
+
+This requires a more complex setup and build procedure. This section assumes
+you are familiar with cross-compiling in general, and will only deal with the
+particularities of cross-compiling OpenJDK. If you are new to cross-compiling,
+please see the [external links at Wikipedia](
+https://en.wikipedia.org/wiki/Cross_compiler#External_links) for a good start
+on reading materials.
+
+Cross-compiling OpenJDK requires you to be able to build both for the build
+platform and for the target platform. The reason for the former is that we need
+to build and execute tools during the build process, both native tools and Java
+tools.
+
+If all you want to do is to compile a 32-bit version, for the same OS, on a
+64-bit machine, consider using `--with-target-bits=32` instead of doing a
+full-blown cross-compilation. (While this surely is possible, it's a lot more
+work and will take much longer to build.)
+
+### Boot JDK and Build JDK
+
+When cross-compiling, make sure you use a boot JDK that runs on the *build*
+system, and not on the *target* system.
+
+To be able to build, we need a "Build JDK", which is a JDK built from the
+current sources (that is, the same as the end result of the entire build
+process), but able to run on the *build* system, and not the *target* system.
+(In contrast, the Boot JDK should be from an older release, e.g. JDK 8 when
+building JDK 9.)
+
+The build process will create a minimal Build JDK for you, as part of building.
+To speed up the build, you can use `--with-build-jdk` to `configure` to point
+to a pre-built Build JDK. Please note that the build result is unpredictable,
+and can possibly break in subtle ways, if the Build JDK does not **exactly**
+match the current sources.
+
+### Specifying the Target Platform
+
+You *must* specify the target platform when cross-compiling. Doing so will also
+automatically turn the build into a cross-compiling mode. The simplest way to
+do this is to use the `--openjdk-target` argument, e.g.
+`--openjdk-target=arm-linux-gnueabihf`. or `--openjdk-target=aarch64-oe-linux`.
+This will automatically set the `--build`, `--host` and `--target` options for
+autoconf, which can otherwise be confusing. (In autoconf terminology, the
+"target" is known as "host", and "target" is used for building a Canadian
+cross-compiler.)
+
+### Toolchain Considerations
+
+You will need two copies of your toolchain, one which generates output that can
+run on the target system (the normal, or *target*, toolchain), and one that
+generates output that can run on the build system (the *build* toolchain). Note
+that cross-compiling is only supported for gcc at the time being. The gcc
+standard is to prefix cross-compiling toolchains with the target denominator.
+If you follow this standard, `configure` is likely to pick up the toolchain
+correctly.
+
+The *build* toolchain will be autodetected just the same way the normal
+*build*/*target* toolchain will be autodetected when not cross-compiling. If
+this is not what you want, or if the autodetection fails, you can specify a
+devkit containing the *build* toolchain using `--with-build-devkit` to
+`configure`, or by giving `BUILD_CC` and `BUILD_CXX` arguments.
+
+It is often helpful to locate the cross-compilation tools, headers and
+libraries in a separate directory, outside the normal path, and point out that
+directory to `configure`. Do this by setting the sysroot (`--with-sysroot`) and
+appending the directory when searching for cross-compilations tools
+(`--with-toolchain-path`). As a compact form, you can also use `--with-devkit`
+to point to a single directory, if it is correctly setup. (See `basics.m4` for
+details.)
+
+If you are unsure what toolchain and versions to use, these have been proved
+working at the time of writing:
+
+ * [aarch64](
+https://releases.linaro.org/archive/13.11/components/toolchain/binaries/gcc-linaro-aarch64-linux-gnu-4.8-2013.11_linux.tar.xz)
+ * [arm 32-bit hardware floating point](
+https://launchpad.net/linaro-toolchain-unsupported/trunk/2012.09/+download/gcc-linaro-arm-linux-gnueabihf-raspbian-2012.09-20120921_linux.tar.bz2)
+
+### Native Libraries
+
+You will need copies of external native libraries for the *target* system,
+present on the *build* machine while building.
+
+Take care not to replace the *build* system's version of these libraries by
+mistake, since that can render the *build* machine unusable.
+
+Make sure that the libraries you point to (ALSA, X11, etc) are for the
+*target*, not the *build*, platform.
+
+#### ALSA
+
+You will need alsa libraries suitable for your *target* system. For most cases,
+using Debian's pre-built libraries work fine.
+
+Note that alsa is needed even if you only want to build a headless JDK.
+
+ * Go to [Debian Package Search](https://www.debian.org/distrib/packages) and
+ search for the `libasound2` and `libasound2-dev` packages for your *target*
+ system. Download them to /tmp.
+
+ * Install the libraries into the cross-compilation toolchain. For instance:
+```
+cd /tools/gcc-linaro-arm-linux-gnueabihf-raspbian-2012.09-20120921_linux/arm-linux-gnueabihf/libc
+dpkg-deb -x /tmp/libasound2_1.0.25-4_armhf.deb .
+dpkg-deb -x /tmp/libasound2-dev_1.0.25-4_armhf.deb .
+```
+
+ * If alsa is not properly detected by `configure`, you can point it out by
+ `--with-alsa`.
+
+#### X11
+
+You will need X11 libraries suitable for your *target* system. For most cases,
+using Debian's pre-built libraries work fine.
+
+Note that X11 is needed even if you only want to build a headless JDK.
+
+ * Go to [Debian Package Search](https://www.debian.org/distrib/packages),
+ search for the following packages for your *target* system, and download them
+ to /tmp/target-x11:
+ * libxi
+ * libxi-dev
+ * x11proto-core-dev
+ * x11proto-input-dev
+ * x11proto-kb-dev
+ * x11proto-render-dev
+ * x11proto-xext-dev
+ * libice-dev
+ * libxrender
+ * libxrender-dev
+ * libsm-dev
+ * libxt-dev
+ * libx11
+ * libx11-dev
+ * libxtst
+ * libxtst-dev
+ * libxext
+ * libxext-dev
+
+ * Install the libraries into the cross-compilation toolchain. For instance:
+ ```
+ cd /tools/gcc-linaro-arm-linux-gnueabihf-raspbian-2012.09-20120921_linux/arm-linux-gnueabihf/libc/usr
+ mkdir X11R6
+ cd X11R6
+ for deb in /tmp/target-x11/*.deb ; do dpkg-deb -x $deb . ; done
+ mv usr/* .
+ cd lib
+ cp arm-linux-gnueabihf/* .
+ ```
+
+ You can ignore the following messages. These libraries are not needed to
+ successfully complete a full JDK build.
+ ```
+ cp: cannot stat `arm-linux-gnueabihf/libICE.so': No such file or directory
+ cp: cannot stat `arm-linux-gnueabihf/libSM.so': No such file or directory
+ cp: cannot stat `arm-linux-gnueabihf/libXt.so': No such file or directory
+ ```
+
+ * If the X11 libraries are not properly detected by `configure`, you can
+ point them out by `--with-x`.
+
+### Building for ARM/aarch64
+
+A common cross-compilation target is the ARM CPU. When building for ARM, it is
+useful to set the ABI profile. A number of pre-defined ABI profiles are
+available using `--with-abi-profile`: arm-vfp-sflt, arm-vfp-hflt, arm-sflt,
+armv5-vfp-sflt, armv6-vfp-hflt. Note that soft-float ABIs are no longer
+properly supported on OpenJDK.
+
+OpenJDK contains two different ports for the aarch64 platform, one is the
+original aarch64 port from the [AArch64 Port Project](
+http://openjdk.java.net/projects/aarch64-port) and one is a 64-bit version of
+the Oracle contributed ARM port. When targeting aarch64, by the default the
+original aarch64 port is used. To select the Oracle ARM 64 port, use
+`--with-cpu-port=arm64`. Also set the corresponding value (`aarch64` or
+`arm64`) to --with-abi-profile, to ensure a consistent build.
+
+### Verifying the Build
+
+The build will end up in a directory named like
+`build/linux-arm-normal-server-release`.
+
+Inside this build output directory, the `images/jdk` and `images/jre` will
+contain the newly built JDK and JRE, respectively, for your *target* system.
+
+Copy these folders to your *target* system. Then you can run e.g.
+`images/jdk/bin/java -version`.
+
+## Build Performance
+
+Building OpenJDK requires a lot of horsepower. Some of the build tools can be
+adjusted to utilize more or less of resources such as parallel threads and
+memory. The `configure` script analyzes your system and selects reasonable
+values for such options based on your hardware. If you encounter resource
+problems, such as out of memory conditions, you can modify the detected values
+with:
+
+ * `--with-num-cores` -- number of cores in the build system, e.g.
+ `--with-num-cores=8`.
+
+ * `--with-memory-size` -- memory (in MB) available in the build system, e.g.
+ `--with-memory-size=1024`
+
+You can also specify directly the number of build jobs to use with
+`--with-jobs=N` to `configure`, or `JOBS=N` to `make`. Do not use the `-j` flag
+to `make`. In most cases it will be ignored by the makefiles, but it can cause
+problems for some make targets.
+
+It might also be necessary to specify the JVM arguments passed to the Boot JDK,
+using e.g. `--with-boot-jdk-jvmargs="-Xmx8G"`. Doing so will override the
+default JVM arguments passed to the Boot JDK.
+
+At the end of a successful execution of `configure`, you will get a performance
+summary, indicating how well the build will perform. Here you will also get
+performance hints. If you want to build fast, pay attention to those!
+
+If you want to tweak build performance, run with `make LOG=info` to get a build
+time summary at the end of the build process.
+
+### Disk Speed
+
+If you are using network shares, e.g. via NFS, for your source code, make sure
+the build directory is situated on local disk (e.g. by `ln -s
+/localdisk/jdk-build $JDK-SHARE/build`). The performance penalty is extremely
+high for building on a network share; close to unusable.
+
+Also, make sure that your build tools (including Boot JDK and toolchain) is
+located on a local disk and not a network share.
+
+As has been stressed elsewhere, do use SSD for source code and build directory,
+as well as (if possible) the build tools.
+
+### Virus Checking
+
+The use of virus checking software, especially on Windows, can *significantly*
+slow down building of OpenJDK. If possible, turn off such software, or exclude
+the directory containing the OpenJDK source code from on-the-fly checking.
+
+### Ccache
+
+The OpenJDK build supports building with ccache when using gcc or clang. Using
+ccache can radically speed up compilation of native code if you often rebuild
+the same sources. Your milage may vary however, so we recommend evaluating it
+for yourself. To enable it, make sure it's on the path and configure with
+`--enable-ccache`.
+
+### Precompiled Headers
+
+By default, the Hotspot build uses preccompiled headers (PCH) on the toolchains
+were it is properly supported (clang, gcc, and Visual Studio). Normally, this
+speeds up the build process, but in some circumstances, it can actually slow
+things down.
+
+You can experiment by disabling precompiled headers using
+`--disable-precompiled-headers`.
+
+### Icecc / icecream
+
+[icecc/icecream](http://github.com/icecc/icecream) is a simple way to setup a
+distributed compiler network. If you have multiple machines available for
+building OpenJDK, you can drastically cut individual build times by utilizing
+it.
+
+To use, setup an icecc network, and install icecc on the build machine. Then
+run `configure` using `--enable-icecc`.
+
+### Using sjavac
+
+To speed up Java compilation, especially incremental compilations, you can try
+the experimental sjavac compiler by using `--enable-sjavac`.
+
+### Building the Right Target
+
+Selecting the proper target to build can have dramatic impact on build time.
+For normal usage, `jdk` or the default target is just fine. You only need to
+build `images` for shipping, or if your tests require it.
+
+See also [Using Fine-Grained Make Targets](#using-fine-grained-make-targets) on
+how to build an even smaller subset of the product.
+
+## Troubleshooting
+
+If your build fails, it can sometimes be difficult to pinpoint the problem or
+find a proper solution.
+
+### Locating the Source of the Error
+
+When a build fails, it can be hard to pinpoint the actual cause of the error.
+In a typical build process, different parts of the product build in parallel,
+with the output interlaced.
+
+#### Build Failure Summary
+
+To help you, the build system will print a failure summary at the end. It looks
+like this:
+
+```
+ERROR: Build failed for target 'hotspot' in configuration 'linux-x64' (exit code 2)
+
+=== Output from failing command(s) repeated here ===
+* For target hotspot_variant-server_libjvm_objs_psMemoryPool.o:
+/localhome/hg/jdk9-sandbox/hotspot/src/share/vm/services/psMemoryPool.cpp:1:1: error: 'failhere' does not name a type
+ ... (rest of output omitted)
+
+* All command lines available in /localhome/hg/jdk9-sandbox/build/linux-x64/make-support/failure-logs.
+=== End of repeated output ===
+
+=== Make failed targets repeated here ===
+lib/CompileJvm.gmk:207: recipe for target '/localhome/hg/jdk9-sandbox/build/linux-x64/hotspot/variant-server/libjvm/objs/psMemoryPool.o' failed
+make/Main.gmk:263: recipe for target 'hotspot-server-libs' failed
+=== End of repeated output ===
+
+Hint: Try searching the build log for the name of the first failed target.
+Hint: If caused by a warning, try configure --disable-warnings-as-errors.
+```
+
+Let's break it down! First, the selected configuration, and the top-level
+target you entered on the command line that caused the failure is printed.
+
+Then, between the `Output from failing command(s) repeated here` and `End of
+repeated output` the first lines of output (stdout and stderr) from the actual
+failing command is repeated. In most cases, this is the error message that
+caused the build to fail. If multiple commands were failing (this can happen in
+a parallel build), output from all failed commands will be printed here.
+
+The path to the `failure-logs` directory is printed. In this file you will find
+a `<target>.log` file that contains the output from this command in its
+entirety, and also a `<target>.cmd`, which contain the complete command line
+used for running this command. You can re-run the failing command by executing
+`. <path to failure-logs>/<target>.cmd` in your shell.
+
+Another way to trace the failure is to follow the chain of make targets, from
+top-level targets to individual file targets. Between `Make failed targets
+repeated here` and `End of repeated output` the output from make showing this
+chain is repeated. The first failed recipe will typically contain the full path
+to the file in question that failed to compile. Following lines will show a
+trace of make targets why we ended up trying to compile that file.
+
+Finally, some hints are given on how to locate the error in the complete log.
+In this example, we would try searching the log file for "`psMemoryPool.o`".
+Another way to quickly locate make errors in the log is to search for "`]
+Error`" or "`***`".
+
+Note that the build failure summary will only help you if the issue was a
+compilation failure or similar. If the problem is more esoteric, or is due to
+errors in the build machinery, you will likely get empty output logs, and `No
+indication of failed target found` instead of the make target chain.
+
+#### Checking the Build Log File
+
+The output (stdout and stderr) from the latest build is always stored in
+`$BUILD/build.log`. The previous build log is stored as `build.log.old`. This
+means that it is not necessary to redirect the build output yourself if you
+want to process it.
+
+You can increase the verbosity of the log file, by the `LOG` control variable
+to `make`. If you want to see the command lines used in compilations, use
+`LOG=cmdlines`. To increase the general verbosity, use `LOG=info`, `LOG=debug`
+or `LOG=trace`. Both of these can be combined with `cmdlines`, e.g.
+`LOG=info,cmdlines`. The `debug` log level will show most shell commands
+executed by make, and `trace` will show all. Beware that both these log levels
+will produce a massive build log!
+
+### Fixing Unexpected Build Failures
+
+Most of the time, the build will fail due to incorrect changes in the source
+code.
+
+Sometimes the build can fail with no apparent changes that have caused the
+failure. If this is the first time you are building OpenJDK on this particular
+computer, and the build fails, the problem is likely with your build
+environment. But even if you have previously built OpenJDK with success, and it
+now fails, your build environment might have changed (perhaps due to OS
+upgrades or similar). But most likely, such failures are due to problems with
+the incremental rebuild.
+
+#### Problems with the Build Environment
+
+Make sure your configuration is correct. Re-run `configure`, and look for any
+warnings. Warnings that appear in the middle of the `configure` output is also
+repeated at the end, after the summary. The entire log is stored in
+`$BUILD/configure.log`.
+
+Verify that the summary at the end looks correct. Are you indeed using the Boot
+JDK and native toolchain that you expect?
+
+By default, OpenJDK has a strict approach where warnings from the compiler is
+considered errors which fail the build. For very new or very old compiler
+versions, this can trigger new classes of warnings, which thus fails the build.
+Run `configure` with `--disable-warnings-as-errors` to turn of this behavior.
+(The warnings will still show, but not make the build fail.)
+
+#### Problems with Incremental Rebuilds
+
+Incremental rebuilds mean that when you modify part of the product, only the
+affected parts get rebuilt. While this works great in most cases, and
+significantly speed up the development process, from time to time complex
+interdependencies will result in an incorrect build result. This is the most
+common cause for unexpected build problems, together with inconsistencies
+between the different Mercurial repositories in the forest.
+
+Here are a suggested list of things to try if you are having unexpected build
+problems. Each step requires more time than the one before, so try them in
+order. Most issues will be solved at step 1 or 2.
+
+ 1. Make sure your forest is up-to-date
+
+ Run `bash get_source.sh` to make sure you have the latest version of all
+ repositories.
+
+ 2. Clean build results
+
+ The simplest way to fix incremental rebuild issues is to run `make clean`.
+ This will remove all build results, but not the configuration or any build
+ system support artifacts. In most cases, this will solve build errors
+ resulting from incremental build mismatches.
+
+ 3. Completely clean the build directory.
+
+ If this does not work, the next step is to run `make dist-clean`, or
+ removing the build output directory (`$BUILD`). This will clean all
+ generated output, including your configuration. You will need to re-run
+ `configure` after this step. A good idea is to run `make
+ print-configuration` before running `make dist-clean`, as this will print
+ your current `configure` command line. Here's a way to do this:
+
+ ```
+ make print-configuration > current-configuration
+ make dist-clean
+ bash configure $(cat current-configuration)
+ make
+ ```
+
+ 4. Re-clone the Mercurial forest
+
+ Sometimes the Mercurial repositories themselves gets in a state that causes
+ the product to be un-buildable. In such a case, the simplest solution is
+ often the "sledgehammer approach": delete the entire forest, and re-clone
+ it. If you have local changes, save them first to a different location
+ using `hg export`.
+
+### Specific Build Issues
+
+#### Clock Skew
+
+If you get an error message like this:
+```
+File 'xxx' has modification time in the future.
+Clock skew detected. Your build may be incomplete.
+```
+then the clock on your build machine is out of sync with the timestamps on the
+source files. Other errors, apparently unrelated but in fact caused by the
+clock skew, can occur along with the clock skew warnings. These secondary
+errors may tend to obscure the fact that the true root cause of the problem is
+an out-of-sync clock.
+
+If you see these warnings, reset the clock on the build machine, run `make
+clean` and restart the build.
+
+#### Out of Memory Errors
+
+On Solaris, you might get an error message like this:
+```
+Trouble writing out table to disk
+```
+To solve this, increase the amount of swap space on your build machine.
+
+On Windows, you might get error messages like this:
+```
+fatal error - couldn't allocate heap
+cannot create ... Permission denied
+spawn failed
+```
+This can be a sign of a Cygwin problem. See the information about solving
+problems in the [Cygwin](#cygwin) section. Rebooting the computer might help
+temporarily.
+
+### Getting Help
+
+If none of the suggestions in this document helps you, or if you find what you
+believe is a bug in the build system, please contact the Build Group by sending
+a mail to [build-dev@openjdk.java.net](mailto:build-dev@openjdk.java.net).
+Please include the relevant parts of the configure and/or build log.
+
+If you need general help or advice about developing for OpenJDK, you can also
+contact the Adoption Group. See the section on [Contributing to OpenJDK](
+#contributing-to-openjdk) for more information.
+
+## Hints and Suggestions for Advanced Users
+
+### Setting Up a Forest for Pushing Changes (defpath)
+
+To help you prepare a proper push path for a Mercurial repository, there exists
+a useful tool known as [defpath](
+http://openjdk.java.net/projects/code-tools/defpath). It will help you setup a
+proper push path for pushing changes to OpenJDK.
+
+Install the extension by cloning
+`http://hg.openjdk.java.net/code-tools/defpath` and updating your `.hgrc` file.
+Here's one way to do this:
+
+```
+cd ~
+mkdir hg-ext
+cd hg-ext
+hg clone http://hg.openjdk.java.net/code-tools/defpath
+cat << EOT >> ~/.hgrc
+[extensions]
+defpath=~/hg-ext/defpath/defpath.py
+EOT
+```
+
+You can now setup a proper push path using:
+```
+hg defpath -d -u <your OpenJDK username>
+```
+
+If you also have the `trees` extension installed in Mercurial, you will
+automatically get a `tdefpath` command, which is even more useful. By running
+`hg tdefpath -du <username>` in the top repository of your forest, all repos
+will get setup automatically. This is the recommended usage.
+
+### Bash Completion
+
+The `configure` and `make` commands tries to play nice with bash command-line
+completion (using `<tab>` or `<tab><tab>`). To use this functionality, make
+sure you enable completion in your `~/.bashrc` (see instructions for bash in
+your operating system).
+
+Make completion will work out of the box, and will complete valid make targets.
+For instance, typing `make jdk-i<tab>` will complete to `make jdk-image`.
+
+The `configure` script can get completion for options, but for this to work you
+need to help `bash` on the way. The standard way of running the script, `bash
+configure`, will not be understood by bash completion. You need `configure` to
+be the command to run. One way to achieve this is to add a simple helper script
+to your path:
+
+```
+cat << EOT > /tmp/configure
+#!/bin/bash
+if [ \$(pwd) = \$(cd \$(dirname \$0); pwd) ] ; then
+ echo >&2 "Abort: Trying to call configure helper recursively"
+ exit 1
+fi
+
+bash \$PWD/configure "\$@"
+EOT
+chmod +x /tmp/configure
+sudo mv /tmp/configure /usr/local/bin
+```
+
+Now `configure --en<tab>-dt<tab>` will result in `configure --enable-dtrace`.
+
+### Using Multiple Configurations
+
+You can have multiple configurations for a single source forest. When you
+create a new configuration, run `configure --with-conf-name=<name>` to create a
+configuration with the name `<name>`. Alternatively, you can create a directory
+under `build` and run `configure` from there, e.g. `mkdir build/<name> && cd
+build/<name> && bash ../../configure`.
+
+Then you can build that configuration using `make CONF_NAME=<name>` or `make
+CONF=<pattern>`, where `<pattern>` is a substring matching one or several
+configurations, e.g. `CONF=debug`. The special empty pattern (`CONF=`) will
+match *all* available configuration, so `make CONF= hotspot` will build the
+`hotspot` target for all configurations. Alternatively, you can execute `make`
+in the configuration directory, e.g. `cd build/<name> && make`.
+
+### Handling Reconfigurations
+
+If you update the forest and part of the configure script has changed, the
+build system will force you to re-run `configure`.
+
+Most of the time, you will be fine by running `configure` again with the same
+arguments as the last time, which can easily be performed by `make
+reconfigure`. To simplify this, you can use the `CONF_CHECK` make control
+variable, either as `make CONF_CHECK=auto`, or by setting an environment
+variable. For instance, if you add `export CONF_CHECK=auto` to your `.bashrc`
+file, `make` will always run `reconfigure` automatically whenever the configure
+script has changed.
+
+You can also use `CONF_CHECK=ignore` to skip the check for a needed configure
+update. This might speed up the build, but comes at the risk of an incorrect
+build result. This is only recommended if you know what you're doing.
+
+From time to time, you will also need to modify the command line to `configure`
+due to changes. Use `make print-configure` to show the command line used for
+your current configuration.
+
+### Using Fine-Grained Make Targets
+
+The default behavior for make is to create consistent and correct output, at
+the expense of build speed, if necessary.
+
+If you are prepared to take some risk of an incorrect build, and know enough of
+the system to understand how things build and interact, you can speed up the
+build process considerably by instructing make to only build a portion of the
+product.
+
+#### Building Individual Modules
+
+The safe way to use fine-grained make targets is to use the module specific
+make targets. All source code in JDK 9 is organized so it belongs to a module,
+e.g. `java.base` or `jdk.jdwp.agent`. You can build only a specific module, by
+giving it as make target: `make jdk.jdwp.agent`. If the specified module
+depends on other modules (e.g. `java.base`), those modules will be built first.
+
+You can also specify a set of modules, just as you can always specify a set of
+make targets: `make jdk.crypto.cryptoki jdk.crypto.ec jdk.crypto.mscapi
+jdk.crypto.ucrypto`
+
+#### Building Individual Module Phases
+
+The build process for each module is divided into separate phases. Not all
+modules need all phases. Which are needed depends on what kind of source code
+and other artifact the module consists of. The phases are:
+
+ * `gensrc` (Generate source code to compile)
+ * `gendata` (Generate non-source code artifacts)
+ * `copy` (Copy resource artifacts)
+ * `java` (Compile Java code)
+ * `launchers` (Compile native executables)
+ * `libs` (Compile native libraries)
+ * `rmic` (Run the `rmic` tool)
+
+You can build only a single phase for a module by using the notation
+`$MODULE-$PHASE`. For instance, to build the `gensrc` phase for `java.base`,
+use `make java.base-gensrc`.
+
+Note that some phases may depend on others, e.g. `java` depends on `gensrc` (if
+present). Make will build all needed prerequisites before building the
+requested phase.
+
+#### Skipping the Dependency Check
+
+When using an iterative development style with frequent quick rebuilds, the
+dependency check made by make can take up a significant portion of the time
+spent on the rebuild. In such cases, it can be useful to bypass the dependency
+check in make.
+
+> **Note that if used incorrectly, this can lead to a broken build!**
+
+To achieve this, append `-only` to the build target. For instance, `make
+jdk.jdwp.agent-java-only` will *only* build the `java` phase of the
+`jdk.jdwp.agent` module. If the required dependencies are not present, the
+build can fail. On the other hand, the execution time measures in milliseconds.
+
+A useful pattern is to build the first time normally (e.g. `make
+jdk.jdwp.agent`) and then on subsequent builds, use the `-only` make target.
+
+#### Rebuilding Part of java.base (JDK\_FILTER)
+
+If you are modifying files in `java.base`, which is the by far largest module
+in OpenJDK, then you need to rebuild all those files whenever a single file has
+changed. (This inefficiency will hopefully be addressed in JDK 10.)
+
+As a hack, you can use the make control variable `JDK_FILTER` to specify a
+pattern that will be used to limit the set of files being recompiled. For
+instance, `make java.base JDK_FILTER=javax/crypto` (or, to combine methods,
+`make java.base-java-only JDK_FILTER=javax/crypto`) will limit the compilation
+to files in the `javax.crypto` package.
+
+### Learn About Mercurial
+
+To become an efficient OpenJDK developer, it is recommended that you invest in
+learning Mercurial properly. Here are some links that can get you started:
+
+ * [Mercurial for git users](http://www.mercurial-scm.org/wiki/GitConcepts)
+ * [The official Mercurial tutorial](http://www.mercurial-scm.org/wiki/Tutorial)
+ * [hg init](http://hginit.com/)
+ * [Mercurial: The Definitive Guide](http://hgbook.red-bean.com/read/)
+
+## Understanding the Build System
+
+This section will give you a more technical description on the details of the
+build system.
+
+### Configurations
+
+The build system expects to find one or more configuration. These are
+technically defined by the `spec.gmk` in a subdirectory to the `build`
+subdirectory. The `spec.gmk` file is generated by `configure`, and contains in
+principle the configuration (directly or by files included by `spec.gmk`).
+
+You can, in fact, select a configuration to build by pointing to the `spec.gmk`
+file with the `SPEC` make control variable, e.g. `make SPEC=$BUILD/spec.gmk`.
+While this is not the recommended way to call `make` as a user, it is what is
+used under the hood by the build system.
+
+### Build Output Structure
+
+The build output for a configuration will end up in `build/<configuration
+name>`, which we refer to as `$BUILD` in this document. The `$BUILD` directory
+contains the following important directories:
+
+```
+buildtools/
+configure-support/
+hotspot/
+images/
+jdk/
+make-support/
+support/
+test-results/
+test-support/
+```
+
+This is what they are used for:
+
+ * `images`: This is the directory were the output of the `*-image` make
+ targets end up. For instance, `make jdk-image` ends up in `images/jdk`.
+
+ * `jdk`: This is the "exploded image". After `make jdk`, you will be able to
+ launch the newly built JDK by running `$BUILD/jdk/bin/java`.
+
+ * `test-results`: This directory contains the results from running tests.
+
+ * `support`: This is an area for intermediate files needed during the build,
+ e.g. generated source code, object files and class files. Some noteworthy
+ directories in `support` is `gensrc`, which contains the generated source
+ code, and the `modules_*` directories, which contains the files in a
+ per-module hierarchy that will later be collapsed into the `jdk` directory
+ of the exploded image.
+
+ * `buildtools`: This is an area for tools compiled for the build platform
+ that are used during the rest of the build.
+
+ * `hotspot`: This is an area for intermediate files needed when building
+ hotspot.
+
+ * `configure-support`, `make-support` and `test-support`: These directories
+ contain files that are needed by the build system for `configure`, `make`
+ and for running tests.
+
+### Fixpath
+
+Windows path typically look like `C:\User\foo`, while Unix paths look like
+`/home/foo`. Tools with roots from Unix often experience issues related to this
+mismatch when running on Windows.
+
+In the OpenJDK build, we always use Unix paths internally, and only just before
+calling a tool that does not understand Unix paths do we convert them to
+Windows paths.
+
+This conversion is done by the `fixpath` tool, which is a small wrapper that
+modifies unix-style paths to Windows-style paths in command lines. Fixpath is
+compiled automatically by `configure`.
+
+### Native Debug Symbols
+
+Native libraries and executables can have debug symbol (and other debug
+information) associated with them. How this works is very much platform
+dependent, but a common problem is that debug symbol information takes a lot of
+disk space, but is rarely needed by the end user.
+
+The OpenJDK supports different methods on how to handle debug symbols. The
+method used is selected by `--with-native-debug-symbols`, and available methods
+are `none`, `internal`, `external`, `zipped`.
+
+ * `none` means that no debug symbols will be generated during the build.
+
+ * `internal` means that debug symbols will be generated during the build, and
+ they will be stored in the generated binary.
+
+ * `external` means that debug symbols will be generated during the build, and
+ after the compilation, they will be moved into a separate `.debuginfo` file.
+ (This was previously known as FDS, Full Debug Symbols).
+
+ * `zipped` is like `external`, but the .debuginfo file will also be zipped
+ into a `.diz` file.
+
+When building for distribution, `zipped` is a good solution. Binaries built
+with `internal` is suitable for use by developers, since they facilitate
+debugging, but should be stripped before distributed to end users.
+
+### Autoconf Details
+
+The `configure` script is based on the autoconf framework, but in some details
+deviate from a normal autoconf `configure` script.
+
+The `configure` script in the top level directory of OpenJDK is just a thin
+wrapper that calls `common/autoconf/configure`. This in turn provides
+functionality that is not easily expressed in the normal Autoconf framework,
+and then calls into the core of the `configure` script, which is the
+`common/autoconf/generated-configure.sh` file.
+
+As the name implies, this file is generated by Autoconf. It is checked in after
+regeneration, to alleviate the common user to have to install Autoconf.
+
+The build system will detect if the Autoconf source files have changed, and
+will trigger a regeneration of `common/autoconf/generated-configure.sh` if
+needed. You can also manually request such an update by `bash
+common/autoconf/autogen.sh`.
+
+If you make changes to the build system that requires a re-generation, note the
+following:
+
+ * You must use *exactly* version 2.69 of autoconf for your patch to be
+ accepted. This is to avoid spurious changes in the generated file. Note
+ that Ubuntu 16.04 ships a patched version of autoconf which claims to be
+ 2.69, but is not.
+
+ * You do not need to include the generated file in reviews.
+
+ * If the generated file needs updating, the Oracle JDK closed counter-part
+ will also need to be updated. It is very much appreciated if you ask for an
+ Oracle engineer to sponsor your push so this can be made in tandem.
+
+### Developing the Build System Itself
+
+This section contains a few remarks about how to develop for the build system
+itself. It is not relevant if you are only making changes in the product source
+code.
+
+While technically using `make`, the make source files of the OpenJDK does not
+resemble most other Makefiles. Instead of listing specific targets and actions
+(perhaps using patterns), the basic modus operandi is to call a high-level
+function (or properly, macro) from the API in `make/common`. For instance, to
+compile all classes in the `jdk.internal.foo` package in the `jdk.foo` module,
+a call like this would be made:
+
+```
+$(eval $(call SetupJavaCompilation, BUILD_FOO_CLASSES, \
+ SETUP := GENERATE_OLDBYTECODE, \
+ SRC := $(JDK_TOPDIR)/src/jkd.foo/share/classes, \
+ INCLUDES := jdk/internal/foo, \
+ BIN := $(SUPPORT_OUTPUTDIR)/foo_classes, \
+))
+```
+
+By encapsulating and expressing the high-level knowledge of *what* should be
+done, rather than *how* it should be done (as is normal in Makefiles), we can
+build a much more powerful and flexible build system.
+
+Correct dependency tracking is paramount. Sloppy dependency tracking will lead
+to improper parallelization, or worse, race conditions.
+
+To test for/debug race conditions, try running `make JOBS=1` and `make
+JOBS=100` and see if it makes any difference. (It shouldn't).
+
+To compare the output of two different builds and see if, and how, they differ,
+run `$BUILD1/compare.sh -o $BUILD2`, where `$BUILD1` and `$BUILD2` are the two
+builds you want to compare.
+
+To automatically build two consecutive versions and compare them, use
+`COMPARE_BUILD`. The value of `COMPARE_BUILD` is a set of variable=value
+assignments, like this:
+```
+make COMPARE_BUILD=CONF=--enable-new-hotspot-feature:MAKE=hotspot
+```
+See `make/InitSupport.gmk` for details on how to use `COMPARE_BUILD`.
+
+To analyze build performance, run with `LOG=trace` and check `$BUILD/build-trace-time.log`.
+Use `JOBS=1` to avoid parallelism.
+
+Please check that you adhere to the [Code Conventions for the Build System](
+http://openjdk.java.net/groups/build/doc/code-conventions.html) before
+submitting patches. Also see the section in [Autoconf Details](
+#autoconf-details) about the generated configure script.
+
+## Contributing to OpenJDK
+
+So, now you've build your OpenJDK, and made your first patch, and want to
+contribute it back to the OpenJDK community.
+
+First of all: Thank you! We gladly welcome your contribution to the OpenJDK.
+However, please bear in mind that OpenJDK is a massive project, and we must ask
+you to follow our rules and guidelines to be able to accept your contribution.
+
+The official place to start is the ['How to contribute' page](
+http://openjdk.java.net/contribute/). There is also an official (but somewhat
+outdated and skimpy on details) [Developer's Guide](
+http://openjdk.java.net/guide/).
+
+If this seems overwhelming to you, the Adoption Group is there to help you! A
+good place to start is their ['New Contributor' page](
+https://wiki.openjdk.java.net/display/Adoption/New+Contributor), or start
+reading the comprehensive [Getting Started Kit](
+https://adoptopenjdk.gitbooks.io/adoptopenjdk-getting-started-kit/en/). The
+Adoption Group will also happily answer any questions you have about
+contributing. Contact them by [mail](
+http://mail.openjdk.java.net/mailman/listinfo/adoption-discuss) or [IRC](
+http://openjdk.java.net/irc/).
+
+---
+# Override styles from the base CSS file that are not ideal for this document.
+header-includes:
+ - '<style type="text/css">pre, code, tt { color: #1d6ae5; }</style>'
+---
diff --git a/common/doc/testing.html b/common/doc/testing.html
new file mode 100644
index 0000000..6ddc692
--- /dev/null
+++ b/common/doc/testing.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <meta name="generator" content="pandoc">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
+ <title>Testing OpenJDK</title>
+ <style type="text/css">code{white-space: pre;}</style>
+ <link rel="stylesheet" href="../../jdk/make/data/docs-resources/resources/jdk-default.css">
+ <!--[if lt IE 9]>
+ <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
+ <![endif]-->
+ <style type="text/css">pre, code, tt { color: #1d6ae5; }</style>
+</head>
+<body>
+<header>
+<h1 class="title">Testing OpenJDK</h1>
+</header>
+<nav id="TOC">
+<ul>
+<li><a href="#using-the-run-test-framework">Using the run-test framework</a><ul>
+<li><a href="#configuration">Configuration</a></li>
+</ul></li>
+<li><a href="#test-selection">Test selection</a><ul>
+<li><a href="#jtreg">JTReg</a></li>
+<li><a href="#gtest">Gtest</a></li>
+</ul></li>
+<li><a href="#test-results-and-summary">Test results and summary</a></li>
+<li><a href="#test-suite-control">Test suite control</a><ul>
+<li><a href="#jtreg-keywords">JTReg keywords</a></li>
+<li><a href="#gtest-keywords">Gtest keywords</a></li>
+</ul></li>
+</ul>
+</nav>
+<h2 id="using-the-run-test-framework">Using the run-test framework</h2>
+<p>This new way of running tests is developer-centric. It assumes that you have built a jdk locally and want to test it. Running common test targets is simple, and more complex ad-hoc combination of tests is possible. The user interface is forgiving, and clearly report errors it cannot resolve.</p>
+<p>Some example command-lines:</p>
+<pre><code>$ make run-test-tier1
+$ make run-test-jdk_lang JTREG=&quot;JOBS=8&quot;
+$ make run-test TEST=jdk_lang
+$ make run-test-only TEST=&quot;gtest:LogTagSet gtest:LogTagSetDescriptions&quot; GTEST=&quot;REPEAT=-1&quot;
+$ make run-test TEST=&quot;hotspot/test:hotspot_gc&quot; JTREG=&quot;JOBS=1;TIMEOUT=8;VM_OTIONS=-XshowSettings -Xlog:gc+ref=debug&quot;
+$ make run-test TEST=&quot;jtreg:hotspot/test:hotspot_gc hotspot/test/native_sanity/JniVersion.java&quot;</code></pre>
+<h3 id="configuration">Configuration</h3>
+<p>To be able to run JTReg tests, <code>configure</code> needs to know where to find the JTReg test framework. If it is not picked up automatically by configure, use the <code>--with-jtreg=&lt;path to jtreg home&gt;</code> option to point to the JTReg framework. Note that this option should point to the JTReg home, i.e. the top directory, containing <code>lib/jtreg.jar</code> etc. (An alternative is to set the <code>JT_HOME</code> environment variable to point to the JTReg home before running <code>configure</code>.)</p>
+<h2 id="test-selection">Test selection</h2>
+<p>All functionality is available using the run-test make target. In this use case, the test or tests to be executed is controlled using the <code>TEST</code> variable. To speed up subsequent test runs with no source code changes, run-test-only can be used instead, which do not depend on the source and test image build.</p>
+<p>For some common top-level tests, direct make targets have been generated. This includes all JTReg test groups, the hotspot gtest, and custom tests (if present). This means that <code>make run-test-tier1</code> is equivalent to <code>make run-test TEST=&quot;tier1&quot;</code>, but the latter is more tab-completion friendly. For more complex test runs, the <code>run-test TEST=&quot;x&quot;</code> solution needs to be used.</p>
+<p>The test specifications given in <code>TEST</code> is parsed into fully qualified test descriptors, which clearly and unambigously show which tests will be run. As an example, <code>:tier1</code> will expand to <code>jtreg:jdk/test:tier1 jtreg:langtools/test:tier1 jtreg:nashorn/test:tier1 jtreg:jaxp/test:tier1</code>. You can always submit a list of fully qualified test descriptors in the <code>TEST</code> variable if you want to shortcut the parser.</p>
+<h3 id="jtreg">JTReg</h3>
+<p>JTReg test groups can be specified either without a test root, e.g. <code>:tier1</code> (or <code>tier1</code>, the initial colon is optional), or with, e.g. <code>hotspot/test:tier1</code>, <code>jdk/test:jdk_util</code>.</p>
+<p>When specified without a test root, all matching groups from all tests roots will be added. Otherwise, only the group from the specified test root will be added.</p>
+<p>Individual JTReg tests or directories containing JTReg tests can also be specified, like <code>hotspot/test/native_sanity/JniVersion.java</code> or <code>hotspot/test/native_sanity</code>. You can also specify an absolute path, to point to a JTReg test outside the source tree.</p>
+<p>As long as the test groups or test paths can be uniquely resolved, you do not need to enter the <code>jtreg:</code> prefix. If this is not possible, or if you want to use a fully qualified test descriptor, add <code>jtreg:</code>, e.g. <code>jtreg:hotspot/test/native_sanity</code>.</p>
+<h3 id="gtest">Gtest</h3>
+<p>Since the Hotspot Gtest suite is so quick, the default is to run all tests. This is specified by just <code>gtest</code>, or as a fully qualified test descriptor <code>gtest:all</code>.</p>
+<p>If you want, you can single out an individual test or a group of tests, for instance <code>gtest:LogDecorations</code> or <code>gtest:LogDecorations.level_test_vm</code>. This can be particularly useful if you want to run a shaky test repeatedly.</p>
+<h2 id="test-results-and-summary">Test results and summary</h2>
+<p>At the end of the test run, a summary of all tests run will be presented. This will have a consistent look, regardless of what test suites were used. This is a sample summary:</p>
+<pre><code>==============================
+Test summary
+==============================
+ TEST TOTAL PASS FAIL ERROR
+&gt;&gt; jtreg:jdk/test:tier1 1867 1865 2 0 &lt;&lt;
+ jtreg:langtools/test:tier1 4711 4711 0 0
+ jtreg:nashorn/test:tier1 133 133 0 0
+==============================
+TEST FAILURE</code></pre>
+<p>Tests where the number of TOTAL tests does not equal the number of PASSed tests will be considered a test failure. These are marked with the <code>&gt;&gt; ... &lt;&lt;</code> marker for easy identification.</p>
+<p>The classification of non-passed tests differs a bit between test suites. In the summary, ERROR is used as a catch-all for tests that neither passed nor are classified as failed by the framework. This might indicate test framework error, timeout or other problems.</p>
+<p>In case of test failures, <code>make run-test</code> will exit with a non-zero exit value.</p>
+<p>All tests have their result stored in <code>build/$BUILD/test-results/$TEST_ID</code>, where TEST_ID is a path-safe conversion from the fully qualified test descriptor, e.g. for <code>jtreg:jdk/test:tier1</code> the TEST_ID is <code>jtreg_jdk_test_tier1</code>. This path is also printed in the log at the end of the test run.</p>
+<p>Additional work data is stored in <code>build/$BUILD/test-support/$TEST_ID</code>. For some frameworks, this directory might contain information that is useful in determining the cause of a failed test.</p>
+<h2 id="test-suite-control">Test suite control</h2>
+<p>It is possible to control various aspects of the test suites using make control variables.</p>
+<p>These variables use a keyword=value approach to allow multiple values to be set. So, for instance, <code>JTREG=&quot;JOBS=1;TIMEOUT=8&quot;</code> will set the JTReg concurrency level to 1 and the timeout factor to 8. This is equivalent to setting <code>JTREG_JOBS=1 JTREG_TIMEOUT=8</code>, but using the keyword format means that the <code>JTREG</code> variable is parsed and verified for correctness, so <code>JTREG=&quot;TMIEOUT=8&quot;</code> would give an error, while <code>JTREG_TMIEOUT=8</code> would just pass unnoticed.</p>
+<p>To separate multiple keyword=value pairs, use <code>;</code> (semicolon). Since the shell normally eats <code>;</code>, the recommended usage is to write the assignment inside qoutes, e.g. <code>JTREG=&quot;...;...&quot;</code>. This will also make sure spaces are preserved, as in <code>JTREG=&quot;VM_OTIONS=-XshowSettings -Xlog:gc+ref=debug&quot;</code>.</p>
+<p>(Other ways are possible, e.g. using backslash: <code>JTREG=JOBS=1\;TIMEOUT=8</code>. Also, as a special technique, the string <code>%20</code> will be replaced with space for certain options, e.g. <code>JTREG=VM_OTIONS=-XshowSettings%20-Xlog:gc+ref=debug</code>. This can be useful if you have layers of scripts and have trouble getting proper quoting of command line arguments through.)</p>
+<p>As far as possible, the names of the keywords have been standardized between test suites.</p>
+<h3 id="jtreg-keywords">JTReg keywords</h3>
+<h4 id="jobs">JOBS</h4>
+<p>The test concurrency (<code>-concurrency</code>).</p>
+<p>Defaults to TEST_JOBS (if set by <code>--with-test-jobs=</code>), otherwise it defaults to JOBS, except for Hotspot, where the default is <em>number of CPU cores/2</em>, but never more than 12.</p>
+<h4 id="timeout">TIMEOUT</h4>
+<p>The timeout factor (<code>-timeoutFactor</code>).</p>
+<p>Defaults to 4.</p>
+<h4 id="test_mode">TEST_MODE</h4>
+<p>The test mode (<code>-agentvm</code>, <code>-samevm</code> or <code>-othervm</code>).</p>
+<p>Defaults to <code>-agentvm</code>.</p>
+<h4 id="assert">ASSERT</h4>
+<p>Enable asserts (<code>-ea -esa</code>, or none).</p>
+<p>Set to <code>true</code> or <code>false</code>. If true, adds <code>-ea -esa</code>. Defaults to true, except for hotspot.</p>
+<h4 id="verbose">VERBOSE</h4>
+<p>The verbosity level (<code>-verbose</code>).</p>
+<p>Defaults to <code>fail,error,summary</code>.</p>
+<h4 id="retain">RETAIN</h4>
+<p>What test data to retain (<code>-retain</code>).</p>
+<p>Defaults to <code>fail,error</code>.</p>
+<h4 id="max_mem">MAX_MEM</h4>
+<p>Limit memory consumption (<code>-Xmx</code> and <code>-vmoption:-Xmx</code>, or none).</p>
+<p>Limit memory consumption for JTReg test framework and VM under test. Set to 0 to disable the limits.</p>
+<p>Defaults to 512m, except for hotspot, where it defaults to 0 (no limit).</p>
+<h4 id="options">OPTIONS</h4>
+<p>Additional options to the JTReg test framework.</p>
+<p>Use <code>JTREG=&quot;OPTIONS=--help all&quot;</code> to see all available JTReg options.</p>
+<h4 id="java_options">JAVA_OPTIONS</h4>
+<p>Additional Java options to JTReg (<code>-javaoption</code>).</p>
+<h4 id="vm_options">VM_OPTIONS</h4>
+<p>Additional VM options to JTReg (<code>-vmoption</code>).</p>
+<h3 id="gtest-keywords">Gtest keywords</h3>
+<h4 id="repeat">REPEAT</h4>
+<p>The number of times to repeat the tests (<code>--gtest_repeat</code>).</p>
+<p>Default is 1. Set to -1 to repeat indefinitely. This can be especially useful combined with <code>OPTIONS=--gtest_break_on_failure</code> to reproduce an intermittent problem.</p>
+<h4 id="options-1">OPTIONS</h4>
+<p>Additional options to the Gtest test framework.</p>
+<p>Use <code>GTEST=&quot;OPTIONS=--help&quot;</code> to see all available Gtest options.</p>
+</body>
+</html>
diff --git a/common/doc/testing.md b/common/doc/testing.md
new file mode 100644
index 0000000..db570f4
--- /dev/null
+++ b/common/doc/testing.md
@@ -0,0 +1,215 @@
+% Testing OpenJDK
+
+## Using the run-test framework
+
+This new way of running tests is developer-centric. It assumes that you have
+built a jdk locally and want to test it. Running common test targets is simple,
+and more complex ad-hoc combination of tests is possible. The user interface is
+forgiving, and clearly report errors it cannot resolve.
+
+Some example command-lines:
+
+ $ make run-test-tier1
+ $ make run-test-jdk_lang JTREG="JOBS=8"
+ $ make run-test TEST=jdk_lang
+ $ make run-test-only TEST="gtest:LogTagSet gtest:LogTagSetDescriptions" GTEST="REPEAT=-1"
+ $ make run-test TEST="hotspot/test:hotspot_gc" JTREG="JOBS=1;TIMEOUT=8;VM_OTIONS=-XshowSettings -Xlog:gc+ref=debug"
+ $ make run-test TEST="jtreg:hotspot/test:hotspot_gc hotspot/test/native_sanity/JniVersion.java"
+
+### Configuration
+
+To be able to run JTReg tests, `configure` needs to know where to find the
+JTReg test framework. If it is not picked up automatically by configure, use
+the `--with-jtreg=<path to jtreg home>` option to point to the JTReg framework.
+Note that this option should point to the JTReg home, i.e. the top directory,
+containing `lib/jtreg.jar` etc. (An alternative is to set the `JT_HOME`
+environment variable to point to the JTReg home before running `configure`.)
+
+## Test selection
+
+All functionality is available using the run-test make target. In this use
+case, the test or tests to be executed is controlled using the `TEST` variable.
+To speed up subsequent test runs with no source code changes, run-test-only can
+be used instead, which do not depend on the source and test image build.
+
+For some common top-level tests, direct make targets have been generated. This
+includes all JTReg test groups, the hotspot gtest, and custom tests (if
+present). This means that `make run-test-tier1` is equivalent to `make run-test
+TEST="tier1"`, but the latter is more tab-completion friendly. For more complex
+test runs, the `run-test TEST="x"` solution needs to be used.
+
+The test specifications given in `TEST` is parsed into fully qualified test
+descriptors, which clearly and unambigously show which tests will be run. As an
+example, `:tier1` will expand to `jtreg:jdk/test:tier1
+jtreg:langtools/test:tier1 jtreg:nashorn/test:tier1 jtreg:jaxp/test:tier1`. You
+can always submit a list of fully qualified test descriptors in the `TEST`
+variable if you want to shortcut the parser.
+
+### JTReg
+
+JTReg test groups can be specified either without a test root, e.g. `:tier1`
+(or `tier1`, the initial colon is optional), or with, e.g.
+`hotspot/test:tier1`, `jdk/test:jdk_util`.
+
+When specified without a test root, all matching groups from all tests roots
+will be added. Otherwise, only the group from the specified test root will be
+added.
+
+Individual JTReg tests or directories containing JTReg tests can also be
+specified, like `hotspot/test/native_sanity/JniVersion.java` or
+`hotspot/test/native_sanity`. You can also specify an absolute path, to point
+to a JTReg test outside the source tree.
+
+As long as the test groups or test paths can be uniquely resolved, you do not
+need to enter the `jtreg:` prefix. If this is not possible, or if you want to
+use a fully qualified test descriptor, add `jtreg:`, e.g.
+`jtreg:hotspot/test/native_sanity`.
+
+### Gtest
+
+Since the Hotspot Gtest suite is so quick, the default is to run all tests.
+This is specified by just `gtest`, or as a fully qualified test descriptor
+`gtest:all`.
+
+If you want, you can single out an individual test or a group of tests, for
+instance `gtest:LogDecorations` or `gtest:LogDecorations.level_test_vm`. This
+can be particularly useful if you want to run a shaky test repeatedly.
+
+## Test results and summary
+
+At the end of the test run, a summary of all tests run will be presented. This
+will have a consistent look, regardless of what test suites were used. This is
+a sample summary:
+
+ ==============================
+ Test summary
+ ==============================
+ TEST TOTAL PASS FAIL ERROR
+ >> jtreg:jdk/test:tier1 1867 1865 2 0 <<
+ jtreg:langtools/test:tier1 4711 4711 0 0
+ jtreg:nashorn/test:tier1 133 133 0 0
+ ==============================
+ TEST FAILURE
+
+Tests where the number of TOTAL tests does not equal the number of PASSed tests
+will be considered a test failure. These are marked with the `>> ... <<` marker
+for easy identification.
+
+The classification of non-passed tests differs a bit between test suites. In
+the summary, ERROR is used as a catch-all for tests that neither passed nor are
+classified as failed by the framework. This might indicate test framework
+error, timeout or other problems.
+
+In case of test failures, `make run-test` will exit with a non-zero exit value.
+
+All tests have their result stored in `build/$BUILD/test-results/$TEST_ID`,
+where TEST_ID is a path-safe conversion from the fully qualified test
+descriptor, e.g. for `jtreg:jdk/test:tier1` the TEST_ID is
+`jtreg_jdk_test_tier1`. This path is also printed in the log at the end of the
+test run.
+
+Additional work data is stored in `build/$BUILD/test-support/$TEST_ID`. For
+some frameworks, this directory might contain information that is useful in
+determining the cause of a failed test.
+
+## Test suite control
+
+It is possible to control various aspects of the test suites using make control
+variables.
+
+These variables use a keyword=value approach to allow multiple values to be
+set. So, for instance, `JTREG="JOBS=1;TIMEOUT=8"` will set the JTReg
+concurrency level to 1 and the timeout factor to 8. This is equivalent to
+setting `JTREG_JOBS=1 JTREG_TIMEOUT=8`, but using the keyword format means that
+the `JTREG` variable is parsed and verified for correctness, so
+`JTREG="TMIEOUT=8"` would give an error, while `JTREG_TMIEOUT=8` would just
+pass unnoticed.
+
+To separate multiple keyword=value pairs, use `;` (semicolon). Since the shell
+normally eats `;`, the recommended usage is to write the assignment inside
+qoutes, e.g. `JTREG="...;..."`. This will also make sure spaces are preserved,
+as in `JTREG="VM_OTIONS=-XshowSettings -Xlog:gc+ref=debug"`.
+
+(Other ways are possible, e.g. using backslash: `JTREG=JOBS=1\;TIMEOUT=8`.
+Also, as a special technique, the string `%20` will be replaced with space for
+certain options, e.g. `JTREG=VM_OTIONS=-XshowSettings%20-Xlog:gc+ref=debug`.
+This can be useful if you have layers of scripts and have trouble getting
+proper quoting of command line arguments through.)
+
+As far as possible, the names of the keywords have been standardized between
+test suites.
+
+### JTReg keywords
+
+#### JOBS
+The test concurrency (`-concurrency`).
+
+Defaults to TEST_JOBS (if set by `--with-test-jobs=`), otherwise it defaults to
+JOBS, except for Hotspot, where the default is *number of CPU cores/2*, but
+never more than 12.
+
+#### TIMEOUT
+The timeout factor (`-timeoutFactor`).
+
+Defaults to 4.
+
+#### TEST_MODE
+The test mode (`-agentvm`, `-samevm` or `-othervm`).
+
+Defaults to `-agentvm`.
+
+#### ASSERT
+Enable asserts (`-ea -esa`, or none).
+
+Set to `true` or `false`. If true, adds `-ea -esa`. Defaults to true, except
+for hotspot.
+
+#### VERBOSE
+The verbosity level (`-verbose`).
+
+Defaults to `fail,error,summary`.
+
+#### RETAIN
+What test data to retain (`-retain`).
+
+Defaults to `fail,error`.
+
+#### MAX_MEM
+Limit memory consumption (`-Xmx` and `-vmoption:-Xmx`, or none).
+
+Limit memory consumption for JTReg test framework and VM under test. Set to 0
+to disable the limits.
+
+Defaults to 512m, except for hotspot, where it defaults to 0 (no limit).
+
+#### OPTIONS
+Additional options to the JTReg test framework.
+
+Use `JTREG="OPTIONS=--help all"` to see all available JTReg options.
+
+#### JAVA_OPTIONS
+Additional Java options to JTReg (`-javaoption`).
+
+#### VM_OPTIONS
+Additional VM options to JTReg (`-vmoption`).
+
+### Gtest keywords
+
+#### REPEAT
+The number of times to repeat the tests (`--gtest_repeat`).
+
+Default is 1. Set to -1 to repeat indefinitely. This can be especially useful
+combined with `OPTIONS=--gtest_break_on_failure` to reproduce an intermittent
+problem.
+
+#### OPTIONS
+Additional options to the Gtest test framework.
+
+Use `GTEST="OPTIONS=--help"` to see all available Gtest options.
+
+---
+# Override some definitions in the global css file that are not optimal for
+# this document.
+header-includes:
+ - '<style type="text/css">pre, code, tt { color: #1d6ae5; }</style>'
+---
diff --git a/common/nb_native/nbproject/configurations.xml b/common/nb_native/nbproject/configurations.xml
new file mode 100644
index 0000000..5aebfbd
--- /dev/null
+++ b/common/nb_native/nbproject/configurations.xml
@@ -0,0 +1,65800 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configurationDescriptor version="97">
+ <logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
+ <df root="../.." name="0">
+ <df name="build">
+ <df name="hotspot">
+ <df name="linux_amd64_compiler2">
+ <df name="generated">
+ <df name="adfiles">
+ <in>ad_x86_64.cpp</in>
+ <in>ad_x86_64_clone.cpp</in>
+ <in>ad_x86_64_expand.cpp</in>
+ <in>ad_x86_64_format.cpp</in>
+ <in>ad_x86_64_gen.cpp</in>
+ <in>ad_x86_64_misc.cpp</in>
+ <in>ad_x86_64_peephole.cpp</in>
+ <in>ad_x86_64_pipeline.cpp</in>
+ <in>dfa_x86_64.cpp</in>
+ </df>
+ <df name="jvmtifiles">
+ <in>bytecodeInterpreterWithChecks.cpp</in>
+ <in>jvmtiEnter.cpp</in>
+ <in>jvmtiEnterTrace.cpp</in>
+ </df>
+ </df>
+ </df>
+ <df name="variant-server">
+ <df name="gensrc">
+ <df name="adfiles">
+ <in>ad_x86_64.cpp</in>
+ <in>ad_x86_64_clone.cpp</in>
+ <in>ad_x86_64_expand.cpp</in>
+ <in>ad_x86_64_format.cpp</in>
+ <in>ad_x86_64_gen.cpp</in>
+ <in>ad_x86_64_misc.cpp</in>
+ <in>ad_x86_64_peephole.cpp</in>
+ <in>ad_x86_64_pipeline.cpp</in>
+ <in>dfa_x86_64.cpp</in>
+ </df>
+ <df name="jvmtifiles">
+ <in>bytecodeInterpreterWithChecks.cpp</in>
+ <in>jvmtiEnter.cpp</in>
+ <in>jvmtiEnterTrace.cpp</in>
+ </df>
+ </df>
+ <df name="support">
+ <df name="dtrace">
+ <in>JvmOffsets.cpp</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="macosx-x86_64-normal-server-release">
+ <df name="hotspot">
+ <df name="variant-server">
+ <df name="gensrc">
+ <df name="adfiles">
+ <in>ad_x86_64.cpp</in>
+ <in>ad_x86_64_clone.cpp</in>
+ <in>ad_x86_64_expand.cpp</in>
+ <in>ad_x86_64_format.cpp</in>
+ <in>ad_x86_64_gen.cpp</in>
+ <in>ad_x86_64_misc.cpp</in>
+ <in>ad_x86_64_peephole.cpp</in>
+ <in>ad_x86_64_pipeline.cpp</in>
+ <in>dfa_x86_64.cpp</in>
+ </df>
+ <df name="jvmtifiles">
+ <in>bytecodeInterpreterWithChecks.cpp</in>
+ <in>jvmtiEnter.cpp</in>
+ <in>jvmtiEnterTrace.cpp</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="support">
+ <df name="gensrc">
+ <df name="java.desktop">
+ <df name="_x11wrappers">
+ <in>sizer.64.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="hotspot">
+ <df name="src">
+ <df name="cpu">
+ <df name="x86">
+ <df name="vm">
+ <in>abstractInterpreter_x86.cpp</in>
+ <in>assembler_x86.cpp</in>
+ <in>c1_CodeStubs_x86.cpp</in>
+ <in>c1_FpuStackSim_x86.cpp</in>
+ <in>c1_FrameMap_x86.cpp</in>
+ <in>c1_LIRAssembler_x86.cpp</in>
+ <in>c1_LIRGenerator_x86.cpp</in>
+ <in>c1_LinearScan_x86.cpp</in>
+ <in>c1_MacroAssembler_x86.cpp</in>
+ <in>c1_Runtime1_x86.cpp</in>
+ <in>c2_init_x86.cpp</in>
+ <in>compiledIC_x86.cpp</in>
+ <in>debug_x86.cpp</in>
+ <in>depChecker_x86.cpp</in>
+ <in>frame_x86.cpp</in>
+ <in>icBuffer_x86.cpp</in>
+ <in>icache_x86.cpp</in>
+ <in>interp_masm_x86.cpp</in>
+ <in>interpreterRT_x86_64.cpp</in>
+ <in>jniFastGetField_x86_64.cpp</in>
+ <in>jvmciCodeInstaller_x86.cpp</in>
+ <in>macroAssembler_libm_x86_64.cpp</in>
+ <in>macroAssembler_x86.cpp</in>
+ <in>macroAssembler_x86_cos.cpp</in>
+ <in>macroAssembler_x86_exp.cpp</in>
+ <in>macroAssembler_x86_log.cpp</in>
+ <in>macroAssembler_x86_log10.cpp</in>
+ <in>macroAssembler_x86_pow.cpp</in>
+ <in>macroAssembler_x86_sha.cpp</in>
+ <in>macroAssembler_x86_sin.cpp</in>
+ <in>macroAssembler_x86_tan.cpp</in>
+ <in>metaspaceShared_x86_64.cpp</in>
+ <in>methodHandles_x86.cpp</in>
+ <in>nativeInst_x86.cpp</in>
+ <in>registerMap_x86.cpp</in>
+ <in>register_definitions_x86.cpp</in>
+ <in>register_x86.cpp</in>
+ <in>relocInfo_x86.cpp</in>
+ <in>runtime_x86_64.cpp</in>
+ <in>sharedRuntime_x86.cpp</in>
+ <in>sharedRuntime_x86_64.cpp</in>
+ <in>stubGenerator_x86_64.cpp</in>
+ <in>stubRoutines_x86.cpp</in>
+ <in>stubRoutines_x86_64.cpp</in>
+ <in>templateInterpreterGenerator_x86.cpp</in>
+ <in>templateInterpreterGenerator_x86_64.cpp</in>
+ <in>templateTable_x86.cpp</in>
+ <in>vm_version_x86.cpp</in>
+ <in>vmreg_x86.cpp</in>
+ <in>vtableStubs_x86_64.cpp</in>
+ </df>
+ </df>
+ </df>
+ <df name="jdk.hotspot.agent">
+ <df name="linux">
+ <df name="native">
+ <df name="libsaproc">
+ <in>LinuxDebuggerLocal.c</in>
+ <in>libproc_impl.c</in>
+ <in>ps_core.c</in>
+ <in>ps_proc.c</in>
+ <in>salibelf.c</in>
+ <in>symtab.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="macosx">
+ <df name="native">
+ <df name="libsaproc">
+ <in>MacosxDebuggerLocal.m</in>
+ <in>libproc_impl.c</in>
+ <in>ps_core.c</in>
+ <in>symtab.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="share">
+ <df name="native">
+ <df name="libsaproc">
+ <in>sadis.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="solaris">
+ <df name="native">
+ <df name="libsaproc">
+ <in>saproc.cpp</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="os">
+ <df name="bsd">
+ <df name="vm">
+ <in>attachListener_bsd.cpp</in>
+ <in>decoder_machO.cpp</in>
+ <in>jsig.c</in>
+ <in>jvm_bsd.cpp</in>
+ <in>mutex_bsd.cpp</in>
+ <in>osThread_bsd.cpp</in>
+ <in>os_bsd.cpp</in>
+ <in>perfMemory_bsd.cpp</in>
+ <in>stubRoutines_bsd.cpp</in>
+ <in>threadCritical_bsd.cpp</in>
+ </df>
+ </df>
+ <df name="linux">
+ <df name="vm">
+ <in>attachListener_linux.cpp</in>
+ <in>decoder_linux.cpp</in>
+ <in>jsig.c</in>
+ <in>jvm_linux.cpp</in>
+ <in>mutex_linux.cpp</in>
+ <in>osThread_linux.cpp</in>
+ <in>os_linux.cpp</in>
+ <in>perfMemory_linux.cpp</in>
+ <in>stubRoutines_linux.cpp</in>
+ <in>threadCritical_linux.cpp</in>
+ </df>
+ </df>
+ <df name="posix">
+ <df name="vm">
+ <in>os_posix.cpp</in>
+ <in>threadLocalStorage_posix.cpp</in>
+ <in>vmError_posix.cpp</in>
+ </df>
+ </df>
+ <df name="solaris">
+ <df name="dtrace">
+ <in>generateJvmOffsets.cpp</in>
+ <in>generateJvmOffsetsMain.c</in>
+ <in>jvm_dtrace.c</in>
+ <in>libjvm_db.c</in>
+ </df>
+ <df name="vm">
+ <in>attachListener_solaris.cpp</in>
+ <in>decoder_solaris.cpp</in>
+ <in>jsig.c</in>
+ <in>jvm_solaris.cpp</in>
+ <in>mutex_solaris.cpp</in>
+ <in>osThread_solaris.cpp</in>
+ <in>os_solaris.cpp</in>
+ <in>perfMemory_solaris.cpp</in>
+ <in>stubRoutines_solaris.cpp</in>
+ <in>threadCritical_solaris.cpp</in>
+ </df>
+ </df>
+ </df>
+ <df name="os_cpu">
+ <df name="bsd_x86">
+ <df name="vm">
+ <in>assembler_bsd_x86.cpp</in>
+ <in>os_bsd_x86.cpp</in>
+ <in>thread_bsd_x86.cpp</in>
+ <in>vm_version_bsd_x86.cpp</in>
+ </df>
+ </df>
+ <df name="linux_x86">
+ <df name="vm">
+ <in>assembler_linux_x86.cpp</in>
+ <in>os_linux_x86.cpp</in>
+ <in>thread_linux_x86.cpp</in>
+ <in>vm_version_linux_x86.cpp</in>
+ </df>
+ </df>
+ <df name="solaris_x86">
+ <df name="vm">
+ <in>assembler_solaris_x86.cpp</in>
+ <in>os_solaris_x86.cpp</in>
+ <in>thread_solaris_x86.cpp</in>
+ <in>vm_version_solaris_x86.cpp</in>
+ </df>
+ </df>
+ </df>
+ <df name="share">
+ <df name="vm">
+ <df name="adlc">
+ <in>adlparse.cpp</in>
+ <in>archDesc.cpp</in>
+ <in>arena.cpp</in>
+ <in>dfa.cpp</in>
+ <in>dict2.cpp</in>
+ <in>filebuff.cpp</in>
+ <in>forms.cpp</in>
+ <in>formsopt.cpp</in>
+ <in>formssel.cpp</in>
+ <in>main.cpp</in>
+ <in>output_c.cpp</in>
+ <in>output_h.cpp</in>
+ </df>
+ <df name="asm">
+ <in>assembler.cpp</in>
+ <in>codeBuffer.cpp</in>
+ <in>register.cpp</in>
+ </df>
+ <df name="c1">
+ <in>c1_CFGPrinter.cpp</in>
+ <in>c1_Canonicalizer.cpp</in>
+ <in>c1_Compilation.cpp</in>
+ <in>c1_Compiler.cpp</in>
+ <in>c1_Defs.cpp</in>
+ <in>c1_FrameMap.cpp</in>
+ <in>c1_GraphBuilder.cpp</in>
+ <in>c1_IR.cpp</in>
+ <in>c1_Instruction.cpp</in>
+ <in>c1_InstructionPrinter.cpp</in>
+ <in>c1_LIR.cpp</in>
+ <in>c1_LIRAssembler.cpp</in>
+ <in>c1_LIRGenerator.cpp</in>
+ <in>c1_LinearScan.cpp</in>
+ <in>c1_Optimizer.cpp</in>
+ <in>c1_RangeCheckElimination.cpp</in>
+ <in>c1_Runtime1.cpp</in>
+ <in>c1_ValueMap.cpp</in>
+ <in>c1_ValueSet.cpp</in>
+ <in>c1_ValueStack.cpp</in>
+ <in>c1_ValueType.cpp</in>
+ <in>c1_globals.cpp</in>
+ </df>
+ <df name="ci">
+ <in>bcEscapeAnalyzer.cpp</in>
+ <in>ciArray.cpp</in>
+ <in>ciArrayKlass.cpp</in>
+ <in>ciBaseObject.cpp</in>
+ <in>ciCallSite.cpp</in>
+ <in>ciConstant.cpp</in>
+ <in>ciConstantPoolCache.cpp</in>
+ <in>ciEnv.cpp</in>
+ <in>ciExceptionHandler.cpp</in>
+ <in>ciField.cpp</in>
+ <in>ciFlags.cpp</in>
+ <in>ciInstance.cpp</in>
+ <in>ciInstanceKlass.cpp</in>
+ <in>ciKlass.cpp</in>
+ <in>ciMemberName.cpp</in>
+ <in>ciMetadata.cpp</in>
+ <in>ciMethod.cpp</in>
+ <in>ciMethodBlocks.cpp</in>
+ <in>ciMethodData.cpp</in>
+ <in>ciMethodHandle.cpp</in>
+ <in>ciNullObject.cpp</in>
+ <in>ciObjArray.cpp</in>
+ <in>ciObjArrayKlass.cpp</in>
+ <in>ciObject.cpp</in>
+ <in>ciObjectFactory.cpp</in>
+ <in>ciReplay.cpp</in>
+ <in>ciSignature.cpp</in>
+ <in>ciStreams.cpp</in>
+ <in>ciSymbol.cpp</in>
+ <in>ciType.cpp</in>
+ <in>ciTypeArray.cpp</in>
+ <in>ciTypeArrayKlass.cpp</in>
+ <in>ciTypeFlow.cpp</in>
+ <in>ciUtilities.cpp</in>
+ </df>
+ <df name="classfile">
+ <in>altHashing.cpp</in>
+ <in>bytecodeAssembler.cpp</in>
+ <in>classFileError.cpp</in>
+ <in>classFileParser.cpp</in>
+ <in>classFileStream.cpp</in>
+ <in>classListParser.cpp</in>
+ <in>classLoader.cpp</in>
+ <in>classLoaderData.cpp</in>
+ <in>classLoaderExt.cpp</in>
+ <in>classLoaderStats.cpp</in>
+ <in>compactHashtable.cpp</in>
+ <in>defaultMethods.cpp</in>
+ <in>dictionary.cpp</in>
+ <in>javaAssertions.cpp</in>
+ <in>javaClasses.cpp</in>
+ <in>klassFactory.cpp</in>
+ <in>loaderConstraints.cpp</in>
+ <in>metadataOnStackMark.cpp</in>
+ <in>moduleEntry.cpp</in>
+ <in>modules.cpp</in>
+ <in>packageEntry.cpp</in>
+ <in>placeholders.cpp</in>
+ <in>resolutionErrors.cpp</in>
+ <in>sharedPathsMiscInfo.cpp</in>
+ <in>stackMapFrame.cpp</in>
+ <in>stackMapTable.cpp</in>
+ <in>stringTable.cpp</in>
+ <in>symbolTable.cpp</in>
+ <in>systemDictionary.cpp</in>
+ <in>verificationType.cpp</in>
+ <in>verifier.cpp</in>
+ <in>vmSymbols.cpp</in>
+ </df>
+ <df name="code">
+ <in>codeBlob.cpp</in>
+ <in>codeCache.cpp</in>
+ <in>compiledIC.cpp</in>
+ <in>compiledMethod.cpp</in>
+ <in>compressedStream.cpp</in>
+ <in>debugInfo.cpp</in>
+ <in>debugInfoRec.cpp</in>
+ <in>dependencies.cpp</in>
+ <in>dependencyContext.cpp</in>
+ <in>exceptionHandlerTable.cpp</in>
+ <in>icBuffer.cpp</in>
+ <in>location.cpp</in>
+ <in>nmethod.cpp</in>
+ <in>oopRecorder.cpp</in>
+ <in>pcDesc.cpp</in>
+ <in>relocInfo.cpp</in>
+ <in>scopeDesc.cpp</in>
+ <in>stubs.cpp</in>
+ <in>vmreg.cpp</in>
+ <in>vtableStubs.cpp</in>
+ </df>
+ <df name="compiler">
+ <in>abstractCompiler.cpp</in>
+ <in>compileBroker.cpp</in>
+ <in>compileLog.cpp</in>
+ <in>compileTask.cpp</in>
+ <in>compilerDirectives.cpp</in>
+ <in>compilerOracle.cpp</in>
+ <in>directivesParser.cpp</in>
+ <in>disassembler.cpp</in>
+ <in>methodLiveness.cpp</in>
+ <in>methodMatcher.cpp</in>
+ <in>oopMap.cpp</in>
+ </df>
+ <df name="gc">
+ <df name="cms">
+ <in>adaptiveFreeList.cpp</in>
+ <in>allocationStats.cpp</in>
+ <in>cmsCollectorPolicy.cpp</in>
+ <in>cmsLockVerifier.cpp</in>
+ <in>cmsOopClosures.cpp</in>
+ <in>compactibleFreeListSpace.cpp</in>
+ <in>concurrentMarkSweepGeneration.cpp</in>
+ <in>concurrentMarkSweepThread.cpp</in>
+ <in>freeChunk.cpp</in>
+ <in>gSpaceCounters.cpp</in>
+ <in>parCardTableModRefBS.cpp</in>
+ <in>parNewGeneration.cpp</in>
+ <in>parOopClosures.cpp</in>
+ <in>promotionInfo.cpp</in>
+ <in>vmCMSOperations.cpp</in>
+ <in>yieldingWorkgroup.cpp</in>
+ </df>
+ <df name="g1">
+ <in>bufferingOopClosure.cpp</in>
+ <in>collectionSetChooser.cpp</in>
+ <in>concurrentG1Refine.cpp</in>
+ <in>concurrentG1RefineThread.cpp</in>
+ <in>concurrentMarkThread.cpp</in>
+ <in>dirtyCardQueue.cpp</in>
+ <in>g1AllocRegion.cpp</in>
+ <in>g1Allocator.cpp</in>
+ <in>g1Allocator_ext.cpp</in>
+ <in>g1Analytics.cpp</in>
+ <in>g1BiasedArray.cpp</in>
+ <in>g1BlockOffsetTable.cpp</in>
+ <in>g1CardCounts.cpp</in>
+ <in>g1CardLiveData.cpp</in>
+ <in>g1CodeBlobClosure.cpp</in>
+ <in>g1CodeCacheRemSet.cpp</in>
+ <in>g1CollectedHeap.cpp</in>
+ <in>g1CollectedHeap_ext.cpp</in>
+ <in>g1CollectionSet.cpp</in>
+ <in>g1CollectorPolicy.cpp</in>
+ <in>g1ConcurrentMark.cpp</in>
+ <in>g1DefaultPolicy.cpp</in>
+ <in>g1EvacFailure.cpp</in>
+ <in>g1EvacStats.cpp</in>
+ <in>g1FromCardCache.cpp</in>
+ <in>g1GCPhaseTimes.cpp</in>
+ <in>g1HeapSizingPolicy.cpp</in>
+ <in>g1HeapSizingPolicy_ext.cpp</in>
+ <in>g1HeapTransition.cpp</in>
+ <in>g1HeapVerifier.cpp</in>
+ <in>g1HotCardCache.cpp</in>
+ <in>g1IHOPControl.cpp</in>
+ <in>g1MMUTracker.cpp</in>
+ <in>g1MarkSweep.cpp</in>
+ <in>g1MarkSweep_ext.cpp</in>
+ <in>g1MonitoringSupport.cpp</in>
+ <in>g1OopClosures.cpp</in>
+ <in>g1PageBasedVirtualSpace.cpp</in>
+ <in>g1ParScanThreadState.cpp</in>
+ <in>g1ParScanThreadState_ext.cpp</in>
+ <in>g1Predictions.cpp</in>
+ <in>g1RegionToSpaceMapper.cpp</in>
+ <in>g1RemSet.cpp</in>
+ <in>g1RemSetSummary.cpp</in>
+ <in>g1RootClosures.cpp</in>
+ <in>g1RootClosures_ext.cpp</in>
+ <in>g1RootProcessor.cpp</in>
+ <in>g1SATBCardTableModRefBS.cpp</in>
+ <in>g1StringDedup.cpp</in>
+ <in>g1StringDedupQueue.cpp</in>
+ <in>g1StringDedupStat.cpp</in>
+ <in>g1StringDedupTable.cpp</in>
+ <in>g1StringDedupThread.cpp</in>
+ <in>g1SurvivorRegions.cpp</in>
+ <in>g1YoungGenSizer.cpp</in>
+ <in>g1YoungRemSetSamplingThread.cpp</in>
+ <in>g1_globals.cpp</in>
+ <in>hSpaceCounters.cpp</in>
+ <in>heapRegion.cpp</in>
+ <in>heapRegionManager.cpp</in>
+ <in>heapRegionRemSet.cpp</in>
+ <in>heapRegionSet.cpp</in>
+ <in>heapRegionTracer.cpp</in>
+ <in>heapRegionType.cpp</in>
+ <in>ptrQueue.cpp</in>
+ <in>satbMarkQueue.cpp</in>
+ <in>sparsePRT.cpp</in>
+ <in>survRateGroup.cpp</in>
+ <in>suspendibleThreadSet.cpp</in>
+ <in>vm_operations_g1.cpp</in>
+ <in>workerDataArray.cpp</in>
+ <in>youngList.cpp</in>
+ </df>
+ <df name="parallel">
+ <in>adjoiningGenerations.cpp</in>
+ <in>adjoiningVirtualSpaces.cpp</in>
+ <in>asPSOldGen.cpp</in>
+ <in>asPSYoungGen.cpp</in>
+ <in>cardTableExtension.cpp</in>
+ <in>gcAdaptivePolicyCounters.cpp</in>
+ <in>gcTaskManager.cpp</in>
+ <in>gcTaskThread.cpp</in>
+ <in>generationSizer.cpp</in>
+ <in>immutableSpace.cpp</in>
+ <in>mutableNUMASpace.cpp</in>
+ <in>mutableSpace.cpp</in>
+ <in>objectStartArray.cpp</in>
+ <in>parMarkBitMap.cpp</in>
+ <in>parallelScavengeHeap.cpp</in>
+ <in>pcTasks.cpp</in>
+ <in>psAdaptiveSizePolicy.cpp</in>
+ <in>psCompactionManager.cpp</in>
+ <in>psGCAdaptivePolicyCounters.cpp</in>
+ <in>psGenerationCounters.cpp</in>
+ <in>psMarkSweep.cpp</in>
+ <in>psMarkSweepDecorator.cpp</in>
+ <in>psOldGen.cpp</in>
+ <in>psParallelCompact.cpp</in>
+ <in>psPromotionLAB.cpp</in>
+ <in>psPromotionManager.cpp</in>
+ <in>psScavenge.cpp</in>
+ <in>psTasks.cpp</in>
+ <in>psVirtualspace.cpp</in>
+ <in>psYoungGen.cpp</in>
+ <in>spaceCounters.cpp</in>
+ <in>vmPSOperations.cpp</in>
+ </df>
+ <df name="serial">
+ <in>cSpaceCounters.cpp</in>
+ <in>defNewGeneration.cpp</in>
+ <in>genMarkSweep.cpp</in>
+ <in>markSweep.cpp</in>
+ <in>tenuredGeneration.cpp</in>
+ </df>
+ <df name="shared">
+ <in>adaptiveSizePolicy.cpp</in>
+ <in>ageTable.cpp</in>
+ <in>ageTableTracer.cpp</in>
+ <in>allocTracer.cpp</in>
+ <in>barrierSet.cpp</in>
+ <in>blockOffsetTable.cpp</in>
+ <in>cardGeneration.cpp</in>
+ <in>cardTableModRefBS.cpp</in>
+ <in>cardTableModRefBSForCTRS.cpp</in>
+ <in>cardTableRS.cpp</in>
+ <in>collectedHeap.cpp</in>
+ <in>collectorCounters.cpp</in>
+ <in>collectorPolicy.cpp</in>
+ <in>concurrentGCThread.cpp</in>
+ <in>gcCause.cpp</in>
+ <in>gcId.cpp</in>
+ <in>gcLocker.cpp</in>
+ <in>gcPolicyCounters.cpp</in>
+ <in>gcStats.cpp</in>
+ <in>gcTimer.cpp</in>
+ <in>gcTrace.cpp</in>
+ <in>gcTraceSend.cpp</in>
+ <in>gcTraceTime.cpp</in>
+ <in>gcUtil.cpp</in>
+ <in>genCollectedHeap.cpp</in>
+ <in>genOopClosures.cpp</in>
+ <in>generation.cpp</in>
+ <in>generationCounters.cpp</in>
+ <in>generationSpec.cpp</in>
+ <in>memset_with_concurrent_readers.cpp</in>
+ <in>objectCountEventSender.cpp</in>
+ <in>plab.cpp</in>
+ <in>preservedMarks.cpp</in>
+ <in>referencePendingListLocker.cpp</in>
+ <in>referencePolicy.cpp</in>
+ <in>referenceProcessor.cpp</in>
+ <in>space.cpp</in>
+ <in>spaceDecorator.cpp</in>
+ <in>strongRootsScope.cpp</in>
+ <in>taskqueue.cpp</in>
+ <in>threadLocalAllocBuffer.cpp</in>
+ <in>vmGCOperations.cpp</in>
+ <in>workgroup.cpp</in>
+ </df>
+ </df>
+ <df name="interpreter">
+ <in>abstractInterpreter.cpp</in>
+ <in>bytecode.cpp</in>
+ <in>bytecodeHistogram.cpp</in>
+ <in>bytecodeInterpreter.cpp</in>
+ <in>bytecodeStream.cpp</in>
+ <in>bytecodeTracer.cpp</in>
+ <in>bytecodes.cpp</in>
+ <in>cppInterpreter.cpp</in>
+ <in>cppInterpreterGenerator.cpp</in>
+ <in>interpreter.cpp</in>
+ <in>interpreterRuntime.cpp</in>
+ <in>invocationCounter.cpp</in>
+ <in>linkResolver.cpp</in>
+ <in>oopMapCache.cpp</in>
+ <in>rewriter.cpp</in>
+ <in>templateInterpreter.cpp</in>
+ <in>templateInterpreterGenerator.cpp</in>
+ <in>templateTable.cpp</in>
+ </df>
+ <df name="jvmci">
+ <in>commandLineFlagConstraintsJVMCI.cpp</in>
+ <in>jvmciCodeInstaller.cpp</in>
+ <in>jvmciCompiler.cpp</in>
+ <in>jvmciCompilerToVM.cpp</in>
+ <in>jvmciEnv.cpp</in>
+ <in>jvmciJavaClasses.cpp</in>
+ <in>jvmciRuntime.cpp</in>
+ <in>jvmci_globals.cpp</in>
+ <in>vmStructs_jvmci.cpp</in>
+ </df>
+ <df name="libadt">
+ <in>dict.cpp</in>
+ <in>set.cpp</in>
+ <in>vectset.cpp</in>
+ </df>
+ <df name="logging">
+ <in>log.cpp</in>
+ <in>logConfiguration.cpp</in>
+ <in>logDecorations.cpp</in>
+ <in>logDecorators.cpp</in>
+ <in>logDiagnosticCommand.cpp</in>
+ <in>logFileOutput.cpp</in>
+ <in>logFileStreamOutput.cpp</in>
+ <in>logLevel.cpp</in>
+ <in>logMessageBuffer.cpp</in>
+ <in>logOutput.cpp</in>
+ <in>logOutputList.cpp</in>
+ <in>logStream.cpp</in>
+ <in>logTag.cpp</in>
+ <in>logTagLevelExpression.cpp</in>
+ <in>logTagSet.cpp</in>
+ <in>logTagSetDescriptions.cpp</in>
+ </df>
+ <df name="memory">
+ <in>allocation.cpp</in>
+ <in>binaryTreeDictionary.cpp</in>
+ <in>filemap.cpp</in>
+ <in>freeBlockDictionary.cpp</in>
+ <in>freeList.cpp</in>
+ <in>guardedMemory.cpp</in>
+ <in>heap.cpp</in>
+ <in>heapInspection.cpp</in>
+ <in>iterator.cpp</in>
+ <in>memRegion.cpp</in>
+ <in>metachunk.cpp</in>
+ <in>metaspace.cpp</in>
+ <in>metaspaceCounters.cpp</in>
+ <in>metaspaceShared.cpp</in>
+ <in>metaspaceTracer.cpp</in>
+ <in>oopFactory.cpp</in>
+ <in>operator_new.cpp</in>
+ <in>resourceArea.cpp</in>
+ <in>universe.cpp</in>
+ <in>universe_ext.cpp</in>
+ <in>virtualspace.cpp</in>
+ </df>
+ <df name="oops">
+ <in>annotations.cpp</in>
+ <in>arrayKlass.cpp</in>
+ <in>arrayOop.cpp</in>
+ <in>compiledICHolder.cpp</in>
+ <in>constMethod.cpp</in>
+ <in>constantPool.cpp</in>
+ <in>cpCache.cpp</in>
+ <in>generateOopMap.cpp</in>
+ <in>instanceKlass.cpp</in>
+ <in>instanceMirrorKlass.cpp</in>
+ <in>instanceOop.cpp</in>
+ <in>instanceRefKlass.cpp</in>
+ <in>klass.cpp</in>
+ <in>klassVtable.cpp</in>
+ <in>markOop.cpp</in>
+ <in>metadata.cpp</in>
+ <in>method.cpp</in>
+ <in>methodCounters.cpp</in>
+ <in>methodData.cpp</in>
+ <in>objArrayKlass.cpp</in>
+ <in>objArrayOop.cpp</in>
+ <in>oop.cpp</in>
+ <in>oopsHierarchy.cpp</in>
+ <in>symbol.cpp</in>
+ <in>typeArrayKlass.cpp</in>
+ </df>
+ <df name="opto">
+ <in>addnode.cpp</in>
+ <in>arraycopynode.cpp</in>
+ <in>block.cpp</in>
+ <in>buildOopMap.cpp</in>
+ <in>bytecodeInfo.cpp</in>
+ <in>c2_globals.cpp</in>
+ <in>c2compiler.cpp</in>
+ <in>callGenerator.cpp</in>
+ <in>callnode.cpp</in>
+ <in>castnode.cpp</in>
+ <in>cfgnode.cpp</in>
+ <in>chaitin.cpp</in>
+ <in>classes.cpp</in>
+ <in>coalesce.cpp</in>
+ <in>compile.cpp</in>
+ <in>connode.cpp</in>
+ <in>convertnode.cpp</in>
+ <in>countbitsnode.cpp</in>
+ <in>divnode.cpp</in>
+ <in>doCall.cpp</in>
+ <in>domgraph.cpp</in>
+ <in>escape.cpp</in>
+ <in>gcm.cpp</in>
+ <in>generateOptoStub.cpp</in>
+ <in>graphKit.cpp</in>
+ <in>idealGraphPrinter.cpp</in>
+ <in>idealKit.cpp</in>
+ <in>ifg.cpp</in>
+ <in>ifnode.cpp</in>
+ <in>indexSet.cpp</in>
+ <in>intrinsicnode.cpp</in>
+ <in>lcm.cpp</in>
+ <in>library_call.cpp</in>
+ <in>live.cpp</in>
+ <in>locknode.cpp</in>
+ <in>loopPredicate.cpp</in>
+ <in>loopTransform.cpp</in>
+ <in>loopUnswitch.cpp</in>
+ <in>loopnode.cpp</in>
+ <in>loopopts.cpp</in>
+ <in>machnode.cpp</in>
+ <in>macro.cpp</in>
+ <in>macroArrayCopy.cpp</in>
+ <in>matcher.cpp</in>
+ <in>mathexactnode.cpp</in>
+ <in>memnode.cpp</in>
+ <in>movenode.cpp</in>
+ <in>mulnode.cpp</in>
+ <in>multnode.cpp</in>
+ <in>narrowptrnode.cpp</in>
+ <in>node.cpp</in>
+ <in>opaquenode.cpp</in>
+ <in>opcodes.cpp</in>
+ <in>output.cpp</in>
+ <in>parse1.cpp</in>
+ <in>parse2.cpp</in>
+ <in>parse3.cpp</in>
+ <in>parseHelper.cpp</in>
+ <in>phase.cpp</in>
+ <in>phaseX.cpp</in>
+ <in>postaloc.cpp</in>
+ <in>reg_split.cpp</in>
+ <in>regalloc.cpp</in>
+ <in>regmask.cpp</in>
+ <in>replacednodes.cpp</in>
+ <in>rootnode.cpp</in>
+ <in>runtime.cpp</in>
+ <in>split_if.cpp</in>
+ <in>stringopts.cpp</in>
+ <in>subnode.cpp</in>
+ <in>superword.cpp</in>
+ <in>type.cpp</in>
+ <in>vectornode.cpp</in>
+ </df>
+ <df name="prims">
+ <df name="wbtestmethods">
+ <in>parserTests.cpp</in>
+ </df>
+ <in>evmCompat.cpp</in>
+ <in>forte.cpp</in>
+ <in>jni.cpp</in>
+ <in>jniCheck.cpp</in>
+ <in>jniFastGetField.cpp</in>
+ <in>jvm.cpp</in>
+ <in>jvmtiClassFileReconstituter.cpp</in>
+ <in>jvmtiCodeBlobEvents.cpp</in>
+ <in>jvmtiEnv.cpp</in>
+ <in>jvmtiEnvBase.cpp</in>
+ <in>jvmtiEnvThreadState.cpp</in>
+ <in>jvmtiEventController.cpp</in>
+ <in>jvmtiExport.cpp</in>
+ <in>jvmtiExtensions.cpp</in>
+ <in>jvmtiGetLoadedClasses.cpp</in>
+ <in>jvmtiImpl.cpp</in>
+ <in>jvmtiManageCapabilities.cpp</in>
+ <in>jvmtiRawMonitor.cpp</in>
+ <in>jvmtiRedefineClasses.cpp</in>
+ <in>jvmtiTagMap.cpp</in>
+ <in>jvmtiThreadState.cpp</in>
+ <in>jvmtiTrace.cpp</in>
+ <in>jvmtiUtil.cpp</in>
+ <in>methodComparator.cpp</in>
+ <in>methodHandles.cpp</in>
+ <in>nativeLookup.cpp</in>
+ <in>perf.cpp</in>
+ <in>privilegedStack.cpp</in>
+ <in>stackwalk.cpp</in>
+ <in>unsafe.cpp</in>
+ <in>whitebox.cpp</in>
+ <in>whitebox_ext.cpp</in>
+ </df>
+ <df name="runtime">
+ <in>advancedThresholdPolicy.cpp</in>
+ <in>arguments.cpp</in>
+ <in>atomic.cpp</in>
+ <in>basicLock.cpp</in>
+ <in>biasedLocking.cpp</in>
+ <in>commandLineFlagConstraintList.cpp</in>
+ <in>commandLineFlagConstraintsCompiler.cpp</in>
+ <in>commandLineFlagConstraintsGC.cpp</in>
+ <in>commandLineFlagConstraintsRuntime.cpp</in>
+ <in>commandLineFlagRangeList.cpp</in>
+ <in>commandLineFlagWriteableList.cpp</in>
+ <in>compilationPolicy.cpp</in>
+ <in>deoptimization.cpp</in>
+ <in>fieldDescriptor.cpp</in>
+ <in>fieldType.cpp</in>
+ <in>fprofiler.cpp</in>
+ <in>frame.cpp</in>
+ <in>globals.cpp</in>
+ <in>handles.cpp</in>
+ <in>icache.cpp</in>
+ <in>init.cpp</in>
+ <in>interfaceSupport.cpp</in>
+ <in>java.cpp</in>
+ <in>javaCalls.cpp</in>
+ <in>jniHandles.cpp</in>
+ <in>jniPeriodicChecker.cpp</in>
+ <in>memprofiler.cpp</in>
+ <in>monitorChunk.cpp</in>
+ <in>mutex.cpp</in>
+ <in>mutexLocker.cpp</in>
+ <in>objectMonitor.cpp</in>
+ <in>orderAccess.cpp</in>
+ <in>os.cpp</in>
+ <in>osThread.cpp</in>
+ <in>park.cpp</in>
+ <in>perfData.cpp</in>
+ <in>perfMemory.cpp</in>
+ <in>reflection.cpp</in>
+ <in>reflectionUtils.cpp</in>
+ <in>relocator.cpp</in>
+ <in>rframe.cpp</in>
+ <in>rtmLocking.cpp</in>
+ <in>safepoint.cpp</in>
+ <in>semaphore.cpp</in>
+ <in>serviceThread.cpp</in>
+ <in>sharedRuntime.cpp</in>
+ <in>sharedRuntimeTrans.cpp</in>
+ <in>sharedRuntimeTrig.cpp</in>
+ <in>signature.cpp</in>
+ <in>simpleThresholdPolicy.cpp</in>
+ <in>stackValue.cpp</in>
+ <in>stackValueCollection.cpp</in>
+ <in>statSampler.cpp</in>
+ <in>stubCodeGenerator.cpp</in>
+ <in>stubRoutines.cpp</in>
+ <in>sweeper.cpp</in>
+ <in>synchronizer.cpp</in>
+ <in>task.cpp</in>
+ <in>thread.cpp</in>
+ <in>thread_ext.cpp</in>
+ <in>timer.cpp</in>
+ <in>timerTrace.cpp</in>
+ <in>unhandledOops.cpp</in>
+ <in>vframe.cpp</in>
+ <in>vframeArray.cpp</in>
+ <in>vframe_hp.cpp</in>
+ <in>vmStructs.cpp</in>
+ <in>vmThread.cpp</in>
+ <in>vm_operations.cpp</in>
+ <in>vm_version.cpp</in>
+ </df>
+ <df name="services">
+ <in>attachListener.cpp</in>
+ <in>classLoadingService.cpp</in>
+ <in>diagnosticArgument.cpp</in>
+ <in>diagnosticCommand.cpp</in>
+ <in>diagnosticFramework.cpp</in>
+ <in>dtraceAttacher.cpp</in>
+ <in>g1MemoryPool.cpp</in>
+ <in>gcNotifier.cpp</in>
+ <in>heapDumper.cpp</in>
+ <in>lowMemoryDetector.cpp</in>
+ <in>mallocSiteTable.cpp</in>
+ <in>mallocTracker.cpp</in>
+ <in>management.cpp</in>
+ <in>memBaseline.cpp</in>
+ <in>memReporter.cpp</in>
+ <in>memTracker.cpp</in>
+ <in>memoryManager.cpp</in>
+ <in>memoryPool.cpp</in>
+ <in>memoryService.cpp</in>
+ <in>nmtCommon.cpp</in>
+ <in>nmtDCmd.cpp</in>
+ <in>psMemoryPool.cpp</in>
+ <in>runtimeService.cpp</in>
+ <in>threadService.cpp</in>
+ <in>virtualMemoryTracker.cpp</in>
+ <in>writeableFlags.cpp</in>
+ </df>
+ <df name="trace">
+ <in>traceBackend.cpp</in>
+ </df>
+ <df name="utilities">
+ <in>accessFlags.cpp</in>
+ <in>array.cpp</in>
+ <in>bitMap.cpp</in>
+ <in>chunkedList.cpp</in>
+ <in>constantTag.cpp</in>
+ <in>copy.cpp</in>
+ <in>debug.cpp</in>
+ <in>decoder.cpp</in>
+ <in>decoder_elf.cpp</in>
+ <in>elfFile.cpp</in>
+ <in>elfFuncDescTable.cpp</in>
+ <in>elfStringTable.cpp</in>
+ <in>elfSymbolTable.cpp</in>
+ <in>errorReporter.cpp</in>
+ <in>events.cpp</in>
+ <in>exceptions.cpp</in>
+ <in>globalDefinitions.cpp</in>
+ <in>growableArray.cpp</in>
+ <in>hashtable.cpp</in>
+ <in>histogram.cpp</in>
+ <in>intHisto.cpp</in>
+ <in>internalVMTests.cpp</in>
+ <in>json.cpp</in>
+ <in>linkedlist.cpp</in>
+ <in>nativeCallStack.cpp</in>
+ <in>numberSeq.cpp</in>
+ <in>ostream.cpp</in>
+ <in>preserveException.cpp</in>
+ <in>quickSort.cpp</in>
+ <in>resourceHash.cpp</in>
+ <in>sizes.cpp</in>
+ <in>stringUtils.cpp</in>
+ <in>ticks.cpp</in>
+ <in>utf8.cpp</in>
+ <in>vmError.cpp</in>
+ <in>xmlstream.cpp</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="test">
+ <df name="native">
+ <df name="runtime">
+ <in>test_os.cpp</in>
+ </df>
+ <df name="utilities">
+ <in>test_quicksort.cpp</in>
+ </df>
+ <in>gtestLauncher.cpp</in>
+ <in>gtestMain.cpp</in>
+ </df>
+ </df>
+ </df>
+ <df name="jdk">
+ <df name="make">
+ <df name="src">
+ <df name="native">
+ <df name="genconstants">
+ <df name="ch">
+ <in>genSocketOptionRegistry.c</in>
+ </df>
+ <df name="fs">
+ <in>genUnixConstants.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="src">
+ <df name="java.base">
+ <df name="linux">
+ <df name="native">
+ <df name="libjava">
+ <in>ProcessHandleImpl_linux.c</in>
+ </df>
+ <df name="libnet">
+ <in>linux_close.c</in>
+ </df>
+ <df name="libnio">
+ <df name="ch">
+ <in>EPoll.c</in>
+ <in>EPollArrayWrapper.c</in>
+ <in>EPollPort.c</in>
+ </df>
+ <df name="fs">
+ <in>LinuxNativeDispatcher.c</in>
+ <in>LinuxWatchService.c</in>
+ <in>MagicFileTypeDetector.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="macosx">
+ <df name="native">
+ <df name="libjava">
+ <in>HostLocaleProviderAdapter_md.c</in>
+ <in>ProcessHandleImpl_macosx.c</in>
+ <in>java_props_macosx.c</in>
+ </df>
+ <df name="libjli">
+ <in>java_md_macosx.c</in>
+ </df>
+ <df name="libnet">
+ <in>bsd_close.c</in>
+ </df>
+ <df name="libnio">
+ <df name="ch">
+ <in>KQueue.c</in>
+ <in>KQueueArrayWrapper.c</in>
+ <in>KQueuePort.c</in>
+ </df>
+ <df name="fs">
+ <in>BsdNativeDispatcher.c</in>
+ <in>MacOSXNativeDispatcher.c</in>
+ <in>UTIFileTypeDetector.c</in>
+ </df>
+ </df>
+ <df name="libosxsecurity">
+ <in>KeystoreImpl.m</in>
+ </df>
+ </df>
+ </df>
+ <df name="share">
+ <df name="native">
+ <df name="launcher">
+ <in>main.c</in>
+ </df>
+ <df name="libfdlibm">
+ <in>e_acos.c</in>
+ <in>e_asin.c</in>
+ <in>e_atan2.c</in>
+ <in>e_atanh.c</in>
+ <in>e_cosh.c</in>
+ <in>e_exp.c</in>
+ <in>e_fmod.c</in>
+ <in>e_log.c</in>
+ <in>e_log10.c</in>
+ <in>e_rem_pio2.c</in>
+ <in>e_remainder.c</in>
+ <in>e_scalb.c</in>
+ <in>e_sinh.c</in>
+ <in>e_sqrt.c</in>
+ <in>k_cos.c</in>
+ <in>k_rem_pio2.c</in>
+ <in>k_sin.c</in>
+ <in>k_standard.c</in>
+ <in>k_tan.c</in>
+ <in>s_atan.c</in>
+ <in>s_ceil.c</in>
+ <in>s_copysign.c</in>
+ <in>s_cos.c</in>
+ <in>s_expm1.c</in>
+ <in>s_fabs.c</in>
+ <in>s_finite.c</in>
+ <in>s_floor.c</in>
+ <in>s_frexp.c</in>
+ <in>s_ilogb.c</in>
+ <in>s_isnan.c</in>
+ <in>s_ldexp.c</in>
+ <in>s_lib_version.c</in>
+ <in>s_log1p.c</in>
+ <in>s_logb.c</in>
+ <in>s_matherr.c</in>
+ <in>s_modf.c</in>
+ <in>s_nextafter.c</in>
+ <in>s_rint.c</in>
+ <in>s_scalbn.c</in>
+ <in>s_signgam.c</in>
+ <in>s_significand.c</in>
+ <in>s_sin.c</in>
+ <in>s_tan.c</in>
+ <in>s_tanh.c</in>
+ <in>w_acos.c</in>
+ <in>w_asin.c</in>
+ <in>w_atan2.c</in>
+ <in>w_atanh.c</in>
+ <in>w_cosh.c</in>
+ <in>w_exp.c</in>
+ <in>w_fmod.c</in>
+ <in>w_log.c</in>
+ <in>w_log10.c</in>
+ <in>w_remainder.c</in>
+ <in>w_scalb.c</in>
+ <in>w_sinh.c</in>
+ <in>w_sqrt.c</in>
+ </df>
+ <df name="libjava">
+ <in>AccessController.c</in>
+ <in>Array.c</in>
+ <in>AtomicLong.c</in>
+ <in>BootLoader.c</in>
+ <in>Class.c</in>
+ <in>ClassLoader.c</in>
+ <in>ConstantPool.c</in>
+ <in>Double.c</in>
+ <in>Executable.c</in>
+ <in>Field.c</in>
+ <in>FileInputStream.c</in>
+ <in>Float.c</in>
+ <in>GC.c</in>
+ <in>Module.c</in>
+ <in>NativeAccessors.c</in>
+ <in>Object.c</in>
+ <in>ObjectInputStream.c</in>
+ <in>ObjectOutputStream.c</in>
+ <in>ObjectStreamClass.c</in>
+ <in>Package.c</in>
+ <in>Proxy.c</in>
+ <in>RandomAccessFile.c</in>
+ <in>Reflection.c</in>
+ <in>Runtime.c</in>
+ <in>SecurityManager.c</in>
+ <in>Shutdown.c</in>
+ <in>Signal.c</in>
+ <in>StackFrameInfo.c</in>
+ <in>StackStreamFactory.c</in>
+ <in>StrictMath.c</in>
+ <in>String.c</in>
+ <in>StringCoding.c</in>
+ <in>System.c</in>
+ <in>Thread.c</in>
+ <in>Throwable.c</in>
+ <in>TimeZone.c</in>
+ <in>VM.c</in>
+ <in>VMSupport.c</in>
+ <in>Version.c</in>
+ <in>check_version.c</in>
+ <in>io_util.c</in>
+ <in>jdk_util.c</in>
+ <in>jio.c</in>
+ <in>jni_util.c</in>
+ <in>verify_stub.c</in>
+ </df>
+ <df name="libjimage">
+ <in>ImageNativeSubstrate.cpp</in>
+ <in>NativeImageBuffer.cpp</in>
+ <in>endian.cpp</in>
+ <in>imageDecompressor.cpp</in>
+ <in>imageFile.cpp</in>
+ <in>jimage.cpp</in>
+ </df>
+ <df name="libjli">
+ <in>args.c</in>
+ <in>java.c</in>
+ <in>jli_util.c</in>
+ <in>parse_manifest.c</in>
+ <in>splashscreen_stubs.c</in>
+ <in>wildcard.c</in>
+ </df>
+ <df name="libnet">
+ <in>DatagramPacket.c</in>
+ <in>Inet4Address.c</in>
+ <in>Inet6Address.c</in>
+ <in>InetAddress.c</in>
+ <in>net_util.c</in>
+ </df>
+ <df name="libnio">
+ <in>nio_util.c</in>
+ </df>
+ <df name="libverify">
+ <in>check_code.c</in>
+ <in>check_format.c</in>
+ </df>
+ <df name="libzip">
+ <df name="zlib">
+ <in>compress.c</in>
+ <in>deflate.c</in>
+ <in>gzclose.c</in>
+ <in>gzlib.c</in>
+ <in>gzread.c</in>
+ <in>gzwrite.c</in>
+ <in>infback.c</in>
+ <in>inffast.c</in>
+ <in>inflate.c</in>
+ <in>inftrees.c</in>
+ <in>trees.c</in>
+ <in>uncompr.c</in>
+ <in>zadler32.c</in>
+ <in>zcrc32.c</in>
+ <in>zutil.c</in>
+ </df>
+ <in>Adler32.c</in>
+ <in>CRC32.c</in>
+ <in>Deflater.c</in>
+ <in>Inflater.c</in>
+ <in>zip_util.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="solaris">
+ <df name="native">
+ <df name="libjava">
+ <in>ProcessHandleImpl_solaris.c</in>
+ </df>
+ <df name="libnet">
+ <in>solaris_close.c</in>
+ </df>
+ <df name="libnio">
+ <df name="ch">
+ <in>DevPollArrayWrapper.c</in>
+ <in>SolarisEventPort.c</in>
+ </df>
+ <df name="fs">
+ <in>SolarisNativeDispatcher.c</in>
+ <in>SolarisWatchService.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="unix">
+ <df name="native">
+ <df name="jspawnhelper">
+ <in>jspawnhelper.c</in>
+ </df>
+ <df name="launcher">
+ <in>jexec.c</in>
+ </df>
+ <df name="libjava">
+ <in>Console_md.c</in>
+ <in>FileDescriptor_md.c</in>
+ <in>FileInputStream_md.c</in>
+ <in>FileOutputStream_md.c</in>
+ <in>ProcessEnvironment_md.c</in>
+ <in>ProcessHandleImpl_unix.c</in>
+ <in>ProcessImpl_md.c</in>
+ <in>RandomAccessFile_md.c</in>
+ <in>TimeZone_md.c</in>
+ <in>UnixFileSystem_md.c</in>
+ <in>VM_md.c</in>
+ <in>canonicalize_md.c</in>
+ <in>childproc.c</in>
+ <in>io_util_md.c</in>
+ <in>java_props_md.c</in>
+ <in>jdk_util_md.c</in>
+ <in>jni_util_md.c</in>
+ </df>
+ <df name="libjimage">
+ <in>osSupport_unix.cpp</in>
+ </df>
+ <df name="libjli">
+ <in>ergo.c</in>
+ <in>ergo_i586.c</in>
+ <in>java_md_common.c</in>
+ <in>java_md_solinux.c</in>
+ </df>
+ <df name="libnet">
+ <in>DefaultProxySelector.c</in>
+ <in>ExtendedOptionsImpl.c</in>
+ <in>Inet4AddressImpl.c</in>
+ <in>Inet6AddressImpl.c</in>
+ <in>InetAddressImplFactory.c</in>
+ <in>NetworkInterface.c</in>
+ <in>PlainDatagramSocketImpl.c</in>
+ <in>PlainSocketImpl.c</in>
+ <in>ResolverConfigurationImpl.c</in>
+ <in>SdpSupport.c</in>
+ <in>SocketImpl.c</in>
+ <in>SocketInputStream.c</in>
+ <in>SocketOutputStream.c</in>
+ <in>net_util_md.c</in>
+ <in>portconfig.c</in>
+ </df>
+ <df name="libnio">
+ <df name="ch">
+ <in>DatagramChannelImpl.c</in>
+ <in>DatagramDispatcher.c</in>
+ <in>FileChannelImpl.c</in>
+ <in>FileDispatcherImpl.c</in>
+ <in>FileKey.c</in>
+ <in>IOUtil.c</in>
+ <in>InheritedChannel.c</in>
+ <in>NativeThread.c</in>
+ <in>Net.c</in>
+ <in>PollArrayWrapper.c</in>
+ <in>ServerSocketChannelImpl.c</in>
+ <in>SocketChannelImpl.c</in>
+ <in>SocketDispatcher.c</in>
+ <in>UnixAsynchronousServerSocketChannelImpl.c</in>
+ <in>UnixAsynchronousSocketChannelImpl.c</in>
+ </df>
+ <df name="fs">
+ <in>GioFileTypeDetector.c</in>
+ <in>UnixCopyFile.c</in>
+ <in>UnixNativeDispatcher.c</in>
+ </df>
+ <in>MappedByteBuffer.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="java.desktop">
+ <df name="macosx">
+ <df name="native">
+ <df name="libawt_lwawt">
+ <df name="awt">
+ <in>AWTEvent.m</in>
+ <in>AWTSurfaceLayers.m</in>
+ <in>AWTView.m</in>
+ <in>AWTWindow.m</in>
+ <in>ApplicationDelegate.m</in>
+ <in>CClipboard.m</in>
+ <in>CCursorManager.m</in>
+ <in>CDataTransferer.m</in>
+ <in>CDesktopPeer.m</in>
+ <in>CDragSource.m</in>
+ <in>CDragSourceContextPeer.m</in>
+ <in>CDropTarget.m</in>
+ <in>CDropTargetContextPeer.m</in>
+ <in>CFRetainedResource.m</in>
+ <in>CFileDialog.m</in>
+ <in>CGraphicsConfig.m</in>
+ <in>CGraphicsDevice.m</in>
+ <in>CGraphicsEnv.m</in>
+ <in>CImage.m</in>
+ <in>CInputMethod.m</in>
+ <in>CMenu.m</in>
+ <in>CMenuBar.m</in>
+ <in>CMenuComponent.m</in>
+ <in>CMenuItem.m</in>
+ <in>CPopupMenu.m</in>
+ <in>CPrinterJob.m</in>
+ <in>CRobot.m</in>
+ <in>CRobotKeyCode.m</in>
+ <in>CSystemColors.m</in>
+ <in>CTextPipe.m</in>
+ <in>CTrayIcon.m</in>
+ <in>CWrapper.m</in>
+ <in>DnDUtilities.m</in>
+ <in>GeomUtilities.m</in>
+ <in>ImageSurfaceData.m</in>
+ <in>InitIDs.m</in>
+ <in>JavaAccessibilityAction.m</in>
+ <in>JavaAccessibilityUtilities.m</in>
+ <in>JavaComponentAccessibility.m</in>
+ <in>JavaTextAccessibility.m</in>
+ <in>LWCToolkit.m</in>
+ <in>OSVersion.m</in>
+ <in>PrintModel.m</in>
+ <in>PrinterSurfaceData.m</in>
+ <in>PrinterView.m</in>
+ <in>QuartzRenderer.m</in>
+ <in>QuartzSurfaceData.m</in>
+ <in>awt_DrawingSurface.m</in>
+ </df>
+ <df name="font">
+ <in>AWTFont.m</in>
+ <in>AWTStrike.m</in>
+ <in>CCharToGlyphMapper.m</in>
+ <in>CGGlyphImages.m</in>
+ <in>CGGlyphOutlines.m</in>
+ <in>CoreTextSupport.m</in>
+ </df>
+ <df name="java2d">
+ <df name="opengl">
+ <in>CGLGraphicsConfig.m</in>
+ <in>CGLLayer.m</in>
+ <in>CGLSurfaceData.m</in>
+ </df>
+ </df>
+ </df>
+ <df name="libjawt">
+ <in>jawt.m</in>
+ </df>
+ <df name="libjsound">
+ <in>PLATFORM_API_MacOSX_MidiIn.c</in>
+ <in>PLATFORM_API_MacOSX_MidiOut.c</in>
+ <in>PLATFORM_API_MacOSX_MidiUtils.c</in>
+ <in>PLATFORM_API_MacOSX_PCM.cpp</in>
+ <in>PLATFORM_API_MacOSX_Ports.cpp</in>
+ <in>PLATFORM_API_MacOSX_Utils.cpp</in>
+ </df>
+ <df name="libosx">
+ <in>CFileManager.m</in>
+ </df>
+ <df name="libosxapp">
+ <in>AWT_debug.m</in>
+ <in>NSApplicationAWT.m</in>
+ <in>PropertiesUtilities.m</in>
+ <in>QueuingApplicationDelegate.m</in>
+ <in>ThreadUtilities.m</in>
+ </df>
+ <df name="libosxui">
+ <in>AquaFileView.m</in>
+ <in>AquaLookAndFeel.m</in>
+ <in>AquaNativeResources.m</in>
+ <in>JRSUIConstantSync.m</in>
+ <in>JRSUIController.m</in>
+ <in>JRSUIFocus.m</in>
+ <in>ScreenMenu.m</in>
+ </df>
+ <df name="libsplashscreen">
+ <in>splashscreen_sys.m</in>
+ </df>
+ </df>
+ </df>
+ <df name="share">
+ <df name="native">
+ <df name="common">
+ <df name="awt">
+ <df name="debug">
+ <in>debug_assert.c</in>
+ <in>debug_mem.c</in>
+ <in>debug_trace.c</in>
+ <in>debug_util.c</in>
+ </df>
+ <df name="medialib">
+ <in>mlib_ImageCopy_Bit.c</in>
+ <in>mlib_ImageCreate.c</in>
+ <in>mlib_sys.c</in>
+ </df>
+ <df name="utility">
+ <in>rect.c</in>
+ </df>
+ </df>
+ <df name="font">
+ <in>AccelGlyphCache.c</in>
+ </df>
+ <df name="java2d">
+ <df name="opengl">
+ <in>OGLBlitLoops.c</in>
+ <in>OGLBufImgOps.c</in>
+ <in>OGLContext.c</in>
+ <in>OGLFuncs.c</in>
+ <in>OGLMaskBlit.c</in>
+ <in>OGLMaskFill.c</in>
+ <in>OGLPaints.c</in>
+ <in>OGLRenderQueue.c</in>
+ <in>OGLRenderer.c</in>
+ <in>OGLSurfaceData.c</in>
+ <in>OGLTextRenderer.c</in>
+ <in>OGLVertexCache.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="libawt">
+ <df name="awt">
+ <df name="image">
+ <df name="cvutils">
+ <in>img_colors.c</in>
+ <in>img_globals.c</in>
+ </df>
+ <df name="gif">
+ <in>gifdecoder.c</in>
+ </df>
+ <in>BufImgSurfaceData.c</in>
+ <in>DataBufferNative.c</in>
+ <in>awt_ImageRep.c</in>
+ <in>awt_parseImage.c</in>
+ <in>dither.c</in>
+ <in>imageInitIDs.c</in>
+ </df>
+ <df name="medialib">
+ <in>awt_ImagingLib.c</in>
+ </df>
+ </df>
+ <df name="java2d">
+ <df name="loops">
+ <in>AlphaMacros.c</in>
+ <in>AlphaMath.c</in>
+ <in>Any3Byte.c</in>
+ <in>Any4Byte.c</in>
+ <in>AnyByte.c</in>
+ <in>AnyInt.c</in>
+ <in>AnyShort.c</in>
+ <in>Blit.c</in>
+ <in>BlitBg.c</in>
+ <in>ByteBinary1Bit.c</in>
+ <in>ByteBinary2Bit.c</in>
+ <in>ByteBinary4Bit.c</in>
+ <in>ByteGray.c</in>
+ <in>ByteIndexed.c</in>
+ <in>DrawLine.c</in>
+ <in>DrawParallelogram.c</in>
+ <in>DrawPath.c</in>
+ <in>DrawPolygons.c</in>
+ <in>DrawRect.c</in>
+ <in>FillParallelogram.c</in>
+ <in>FillPath.c</in>
+ <in>FillRect.c</in>
+ <in>FillSpans.c</in>
+ <in>FourByteAbgr.c</in>
+ <in>FourByteAbgrPre.c</in>
+ <in>GraphicsPrimitiveMgr.c</in>
+ <in>Index12Gray.c</in>
+ <in>Index8Gray.c</in>
+ <in>IntArgb.c</in>
+ <in>IntArgbBm.c</in>
+ <in>IntArgbPre.c</in>
+ <in>IntBgr.c</in>
+ <in>IntRgb.c</in>
+ <in>IntRgbx.c</in>
+ <in>MapAccelFunc.c</in>
+ <in>MaskBlit.c</in>
+ <in>MaskFill.c</in>
+ <in>ProcessPath.c</in>
+ <in>ScaledBlit.c</in>
+ <in>ThreeByteBgr.c</in>
+ <in>TransformHelper.c</in>
+ <in>Ushort4444Argb.c</in>
+ <in>Ushort555Rgb.c</in>
+ <in>Ushort555Rgbx.c</in>
+ <in>Ushort565Rgb.c</in>
+ <in>UshortGray.c</in>
+ <in>UshortIndexed.c</in>
+ </df>
+ <df name="pipe">
+ <in>BufferedMaskBlit.c</in>
+ <in>BufferedRenderPipe.c</in>
+ <in>Region.c</in>
+ <in>ShapeSpanIterator.c</in>
+ <in>SpanClipRenderer.c</in>
+ </df>
+ <in>Disposer.c</in>
+ <in>SurfaceData.c</in>
+ <in>Trace.c</in>
+ </df>
+ </df>
+ <df name="libfontmanager">
+ <df name="harfbuzz">
+ <df name="hb-ucdn">
+ <in>ucdn.c</in>
+ </df>
+ <in>hb-blob.cc</in>
+ <in>hb-buffer-serialize.cc</in>
+ <in>hb-buffer.cc</in>
+ <in>hb-common.cc</in>
+ <in>hb-coretext.cc</in>
+ <in>hb-face.cc</in>
+ <in>hb-fallback-shape.cc</in>
+ <in>hb-font.cc</in>
+ <in>hb-ot-font.cc</in>
+ <in>hb-ot-layout.cc</in>
+ <in>hb-ot-map.cc</in>
+ <in>hb-ot-shape-complex-arabic.cc</in>
+ <in>hb-ot-shape-complex-default.cc</in>
+ <in>hb-ot-shape-complex-hangul.cc</in>
+ <in>hb-ot-shape-complex-hebrew.cc</in>
+ <in>hb-ot-shape-complex-indic-table.cc</in>
+ <in>hb-ot-shape-complex-indic.cc</in>
+ <in>hb-ot-shape-complex-myanmar.cc</in>
+ <in>hb-ot-shape-complex-thai.cc</in>
+ <in>hb-ot-shape-complex-tibetan.cc</in>
+ <in>hb-ot-shape-complex-use-table.cc</in>
+ <in>hb-ot-shape-complex-use.cc</in>
+ <in>hb-ot-shape-fallback.cc</in>
+ <in>hb-ot-shape-normalize.cc</in>
+ <in>hb-ot-shape.cc</in>
+ <in>hb-ot-tag.cc</in>
+ <in>hb-set.cc</in>
+ <in>hb-shape-plan.cc</in>
+ <in>hb-shape.cc</in>
+ <in>hb-shaper.cc</in>
+ <in>hb-ucdn.cc</in>
+ <in>hb-unicode.cc</in>
+ <in>hb-warning.cc</in>
+ </df>
+ <df name="layout">
+ <in>AlternateSubstSubtables.cpp</in>
+ <in>AnchorTables.cpp</in>
+ <in>ArabicLayoutEngine.cpp</in>
+ <in>ArabicShaping.cpp</in>
+ <in>CanonData.cpp</in>
+ <in>CanonShaping.cpp</in>
+ <in>ClassDefinitionTables.cpp</in>
+ <in>ContextualGlyphInsertionProc2.cpp</in>
+ <in>ContextualGlyphSubstProc.cpp</in>
+ <in>ContextualGlyphSubstProc2.cpp</in>
+ <in>ContextualSubstSubtables.cpp</in>
+ <in>CoverageTables.cpp</in>
+ <in>CursiveAttachmentSubtables.cpp</in>
+ <in>DeviceTables.cpp</in>
+ <in>ExtensionSubtables.cpp</in>
+ <in>Features.cpp</in>
+ <in>GDEFMarkFilter.cpp</in>
+ <in>GXLayoutEngine.cpp</in>
+ <in>GXLayoutEngine2.cpp</in>
+ <in>GlyphDefinitionTables.cpp</in>
+ <in>GlyphIterator.cpp</in>
+ <in>GlyphLookupTables.cpp</in>
+ <in>GlyphPositionAdjustments.cpp</in>
+ <in>GlyphPositioningTables.cpp</in>
+ <in>GlyphPosnLookupProc.cpp</in>
+ <in>GlyphSubstLookupProc.cpp</in>
+ <in>GlyphSubstitutionTables.cpp</in>
+ <in>HanLayoutEngine.cpp</in>
+ <in>HangulLayoutEngine.cpp</in>
+ <in>IndicClassTables.cpp</in>
+ <in>IndicLayoutEngine.cpp</in>
+ <in>IndicRearrangementProcessor.cpp</in>
+ <in>IndicRearrangementProcessor2.cpp</in>
+ <in>IndicReordering.cpp</in>
+ <in>KernTable.cpp</in>
+ <in>KhmerLayoutEngine.cpp</in>
+ <in>KhmerReordering.cpp</in>
+ <in>LEFontInstance.cpp</in>
+ <in>LEGlyphStorage.cpp</in>
+ <in>LEInsertionList.cpp</in>
+ <in>LayoutEngine.cpp</in>
+ <in>LigatureSubstProc.cpp</in>
+ <in>LigatureSubstProc2.cpp</in>
+ <in>LigatureSubstSubtables.cpp</in>
+ <in>LookupProcessor.cpp</in>
+ <in>LookupTables.cpp</in>
+ <in>Lookups.cpp</in>
+ <in>MPreFixups.cpp</in>
+ <in>MarkArrays.cpp</in>
+ <in>MarkToBasePosnSubtables.cpp</in>
+ <in>MarkToLigaturePosnSubtables.cpp</in>
+ <in>MarkToMarkPosnSubtables.cpp</in>
+ <in>MirroredCharData.cpp</in>
+ <in>MorphTables.cpp</in>
+ <in>MorphTables2.cpp</in>
+ <in>MultipleSubstSubtables.cpp</in>
+ <in>NonContextualGlyphSubstProc.cpp</in>
+ <in>NonContextualGlyphSubstProc2.cpp</in>
+ <in>OpenTypeLayoutEngine.cpp</in>
+ <in>OpenTypeUtilities.cpp</in>
+ <in>PairPositioningSubtables.cpp</in>
+ <in>ScriptAndLanguage.cpp</in>
+ <in>ScriptAndLanguageTags.cpp</in>
+ <in>SegmentArrayProcessor.cpp</in>
+ <in>SegmentArrayProcessor2.cpp</in>
+ <in>SegmentSingleProcessor.cpp</in>
+ <in>SegmentSingleProcessor2.cpp</in>
+ <in>ShapingTypeData.cpp</in>
+ <in>SimpleArrayProcessor.cpp</in>
+ <in>SimpleArrayProcessor2.cpp</in>
+ <in>SinglePositioningSubtables.cpp</in>
+ <in>SingleSubstitutionSubtables.cpp</in>
+ <in>SingleTableProcessor.cpp</in>
+ <in>SingleTableProcessor2.cpp</in>
+ <in>StateTableProcessor.cpp</in>
+ <in>StateTableProcessor2.cpp</in>
+ <in>SubstitutionLookups.cpp</in>
+ <in>SubtableProcessor.cpp</in>
+ <in>SubtableProcessor2.cpp</in>
+ <in>SunLayoutEngine.cpp</in>
+ <in>ThaiLayoutEngine.cpp</in>
+ <in>ThaiShaping.cpp</in>
+ <in>ThaiStateTables.cpp</in>
+ <in>TibetanLayoutEngine.cpp</in>
+ <in>TibetanReordering.cpp</in>
+ <in>TrimmedArrayProcessor.cpp</in>
+ <in>TrimmedArrayProcessor2.cpp</in>
+ <in>ValueRecords.cpp</in>
+ </df>
+ <in>DrawGlyphList.c</in>
+ <in>FontInstanceAdapter.cpp</in>
+ <in>HBShaper.c</in>
+ <in>freetypeScaler.c</in>
+ <in>hb-jdk-font.cc</in>
+ <in>scriptMapping.c</in>
+ <in>sunFont.c</in>
+ </df>
+ <df name="libjavajpeg">
+ <in>imageioJPEG.c</in>
+ <in>jcapimin.c</in>
+ <in>jcapistd.c</in>
+ <in>jccoefct.c</in>
+ <in>jccolor.c</in>
+ <in>jcdctmgr.c</in>
+ <in>jchuff.c</in>
+ <in>jcinit.c</in>
+ <in>jcmainct.c</in>
+ <in>jcmarker.c</in>
+ <in>jcmaster.c</in>
+ <in>jcomapi.c</in>
+ <in>jcparam.c</in>
+ <in>jcphuff.c</in>
+ <in>jcprepct.c</in>
+ <in>jcsample.c</in>
+ <in>jctrans.c</in>
+ <in>jdapimin.c</in>
+ <in>jdapistd.c</in>
+ <in>jdcoefct.c</in>
+ <in>jdcolor.c</in>
+ <in>jddctmgr.c</in>
+ <in>jdhuff.c</in>
+ <in>jdinput.c</in>
+ <in>jdmainct.c</in>
+ <in>jdmarker.c</in>
+ <in>jdmaster.c</in>
+ <in>jdmerge.c</in>
+ <in>jdphuff.c</in>
+ <in>jdpostct.c</in>
+ <in>jdsample.c</in>
+ <in>jdtrans.c</in>
+ <in>jerror.c</in>
+ <in>jfdctflt.c</in>
+ <in>jfdctfst.c</in>
+ <in>jfdctint.c</in>
+ <in>jidctflt.c</in>
+ <in>jidctfst.c</in>
+ <in>jidctint.c</in>
+ <in>jidctred.c</in>
+ <in>jmemmgr.c</in>
+ <in>jmemnobs.c</in>
+ <in>jpegdecoder.c</in>
+ <in>jquant1.c</in>
+ <in>jquant2.c</in>
+ <in>jutils.c</in>
+ </df>
+ <df name="libjsound">
+ <in>DirectAudioDevice.c</in>
+ <in>DirectAudioDeviceProvider.c</in>
+ <in>MidiInDevice.c</in>
+ <in>MidiInDeviceProvider.c</in>
+ <in>MidiOutDevice.c</in>
+ <in>MidiOutDeviceProvider.c</in>
+ <in>Platform.c</in>
+ <in>PlatformMidi.c</in>
+ <in>PortMixer.c</in>
+ <in>PortMixerProvider.c</in>
+ <in>Utilities.c</in>
+ </df>
+ <df name="liblcms">
+ <in>LCMS.c</in>
+ <in>cmscam02.c</in>
+ <in>cmscgats.c</in>
+ <in>cmscnvrt.c</in>
+ <in>cmserr.c</in>
+ <in>cmsgamma.c</in>
+ <in>cmsgmt.c</in>
+ <in>cmshalf.c</in>
+ <in>cmsintrp.c</in>
+ <in>cmsio0.c</in>
+ <in>cmsio1.c</in>
+ <in>cmslut.c</in>
+ <in>cmsmd5.c</in>
+ <in>cmsmtrx.c</in>
+ <in>cmsnamed.c</in>
+ <in>cmsopt.c</in>
+ <in>cmspack.c</in>
+ <in>cmspcs.c</in>
+ <in>cmsplugin.c</in>
+ <in>cmsps2.c</in>
+ <in>cmssamp.c</in>
+ <in>cmssm.c</in>
+ <in>cmstypes.c</in>
+ <in>cmsvirt.c</in>
+ <in>cmswtpnt.c</in>
+ <in>cmsxform.c</in>
+ </df>
+ <df name="libmlib_image">
+ <in>mlib_ImageAffine.c</in>
+ <in>mlib_ImageAffineEdge.c</in>
+ <in>mlib_ImageAffine_BC_D64.c</in>
+ <in>mlib_ImageAffine_BC_F32.c</in>
+ <in>mlib_ImageAffine_BC_S32.c</in>
+ <in>mlib_ImageAffine_BL_D64.c</in>
+ <in>mlib_ImageAffine_BL_F32.c</in>
+ <in>mlib_ImageAffine_BL_S32.c</in>
+ <in>mlib_ImageAffine_NN.c</in>
+ <in>mlib_ImageAffine_NN_Bit.c</in>
+ <in>mlib_ImageClipping.c</in>
+ <in>mlib_ImageColorTrue2Index.c</in>
+ <in>mlib_ImageConv2x2_f.c</in>
+ <in>mlib_ImageConvClearEdge_Bit.c</in>
+ <in>mlib_ImageConvClearEdge_Fp.c</in>
+ <in>mlib_ImageConvCopyEdge_Bit.c</in>
+ <in>mlib_ImageConvKernelConvert.c</in>
+ <in>mlib_ImageConvMxN.c</in>
+ <in>mlib_ImageConvMxN_Fp.c</in>
+ <in>mlib_ImageConvMxN_ext.c</in>
+ <in>mlib_ImageConv_16ext.c</in>
+ <in>mlib_ImageConv_16nw.c</in>
+ <in>mlib_ImageConv_32nw.c</in>
+ <in>mlib_ImageConv_8ext.c</in>
+ <in>mlib_ImageConv_8nw.c</in>
+ <in>mlib_ImageConv_D64nw.c</in>
+ <in>mlib_ImageConv_F32nw.c</in>
+ <in>mlib_ImageConv_u16ext.c</in>
+ <in>mlib_ImageConv_u16nw.c</in>
+ <in>mlib_ImageDivTables.c</in>
+ <in>mlib_ImageFilters.c</in>
+ <in>mlib_ImageLookUp_64.c</in>
+ <in>mlib_ImageLookUp_Bit.c</in>
+ <in>mlib_ImageScanPoly.c</in>
+ <in>mlib_ImageUtils.c</in>
+ <in>mlib_c_ImageAffineIndex_BC.c</in>
+ <in>mlib_c_ImageAffineIndex_BL.c</in>
+ <in>mlib_c_ImageAffine_BC.c</in>
+ <in>mlib_c_ImageAffine_BC_S16.c</in>
+ <in>mlib_c_ImageAffine_BC_U16.c</in>
+ <in>mlib_c_ImageAffine_BL.c</in>
+ <in>mlib_c_ImageAffine_BL_S16.c</in>
+ <in>mlib_c_ImageAffine_BL_U16.c</in>
+ <in>mlib_c_ImageAffine_NN.c</in>
+ <in>mlib_c_ImageConvClearEdge.c</in>
+ <in>mlib_c_ImageConvCopyEdge.c</in>
+ <in>mlib_c_ImageConvVersion.c</in>
+ <in>mlib_c_ImageConv_f.c</in>
+ <in>mlib_c_ImageCopy.c</in>
+ <in>mlib_c_ImageLookUp.c</in>
+ <in>mlib_c_ImageLookUp_f.c</in>
+ <in>mlib_c_ImageThresh1_U8.c</in>
+ </df>
+ <df name="libsplashscreen">
+ <df name="giflib">
+ <in>dgif_lib.c</in>
+ <in>gif_err.c</in>
+ <in>gifalloc.c</in>
+ </df>
+ <df name="libpng">
+ <in>png.c</in>
+ <in>pngerror.c</in>
+ <in>pngget.c</in>
+ <in>pngmem.c</in>
+ <in>pngpread.c</in>
+ <in>pngread.c</in>
+ <in>pngrio.c</in>
+ <in>pngrtran.c</in>
+ <in>pngrutil.c</in>
+ <in>pngset.c</in>
+ <in>pngtrans.c</in>
+ <in>pngwio.c</in>
+ <in>pngwrite.c</in>
+ <in>pngwtran.c</in>
+ <in>pngwutil.c</in>
+ </df>
+ <in>java_awt_SplashScreen.c</in>
+ <in>splashscreen_gfx_impl.c</in>
+ <in>splashscreen_gif.c</in>
+ <in>splashscreen_impl.c</in>
+ <in>splashscreen_jpeg.c</in>
+ <in>splashscreen_png.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="unix">
+ <df name="native">
+ <df name="common">
+ <df name="awt">
+ <df name="systemscale">
+ <in>systemScale.c</in>
+ </df>
+ <in>CUPSfuncs.c</in>
+ <in>X11Color.c</in>
+ <in>awt_Font.c</in>
+ <in>fontpath.c</in>
+ </df>
+ <df name="java2d">
+ <df name="opengl">
+ <in>GLXGraphicsConfig.c</in>
+ <in>GLXSurfaceData.c</in>
+ </df>
+ <df name="x11">
+ <in>X11FontScaler_md.c</in>
+ <in>X11PMBlitLoops.c</in>
+ <in>X11Renderer.c</in>
+ <in>X11SurfaceData.c</in>
+ <in>X11TextRenderer_md.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="libawt">
+ <df name="awt">
+ <in>awt_LoadLibrary.c</in>
+ <in>awt_Mlib.c</in>
+ <in>initIDs.c</in>
+ </df>
+ </df>
+ <df name="libawt_headless">
+ <df name="awt">
+ <in>HeadlessToolkit.c</in>
+ <in>VDrawingArea.c</in>
+ </df>
+ </df>
+ <df name="libawt_xawt">
+ <df name="awt">
+ <in>awt_AWTEvent.c</in>
+ <in>awt_DrawingSurface.c</in>
+ <in>awt_Event.c</in>
+ <in>awt_GraphicsEnv.c</in>
+ <in>awt_InputMethod.c</in>
+ <in>awt_Insets.c</in>
+ <in>awt_Robot.c</in>
+ <in>awt_UNIXToolkit.c</in>
+ <in>awt_util.c</in>
+ <in>gtk2_interface.c</in>
+ <in>gtk3_interface.c</in>
+ <in>gtk_interface.c</in>
+ <in>list.c</in>
+ <in>multiVis.c</in>
+ <in>multi_font.c</in>
+ <in>robot_common.c</in>
+ <in>sun_awt_X11_GtkFileDialogPeer.c</in>
+ <in>swing_GTKEngine.c</in>
+ <in>swing_GTKStyle.c</in>
+ </df>
+ <df name="java2d">
+ <df name="x11">
+ <in>XRBackendNative.c</in>
+ <in>XRSurfaceData.c</in>
+ </df>
+ </df>
+ <df name="xawt">
+ <in>XToolkit.c</in>
+ <in>XWindow.c</in>
+ <in>XlibWrapper.c</in>
+ <in>awt_Desktop.c</in>
+ <in>awt_Taskbar.c</in>
+ <in>gnome_interface.c</in>
+ </df>
+ </df>
+ <df name="libfontmanager">
+ <in>X11FontScaler.c</in>
+ <in>X11TextRenderer.c</in>
+ </df>
+ <df name="libjawt">
+ <in>jawt.c</in>
+ </df>
+ <df name="libjsound">
+ <in>PLATFORM_API_LinuxOS_ALSA_CommonUtils.c</in>
+ <in>PLATFORM_API_LinuxOS_ALSA_MidiIn.c</in>
+ <in>PLATFORM_API_LinuxOS_ALSA_MidiOut.c</in>
+ <in>PLATFORM_API_LinuxOS_ALSA_MidiUtils.c</in>
+ <in>PLATFORM_API_LinuxOS_ALSA_PCM.c</in>
+ <in>PLATFORM_API_LinuxOS_ALSA_PCMUtils.c</in>
+ <in>PLATFORM_API_LinuxOS_ALSA_Ports.c</in>
+ <in>PLATFORM_API_SolarisOS_PCM.c</in>
+ <in>PLATFORM_API_SolarisOS_Ports.c</in>
+ <in>PLATFORM_API_SolarisOS_Utils.c</in>
+ </df>
+ <df name="libsplashscreen">
+ <in>splashscreen_sys.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="java.instrument">
+ <df name="share">
+ <df name="native">
+ <df name="libinstrument">
+ <in>EncodingSupport.c</in>
+ <in>InstrumentationImplNativeMethods.c</in>
+ <in>InvocationAdapter.c</in>
+ <in>JPLISAgent.c</in>
+ <in>JPLISAssert.c</in>
+ <in>JarFacade.c</in>
+ <in>JavaExceptions.c</in>
+ <in>PathCharsValidator.c</in>
+ <in>Reentrancy.c</in>
+ <in>Utilities.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="unix">
+ <df name="native">
+ <df name="libinstrument">
+ <in>EncodingSupport_md.c</in>
+ <in>FileSystemSupport_md.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="java.management">
+ <df name="share">
+ <df name="native">
+ <df name="libmanagement">
+ <in>ClassLoadingImpl.c</in>
+ <in>GarbageCollectorImpl.c</in>
+ <in>HotspotThread.c</in>
+ <in>MemoryImpl.c</in>
+ <in>MemoryManagerImpl.c</in>
+ <in>MemoryPoolImpl.c</in>
+ <in>ThreadImpl.c</in>
+ <in>VMManagementImpl.c</in>
+ <in>management.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="unix">
+ <df name="native">
+ <df name="libmanagement">
+ <in>FileSystemImpl.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="java.prefs">
+ <df name="macosx">
+ <df name="native">
+ <df name="libprefs">
+ <in>MacOSXPreferencesFile.m</in>
+ </df>
+ </df>
+ </df>
+ <df name="unix">
+ <df name="native">
+ <df name="libprefs">
+ <in>FileSystemPreferences.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="java.rmi">
+ <df name="share">
+ <df name="native">
+ <df name="librmi">
+ <in>GC.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="java.security.jgss">
+ <df name="macosx">
+ <df name="native">
+ <df name="libosxkrb5">
+ <in>SCDynamicStoreConfig.m</in>
+ <in>nativeccache.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="share">
+ <df name="native">
+ <df name="libj2gss">
+ <in>GSSLibStub.c</in>
+ <in>NativeUtil.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="unix">
+ <df name="native">
+ <df name="libj2gss">
+ <in>NativeFunc.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="java.smartcardio">
+ <df name="share">
+ <df name="native">
+ <df name="libj2pcsc">
+ <in>pcsc.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="unix">
+ <df name="native">
+ <df name="libj2pcsc">
+ <in>pcsc_md.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="jdk.attach">
+ <df name="linux">
+ <df name="native">
+ <df name="libattach">
+ <in>VirtualMachineImpl.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="macosx">
+ <df name="native">
+ <df name="libattach">
+ <in>VirtualMachineImpl.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="solaris">
+ <df name="native">
+ <df name="libattach">
+ <in>VirtualMachineImpl.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="jdk.crypto.ec">
+ <df name="share">
+ <df name="native">
+ <df name="libsunec">
+ <df name="impl">
+ <in>ec.c</in>
+ <in>ec2_163.c</in>
+ <in>ec2_193.c</in>
+ <in>ec2_233.c</in>
+ <in>ec2_aff.c</in>
+ <in>ec2_mont.c</in>
+ <in>ec_naf.c</in>
+ <in>ecdecode.c</in>
+ <in>ecl.c</in>
+ <in>ecl_curve.c</in>
+ <in>ecl_gf.c</in>
+ <in>ecl_mult.c</in>
+ <in>ecp_192.c</in>
+ <in>ecp_224.c</in>
+ <in>ecp_256.c</in>
+ <in>ecp_384.c</in>
+ <in>ecp_521.c</in>
+ <in>ecp_aff.c</in>
+ <in>ecp_jac.c</in>
+ <in>ecp_jm.c</in>
+ <in>ecp_mont.c</in>
+ <in>mp_gf2m.c</in>
+ <in>mpi.c</in>
+ <in>mplogic.c</in>
+ <in>mpmontg.c</in>
+ <in>oid.c</in>
+ <in>secitem.c</in>
+ </df>
+ <in>ECC_JNI.cpp</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="jdk.crypto.cryptoki">
+ <df name="share">
+ <df name="native">
+ <df name="libj2pkcs11">
+ <in>j2secmod.c</in>
+ <in>p11_convert.c</in>
+ <in>p11_crypt.c</in>
+ <in>p11_digest.c</in>
+ <in>p11_dual.c</in>
+ <in>p11_general.c</in>
+ <in>p11_keymgmt.c</in>
+ <in>p11_mutex.c</in>
+ <in>p11_objmgmt.c</in>
+ <in>p11_sessmgmt.c</in>
+ <in>p11_sign.c</in>
+ <in>p11_util.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="unix">
+ <df name="native">
+ <df name="libj2pkcs11">
+ <in>j2secmod_md.c</in>
+ <in>p11_md.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="jdk.crypto.ucrypto">
+ <df name="solaris">
+ <df name="native">
+ <df name="libj2ucrypto">
+ <in>nativeCrypto.c</in>
+ <in>nativeCryptoMD.c</in>
+ <in>nativeFunc.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="jdk.jdwp.agent">
+ <df name="share">
+ <df name="native">
+ <df name="libdt_socket">
+ <in>socketTransport.c</in>
+ </df>
+ <df name="libjdwp">
+ <in>ArrayReferenceImpl.c</in>
+ <in>ArrayTypeImpl.c</in>
+ <in>ClassLoaderReferenceImpl.c</in>
+ <in>ClassObjectReferenceImpl.c</in>
+ <in>ClassTypeImpl.c</in>
+ <in>EventRequestImpl.c</in>
+ <in>FieldImpl.c</in>
+ <in>FrameID.c</in>
+ <in>InterfaceTypeImpl.c</in>
+ <in>MethodImpl.c</in>
+ <in>ModuleReferenceImpl.c</in>
+ <in>ObjectReferenceImpl.c</in>
+ <in>ReferenceTypeImpl.c</in>
+ <in>SDE.c</in>
+ <in>StackFrameImpl.c</in>
+ <in>StringReferenceImpl.c</in>
+ <in>ThreadGroupReferenceImpl.c</in>
+ <in>ThreadReferenceImpl.c</in>
+ <in>VirtualMachineImpl.c</in>
+ <in>bag.c</in>
+ <in>classTrack.c</in>
+ <in>commonRef.c</in>
+ <in>debugDispatch.c</in>
+ <in>debugInit.c</in>
+ <in>debugLoop.c</in>
+ <in>error_messages.c</in>
+ <in>eventFilter.c</in>
+ <in>eventHandler.c</in>
+ <in>eventHelper.c</in>
+ <in>inStream.c</in>
+ <in>invoker.c</in>
+ <in>log_messages.c</in>
+ <in>outStream.c</in>
+ <in>standardHandlers.c</in>
+ <in>stepControl.c</in>
+ <in>stream.c</in>
+ <in>threadControl.c</in>
+ <in>transport.c</in>
+ <in>utf_util.c</in>
+ <in>util.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="unix">
+ <df name="native">
+ <df name="libdt_socket">
+ <in>socket_md.c</in>
+ </df>
+ <df name="libjdwp">
+ <in>exec_md.c</in>
+ <in>linker_md.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="jdk.management">
+ <df name="linux">
+ <df name="native">
+ <df name="libmanagement_ext">
+ <in>UnixOperatingSystem.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="macosx">
+ <df name="native">
+ <df name="libmanagement_ext">
+ <in>UnixOperatingSystem.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="share">
+ <df name="native">
+ <df name="libmanagement_ext">
+ <in>DiagnosticCommandImpl.c</in>
+ <in>Flag.c</in>
+ <in>GarbageCollectorExtImpl.c</in>
+ <in>GcInfoBuilder.c</in>
+ <in>HotSpotDiagnostic.c</in>
+ <in>management_ext.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="solaris">
+ <df name="native">
+ <df name="libmanagement_ext">
+ <in>UnixOperatingSystem.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="unix">
+ <df name="native">
+ <df name="libmanagement_ext">
+ <in>OperatingSystemImpl.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="jdk.net">
+ <df name="solaris">
+ <df name="native">
+ <df name="libextnet">
+ <in>SolarisSocketOptions.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="jdk.pack">
+ <df name="share">
+ <df name="native">
+ <df name="common-unpack">
+ <in>bands.cpp</in>
+ <in>bytes.cpp</in>
+ <in>coding.cpp</in>
+ <in>unpack.cpp</in>
+ <in>utils.cpp</in>
+ <in>zip.cpp</in>
+ </df>
+ <df name="libunpack">
+ <in>jni.cpp</in>
+ </df>
+ <df name="unpack200">
+ <in>main.cpp</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="jdk.sctp">
+ <df name="unix">
+ <df name="native">
+ <df name="libsctp">
+ <in>SctpChannelImpl.c</in>
+ <in>SctpNet.c</in>
+ <in>SctpServerChannelImpl.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="jdk.security.auth">
+ <df name="solaris">
+ <df name="native">
+ <df name="libjaas">
+ <in>Solaris.c</in>
+ </df>
+ </df>
+ </df>
+ <df name="unix">
+ <df name="native">
+ <df name="libjaas">
+ <in>Unix.c</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ </df>
+ </df>
+ <df name="test">
+ <df name="fmw">
+ <df name="gtest">
+ <df name="src">
+ <in>gtest-all.cc</in>
+ </df>
+ </df>
+ </df>
+ </df>
+ </df>
+ <logicalFolder name="ExternalFiles"
+ displayName="Important Files"
+ projectFiles="false"
+ kind="IMPORTANT_FILES_FOLDER">
+ <itemPath>../../Makefile</itemPath>
+ </logicalFolder>
+ </logicalFolder>
+ <sourceFolderFilter>^(nbproject|build)$</sourceFolderFilter>
+ <sourceRootList>
+ <Elem>../..</Elem>
+ </sourceRootList>
+ <projectmakefile>../../Makefile</projectmakefile>
+ <confs>
+ <conf name="Mac_64" type="0">
+ <toolsSet>
+ <compilerSet>default</compilerSet>
+ <dependencyChecking>false</dependencyChecking>
+ <rebuildPropChanged>false</rebuildPropChanged>
+ </toolsSet>
+ <flagsDictionary>
+ <element flagsID="0" commonFlags="-fPIC"/>
+ <element flagsID="1" commonFlags="-g -fPIC -g"/>
+ <element flagsID="2" commonFlags="-g -g"/>
+ <element flagsID="3" commonFlags="-g -g -g"/>
+ <element flagsID="4" commonFlags="-m64 -fPIC -fno-rtti -fno-exceptions"/>
+ <element flagsID="5" commonFlags="-std=c99"/>
+ </flagsDictionary>
+ <codeAssistance>
+ <transientMacros>
+ <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
+ </transientMacros>
+ </codeAssistance>
+ <makefileType>
+ <makeTool>
+ <buildCommandWorkingDir>../..</buildCommandWorkingDir>
+ <buildCommand>${MAKE} -f Makefile images</buildCommand>
+ <cleanCommand>${MAKE} -f Makefile clean</cleanCommand>
+ <executablePath></executablePath>
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="MacosxDebuggerLocal.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </makeTool>
+ <preBuild>
+ <preBuildCommandWorkingDir>../..</preBuildCommandWorkingDir>
+ <preBuildCommand>sh ../configure --with-debug-level=slowdebug --disable-zip-debug-info</preBuildCommand>
+ </preBuild>
+ </makefileType>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64_clone.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64_clone.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64_expand.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64_expand.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64_format.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64_format.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64_gen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64_gen.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64_misc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64_misc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64_peephole.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64_peephole.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64_pipeline.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64_pipeline.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/dfa_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="dfa_x86_64.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/jvmtifiles/bytecodeInterpreterWithChecks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/jvmtifiles/jvmtiEnter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiEnter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/jvmtifiles/jvmtiEnterTrace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiEnterTrace.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles/ad_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles/ad_x86_64_clone.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles/ad_x86_64_expand.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles/ad_x86_64_format.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles/ad_x86_64_gen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles/ad_x86_64_misc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles/ad_x86_64_peephole.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles/ad_x86_64_pipeline.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles/dfa_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/adfiles</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles/bytecodeInterpreterWithChecks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles/jvmtiEnter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles/jvmtiEnterTrace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/abstractInterpreter_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/assembler_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_CodeStubs_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_FpuStackSim_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_FrameMap_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_LinearScan_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c2_init_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/compiledIC_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/debug_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/depChecker_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/frame_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/icBuffer_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/icache_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/interp_masm_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/interpreterRT_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/jniFastGetField_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/jvmciCodeInstaller_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/jvmci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_libm_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ <incDir>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/makefiles</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_gcc</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_bsd_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_bsd_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_bsd</Elem>
+ <Elem>THIS_FILE="macroAssembler_libm_x86_64.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_C_SOURCE</Elem>
+ <Elem>_GNU_SOURCE</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ <Elem>_XOPEN_SOURCE</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_cos.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_exp.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_log.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_log10.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_pow.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_sha.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_sin.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_tan.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/metaspaceShared_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/methodHandles_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/nativeInst_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/registerMap_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/register_definitions_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/register_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/relocInfo_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/runtime_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/sharedRuntime_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/stubRoutines_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/stubRoutines_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/templateTable_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/vm_version_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/vmreg_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/vtableStubs_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/jdk.hotspot.agent/macosx/native/libsaproc/MacosxDebuggerLocal.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="1">
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/jdk.hotspot.agent/macosx/native/libsaproc/libproc_impl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="1">
+ <preprocessorList>
+ <Elem>THIS_FILE="libproc_impl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/jdk.hotspot.agent/macosx/native/libsaproc/ps_core.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="1">
+ <preprocessorList>
+ <Elem>THIS_FILE="ps_core.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/jdk.hotspot.agent/macosx/native/libsaproc/symtab.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="1">
+ <preprocessorList>
+ <Elem>THIS_FILE="symtab.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/jdk.hotspot.agent/share/native/libsaproc/sadis.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="1">
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/os/bsd/vm/attachListener_bsd.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/bsd/vm/decoder_machO.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/bsd/vm/jsig.c" ex="false" tool="0" flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/os/bsd/vm/jvm_bsd.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/bsd/vm/mutex_bsd.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/bsd/vm/osThread_bsd.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/bsd/vm/os_bsd.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/bsd/vm/perfMemory_bsd.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/bsd/vm/stubRoutines_bsd.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/bsd/vm/threadCritical_bsd.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/posix/vm/os_posix.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/posix/vm/threadLocalStorage_posix.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/posix/vm/vmError_posix.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os_cpu/bsd_x86/vm/assembler_bsd_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os_cpu/bsd_x86/vm/thread_bsd_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os_cpu/bsd_x86/vm/vm_version_bsd_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/adlparse.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/archDesc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="archDesc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/arena.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="arena.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/dfa.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="dfa.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/dict2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="dict2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/filebuff.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="filebuff.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/forms.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="forms.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/formsopt.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="formsopt.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/formssel.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="formssel.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/main.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="main.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/output_c.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="output_c.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/output_h.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="output_h.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/asm/assembler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/asm/codeBuffer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/asm/register.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_CFGPrinter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Canonicalizer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Compilation.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Compiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Defs.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_FrameMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_GraphBuilder.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_IR.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Instruction.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_InstructionPrinter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_LIR.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_LIRAssembler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_LIRGenerator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_LinearScan.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Optimizer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_RangeCheckElimination.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Runtime1.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_ValueMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_ValueSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_ValueStack.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_ValueType.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_globals.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciArrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciBaseObject.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciCallSite.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciConstant.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciConstantPoolCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciEnv.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciExceptionHandler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciField.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciFlags.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciInstance.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciInstanceKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMemberName.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMetadata.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMethod.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMethodBlocks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMethodData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMethodHandle.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciNullObject.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciObjArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciObjArrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciObject.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciObjectFactory.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciReplay.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciSignature.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciStreams.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciSymbol.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciType.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciTypeArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciTypeArrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciTypeFlow.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciUtilities.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/altHashing.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/bytecodeAssembler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classFileError.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classFileParser.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classFileStream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classListParser.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classLoader.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classLoaderData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classLoaderExt.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classLoaderStats.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/compactHashtable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/defaultMethods.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/dictionary.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/javaAssertions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/javaClasses.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/klassFactory.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/loaderConstraints.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/metadataOnStackMark.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/moduleEntry.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/modules.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/packageEntry.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/placeholders.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/resolutionErrors.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/sharedPathsMiscInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/stackMapFrame.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/stackMapTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/stringTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/symbolTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/systemDictionary.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/verificationType.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/verifier.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/vmSymbols.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/codeBlob.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/codeCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/compiledIC.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/compiledMethod.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/compressedStream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/debugInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/debugInfoRec.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/dependencies.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/dependencyContext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/exceptionHandlerTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/icBuffer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/location.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/nmethod.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/jvmci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/oopRecorder.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/pcDesc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/relocInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/scopeDesc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/stubs.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/vmreg.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/vtableStubs.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/abstractCompiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/compileBroker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/jvmci</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/compileLog.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/compileTask.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/compilerDirectives.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/compilerOracle.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/directivesParser.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/disassembler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/methodLiveness.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/methodMatcher.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/oopMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/adaptiveFreeList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/allocationStats.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/cmsCollectorPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/cmsLockVerifier.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/cmsOopClosures.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/compactibleFreeListSpace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/concurrentMarkSweepGeneration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/concurrentMarkSweepThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/freeChunk.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/gSpaceCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/parCardTableModRefBS.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/parNewGeneration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/parOopClosures.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/promotionInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/vmCMSOperations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/yieldingWorkgroup.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/bufferingOopClosure.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/collectionSetChooser.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/concurrentG1Refine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/concurrentG1RefineThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/concurrentMarkThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/dirtyCardQueue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1AllocRegion.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1Allocator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1Allocator_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1Analytics.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1BiasedArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1BlockOffsetTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CardCounts.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CardLiveData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CodeBlobClosure.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CodeCacheRemSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CollectedHeap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CollectedHeap_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CollectionSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CollectorPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1ConcurrentMark.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1DefaultPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1EvacFailure.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1EvacStats.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1FromCardCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1GCPhaseTimes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1HeapSizingPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1HeapSizingPolicy_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1HeapTransition.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1HeapVerifier.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1HotCardCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1IHOPControl.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1MMUTracker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1MarkSweep.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1MarkSweep_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1MonitoringSupport.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1OopClosures.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1PageBasedVirtualSpace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1ParScanThreadState.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1ParScanThreadState_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1Predictions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RegionToSpaceMapper.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RemSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RemSetSummary.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RootClosures.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RootClosures_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RootProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1SATBCardTableModRefBS.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1StringDedup.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1StringDedupQueue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1StringDedupStat.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1StringDedupTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1StringDedupThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1SurvivorRegions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1YoungGenSizer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1YoungRemSetSamplingThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1_globals.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/hSpaceCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegion.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegionManager.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegionRemSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegionSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegionTracer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegionType.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/ptrQueue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/satbMarkQueue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/sparsePRT.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/survRateGroup.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/suspendibleThreadSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/vm_operations_g1.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/workerDataArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/youngList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ <incDir>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/makefiles</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_gcc</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_bsd_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_bsd_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_bsd</Elem>
+ <Elem>THIS_FILE="youngList.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_C_SOURCE</Elem>
+ <Elem>_GNU_SOURCE</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ <Elem>_XOPEN_SOURCE</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/adjoiningGenerations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/adjoiningVirtualSpaces.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/asPSOldGen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/asPSYoungGen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/cardTableExtension.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/gcAdaptivePolicyCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/gcTaskManager.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/gcTaskThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/generationSizer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/immutableSpace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/mutableNUMASpace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/mutableSpace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/objectStartArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/parMarkBitMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/parallelScavengeHeap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/pcTasks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psAdaptiveSizePolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psCompactionManager.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psGCAdaptivePolicyCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psGenerationCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psMarkSweep.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psMarkSweepDecorator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psOldGen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psParallelCompact.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psPromotionLAB.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psPromotionManager.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psScavenge.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psTasks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psVirtualspace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psYoungGen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/spaceCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/vmPSOperations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/serial/cSpaceCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/serial/defNewGeneration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/serial/genMarkSweep.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/serial/markSweep.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/serial/tenuredGeneration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/adaptiveSizePolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/ageTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/ageTableTracer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/allocTracer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/barrierSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/blockOffsetTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/cardGeneration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/cardTableModRefBS.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/cardTableModRefBSForCTRS.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/cardTableRS.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/collectedHeap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/collectorCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/collectorPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/concurrentGCThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcCause.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcId.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcLocker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcPolicyCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcStats.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcTimer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcTrace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcTraceSend.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcTraceTime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcUtil.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/genCollectedHeap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/genOopClosures.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/generation.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/generationCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/generationSpec.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/memset_with_concurrent_readers.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/objectCountEventSender.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/plab.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/preservedMarks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/referencePendingListLocker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/referencePolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/referenceProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/space.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/spaceDecorator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/strongRootsScope.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/taskqueue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/threadLocalAllocBuffer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/vmGCOperations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/workgroup.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/abstractInterpreter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecodeHistogram.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecodeStream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecodeTracer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecodes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/cppInterpreter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/cppInterpreterGenerator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/interpreter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/interpreterRuntime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/invocationCounter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/linkResolver.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/oopMapCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/rewriter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/templateInterpreter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/templateInterpreterGenerator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/templateTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciCodeInstaller.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/jvmci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciCompiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/jvmci</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciCompilerToVM.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/jvmci</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciEnv.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/jvmci</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciJavaClasses.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/jvmci</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciRuntime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/jvmci</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmci_globals.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/jvmci</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/vmStructs_jvmci.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/jvmci</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/libadt/dict.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/libadt/set.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/libadt/vectset.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/log.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logConfiguration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logDecorations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logDecorators.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logDiagnosticCommand.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logFileOutput.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logFileStreamOutput.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logLevel.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logMessageBuffer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logOutput.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logOutputList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logStream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logTag.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logTagLevelExpression.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logTagSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logTagSetDescriptions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/allocation.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/binaryTreeDictionary.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/filemap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/freeBlockDictionary.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/freeList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/guardedMemory.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/heap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/heapInspection.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/iterator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/memRegion.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/metachunk.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/metaspace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/metaspaceCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/metaspaceShared.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/metaspaceTracer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/oopFactory.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/operator_new.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/resourceArea.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/universe.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/universe_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/virtualspace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/annotations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/arrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/arrayOop.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/compiledICHolder.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/constMethod.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/constantPool.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/cpCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/generateOopMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/instanceKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/instanceMirrorKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/instanceOop.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/instanceRefKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/klass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/klassVtable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/markOop.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/metadata.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/method.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/methodCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/methodData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/objArrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/objArrayOop.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/oop.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/oopsHierarchy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/symbol.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/typeArrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/addnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/arraycopynode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/block.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/buildOopMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/bytecodeInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/c2_globals.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/c2compiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/callGenerator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/callnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/castnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/cfgnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/chaitin.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/classes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/coalesce.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/compile.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/connode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/convertnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/countbitsnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/divnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/doCall.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/domgraph.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/escape.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/gcm.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/generateOptoStub.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/graphKit.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/idealGraphPrinter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/idealKit.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/ifg.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/ifnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/indexSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/intrinsicnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/lcm.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/library_call.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/live.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/locknode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/loopPredicate.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/loopTransform.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/loopUnswitch.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/loopnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/loopopts.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/machnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/macro.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/macroArrayCopy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/matcher.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/mathexactnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/memnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/movenode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/mulnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/multnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/narrowptrnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/node.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/opaquenode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/opcodes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/output.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/parse1.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/parse2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/parse3.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/parseHelper.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/phase.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/phaseX.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/postaloc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/reg_split.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/regalloc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/regmask.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/replacednodes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/rootnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/runtime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/make</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/split_if.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/stringopts.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/subnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/superword.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/type.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/vectornode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/evmCompat.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/forte.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jni.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/jvmci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jniCheck.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jniFastGetField.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvm.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiCodeBlobEvents.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiEnv.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiEnvBase.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiEnvThreadState.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiEventController.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiExport.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiExtensions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiGetLoadedClasses.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiImpl.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiManageCapabilities.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiRawMonitor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiTagMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiThreadState.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiTrace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiUtil.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/methodComparator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/methodHandles.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/nativeLookup.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/perf.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/privilegedStack.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/stackwalk.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/unsafe.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/wbtestmethods/parserTests.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/whitebox.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/whitebox_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/advancedThresholdPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/arguments.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/atomic.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ <incDir>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/makefiles</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_gcc</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_bsd_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_bsd_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_bsd</Elem>
+ <Elem>THIS_FILE="atomic.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_C_SOURCE</Elem>
+ <Elem>_GNU_SOURCE</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ <Elem>_XOPEN_SOURCE</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/basicLock.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/biasedLocking.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagConstraintList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagConstraintsCompiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagConstraintsGC.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagConstraintsRuntime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagRangeList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagWriteableList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/compilationPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/deoptimization.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/jvmci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/fieldDescriptor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/fieldType.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/fprofiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/frame.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/globals.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/jvmci</pElem>
+ <pElem>../../hotspot/src/share/vm/c1</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/handles.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/icache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/init.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/interfaceSupport.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/java.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/javaCalls.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/jniHandles.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/jniPeriodicChecker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/memprofiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/monitorChunk.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/mutex.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/mutexLocker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/objectMonitor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/orderAccess.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/os.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/osThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/park.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/perfData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/perfMemory.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/reflection.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/reflectionUtils.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/relocator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/rframe.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/rtmLocking.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/safepoint.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/semaphore.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/serviceThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/sharedRuntime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/sharedRuntimeTrans.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/sharedRuntimeTrig.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/signature.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/simpleThresholdPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/stackValue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/stackValueCollection.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/statSampler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/stubCodeGenerator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/stubRoutines.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/sweeper.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/synchronizer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/task.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/thread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/thread_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/timer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/timerTrace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/unhandledOops.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vframe.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vframeArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vframe_hp.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vmStructs.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm/opto</pElem>
+ <pElem>../../hotspot/src/share/vm/libadt</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vmThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vm_operations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vm_version.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/attachListener.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/classLoadingService.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/diagnosticArgument.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/diagnosticCommand.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/diagnosticFramework.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/dtraceAttacher.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/g1MemoryPool.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/g1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/gcNotifier.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/heapDumper.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/lowMemoryDetector.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/mallocSiteTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/mallocTracker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/management.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memBaseline.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memReporter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memTracker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memoryManager.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memoryPool.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memoryService.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/serial</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/cms</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/nmtCommon.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/nmtDCmd.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/psMemoryPool.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/runtimeService.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/threadService.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/virtualMemoryTracker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/writeableFlags.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/trace/traceBackend.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/accessFlags.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/array.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="4">
+ <incDir>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/makefiles</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_gcc</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_bsd_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_bsd_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_bsd</Elem>
+ <Elem>THIS_FILE="array.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_C_SOURCE</Elem>
+ <Elem>_GNU_SOURCE</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ <Elem>_XOPEN_SOURCE</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/bitMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/chunkedList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/constantTag.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/copy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/debug.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/decoder.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/decoder_elf.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/elfFile.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/elfFuncDescTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/elfStringTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/elfSymbolTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/errorReporter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/events.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/exceptions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/globalDefinitions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/growableArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/hashtable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/histogram.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/intHisto.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/internalVMTests.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/json.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/linkedlist.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/nativeCallStack.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/numberSeq.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/ostream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/preserveException.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/quickSort.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/resourceHash.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/sizes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/stringUtils.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/ticks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/utf8.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/vmError.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm/compiler</pElem>
+ <pElem>../../hotspot/src/share/vm/ci</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/xmlstream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/macosx/native/libjava/HostLocaleProviderAdapter_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/macosx/native/libjava/ProcessHandleImpl_macosx.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/macosx/native/libjava/java_props_macosx.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libfdlibm</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>ARCH="x86_64"</Elem>
+ <Elem>ARCHPROPNAME="x86_64"</Elem>
+ <Elem>DEBUG</Elem>
+ <Elem>MACOSX</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>THIS_FILE="java_props_macosx.c"</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_UNLIMITED_SELECT</Elem>
+ <Elem>_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>x86_64</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/macosx/native/libjli/java_md_macosx.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="3">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/macosx/native/libnet/bsd_close.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/macosx/native/libnio/ch/KQueue.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/macosx/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/macosx/native/libnio/ch/KQueueArrayWrapper.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/macosx/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/macosx/native/libnio/ch/KQueuePort.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libnio/ch</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/macosx/native/libnio/fs/BsdNativeDispatcher.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/macosx/native/libnio/fs/MacOSXNativeDispatcher.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/macosx/native/libnio/fs/UTIFileTypeDetector.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/macosx/native/libosxsecurity/KeystoreImpl.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/launcher/main.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="3">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_acos.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_asin.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_atan2.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_atanh.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_cosh.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_exp.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_fmod.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_log.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_log10.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_rem_pio2.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_remainder.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_scalb.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_sinh.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_sqrt.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/k_cos.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/k_rem_pio2.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/k_sin.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/k_standard.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/k_tan.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_atan.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_ceil.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_copysign.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_cos.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_expm1.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_fabs.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_finite.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_floor.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_frexp.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_ilogb.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_isnan.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_ldexp.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_lib_version.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_log1p.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_logb.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_matherr.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_modf.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_nextafter.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_rint.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_scalbn.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_signgam.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_significand.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_sin.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_tan.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_tanh.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_acos.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_asin.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_atan2.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_atanh.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_cosh.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_exp.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_fmod.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_log.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_log10.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_remainder.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_scalb.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_sinh.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_sqrt.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/AccessController.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Array.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/AtomicLong.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/BootLoader.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Class.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/ClassLoader.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/ConstantPool.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Double.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Executable.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Field.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/FileInputStream.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Float.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Module.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/NativeAccessors.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Object.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/ObjectInputStream.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/ObjectOutputStream.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/ObjectStreamClass.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/RandomAccessFile.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Reflection.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Runtime.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/SecurityManager.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Shutdown.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Signal.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/StackFrameInfo.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/StackStreamFactory.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/StrictMath.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/String.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/StringCoding.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/System.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Thread.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Throwable.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/TimeZone.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/VM.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/VMSupport.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/check_version.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/io_util.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/jdk_util.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/jio.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/jni_util.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/verify_stub.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjimage/NativeImageBuffer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjimage</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjimage/endian.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libjimage</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjimage/imageDecompressor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libjimage</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjimage/imageFile.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libjimage</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjimage/jimage.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libjimage</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/args.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/java.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/jli_util.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/parse_manifest.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/splashscreen_stubs.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/wildcard.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnet/DatagramPacket.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnet/Inet4Address.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnet/Inet6Address.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnet/InetAddress.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnet/net_util.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnio/nio_util.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libverify/check_code.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libverify</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libverify/check_format.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libverify</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/Adler32.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/CRC32.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/Deflater.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/Inflater.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zip_util.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/jspawnhelper/jspawnhelper.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/Console_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/FileDescriptor_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/FileInputStream_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/FileOutputStream_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/ProcessEnvironment_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/ProcessHandleImpl_unix.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/ProcessImpl_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/RandomAccessFile_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/TimeZone_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/UnixFileSystem_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/VM_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/canonicalize_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/childproc.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/io_util_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/java_props_md.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libfdlibm</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>ARCH="x86_64"</Elem>
+ <Elem>ARCHPROPNAME="x86_64"</Elem>
+ <Elem>DEBUG</Elem>
+ <Elem>MACOSX</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>THIS_FILE="java_props_md.c"</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_UNLIMITED_SELECT</Elem>
+ <Elem>_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>x86_64</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/jdk_util_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/jni_util_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjimage/osSupport_unix.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjli/java_md_common.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/DefaultProxySelector.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/ExtendedOptionsImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>ARCH="x86_64"</Elem>
+ <Elem>DEBUG</Elem>
+ <Elem>MACOSX</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>THIS_FILE="ExtendedOptionsImpl.c"</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_UNLIMITED_SELECT</Elem>
+ <Elem>_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>x86_64</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/Inet4AddressImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/Inet6AddressImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/InetAddressImplFactory.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/NetworkInterface.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/PlainDatagramSocketImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/PlainSocketImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/ResolverConfigurationImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/SdpSupport.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/SocketImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/SocketInputStream.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/SocketOutputStream.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/net_util_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/portconfig.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/MappedByteBuffer.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/DatagramChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/DatagramDispatcher.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/FileChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/FileDispatcherImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/FileKey.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/IOUtil.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/InheritedChannel.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/NativeThread.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/Net.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/PollArrayWrapper.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/ServerSocketChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/SocketChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/SocketDispatcher.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnio</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libnio/fs</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/fs</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>ARCH="x86_64"</Elem>
+ <Elem>DEBUG</Elem>
+ <Elem>MACOSX</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>THIS_FILE="SocketDispatcher.c"</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_UNLIMITED_SELECT</Elem>
+ <Elem>_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>x86_64</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/UnixAsynchronousServerSocketChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/UnixAsynchronousSocketChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/fs/UnixCopyFile.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/fs</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/fs</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTEvent.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTSurfaceLayers.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AWTSurfaceLayers.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AWTView.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTWindow.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AWTWindow.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/ApplicationDelegate.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ApplicationDelegate.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CClipboard.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CClipboard.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CCursorManager.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CCursorManager.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDataTransferer.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CDataTransferer.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDesktopPeer.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CDesktopPeer.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDragSource.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CDragSource.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDragSourceContextPeer.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CDragSourceContextPeer.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDropTarget.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CDropTarget.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CDropTargetContextPeer.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CDropTargetContextPeer.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CFRetainedResource.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CFRetainedResource.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CFileDialog.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CFileDialog.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CGraphicsConfig.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CGraphicsConfig.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CGraphicsDevice.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CGraphicsDevice.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CGraphicsEnv.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CGraphicsEnv.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CImage.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CImage.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CInputMethod.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CInputMethod.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenu.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CMenu.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuBar.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CMenuBar.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuComponent.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CMenuComponent.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CMenuItem.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CMenuItem.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CPopupMenu.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CPopupMenu.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CPrinterJob.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CPrinterJob.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CRobot.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CRobot.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CRobotKeyCode.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CRobotKeyCode.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CSystemColors.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CSystemColors.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CTextPipe.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CTextPipe.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CTrayIcon.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CTrayIcon.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/CWrapper.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CWrapper.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/DnDUtilities.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DnDUtilities.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/GeomUtilities.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GeomUtilities.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/ImageSurfaceData.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ImageSurfaceData.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/InitIDs.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="InitIDs.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityAction.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="JavaAccessibilityAction.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityUtilities.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="JavaAccessibilityUtilities.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/JavaComponentAccessibility.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="JavaComponentAccessibility.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/JavaTextAccessibility.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="JavaTextAccessibility.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="LWCToolkit.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/OSVersion.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OSVersion.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/PrintModel.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PrintModel.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/PrinterSurfaceData.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PrinterSurfaceData.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/PrinterView.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PrinterView.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/QuartzRenderer.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="QuartzRenderer.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/QuartzSurfaceData.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="QuartzSurfaceData.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt/awt_DrawingSurface.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_DrawingSurface.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/font/AWTFont.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/font/AWTStrike.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AWTStrike.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/font/CCharToGlyphMapper.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CCharToGlyphMapper.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/font/CGGlyphImages.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CGGlyphImages.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/font/CGGlyphOutlines.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CGGlyphOutlines.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/font/CoreTextSupport.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CoreTextSupport.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl/CGLGraphicsConfig.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl/CGLLayer.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CGLLayer.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl/CGLSurfaceData.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CGLSurfaceData.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libjawt/jawt.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libjsound/PLATFORM_API_MacOSX_MidiIn.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libjsound/PLATFORM_API_MacOSX_MidiOut.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PLATFORM_API_MacOSX_MidiOut.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libjsound/PLATFORM_API_MacOSX_MidiUtils.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PLATFORM_API_MacOSX_MidiUtils.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libjsound/PLATFORM_API_MacOSX_PCM.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libjsound/PLATFORM_API_MacOSX_Ports.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="PLATFORM_API_MacOSX_Ports.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libjsound/PLATFORM_API_MacOSX_Utils.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="PLATFORM_API_MacOSX_Utils.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libosx/CFileManager.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libosxapp/AWT_debug.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libosxapp/NSApplicationAWT.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="NSApplicationAWT.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libosxapp/PropertiesUtilities.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PropertiesUtilities.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libosxapp/QueuingApplicationDelegate.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="QueuingApplicationDelegate.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libosxapp/ThreadUtilities.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThreadUtilities.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libosxui/AquaFileView.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libosxui/AquaLookAndFeel.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AquaLookAndFeel.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libosxui/AquaNativeResources.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AquaNativeResources.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libosxui/JRSUIConstantSync.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="JRSUIConstantSync.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libosxui/JRSUIController.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="JRSUIController.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libosxui/JRSUIFocus.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="JRSUIFocus.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libosxui/ScreenMenu.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ScreenMenu.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/macosx/native/libsplashscreen/splashscreen_sys.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/debug/debug_assert.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/debug/debug_mem.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="debug_mem.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/debug/debug_trace.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="debug_trace.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/debug/debug_util.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="debug_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/medialib/mlib_ImageCopy_Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/medialib/mlib_ImageCreate.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageCreate.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/medialib/mlib_sys.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_sys.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/font/AccelGlyphCache.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLBlitLoops.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLBufImgOps.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLBufImgOps.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLContext.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLContext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLFuncs.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLFuncs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLMaskBlit.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLMaskBlit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLMaskFill.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLMaskFill.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLPaints.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLPaints.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLRenderQueue.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLRenderQueue.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLRenderer.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLRenderer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLSurfaceData.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLSurfaceData.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLTextRenderer.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLTextRenderer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLVertexCache.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLVertexCache.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/BufImgSurfaceData.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="BufImgSurfaceData.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/DataBufferNative.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DataBufferNative.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/awt_ImageRep.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_ImageRep.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/awt_parseImage.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_parseImage.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils/img_globals.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/dither.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="dither.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/gif/gifdecoder.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/imageInitIDs.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="imageInitIDs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/medialib/awt_ImagingLib.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/Disposer.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Disposer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/SurfaceData.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SurfaceData.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/Trace.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Trace.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/AlphaMacros.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/AlphaMath.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AlphaMath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Any3Byte.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Any3Byte.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Any4Byte.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Any4Byte.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/AnyByte.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AnyByte.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/AnyInt.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AnyInt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/AnyShort.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AnyShort.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Blit.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Blit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/BlitBg.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="BlitBg.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ByteBinary1Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ByteBinary1Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ByteBinary2Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ByteBinary2Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ByteBinary4Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ByteBinary4Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ByteGray.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ByteGray.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ByteIndexed.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ByteIndexed.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/DrawLine.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawLine.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/DrawParallelogram.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawParallelogram.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/DrawPath.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawPath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/DrawPolygons.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawPolygons.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/DrawRect.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawRect.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FillParallelogram.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FillParallelogram.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FillPath.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FillPath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FillRect.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FillRect.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FillSpans.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FillSpans.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FourByteAbgr.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FourByteAbgr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FourByteAbgrPre.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FourByteAbgrPre.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/GraphicsPrimitiveMgr.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GraphicsPrimitiveMgr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Index12Gray.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Index12Gray.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Index8Gray.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Index8Gray.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntArgb.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntArgb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntArgbBm.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntArgbBm.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntArgbPre.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntArgbPre.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntBgr.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntBgr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntRgb.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntRgb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntRgbx.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntRgbx.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/MapAccelFunc.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MapAccelFunc.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/MaskBlit.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MaskBlit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/MaskFill.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MaskFill.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ProcessPath.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ProcessPath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ScaledBlit.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ScaledBlit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ThreeByteBgr.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThreeByteBgr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/TransformHelper.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="TransformHelper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Ushort4444Argb.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Ushort4444Argb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Ushort555Rgb.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Ushort555Rgb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Ushort555Rgbx.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Ushort555Rgbx.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Ushort565Rgb.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Ushort565Rgb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/UshortGray.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="UshortGray.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/UshortIndexed.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="UshortIndexed.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/pipe/BufferedMaskBlit.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/pipe/BufferedRenderPipe.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="BufferedRenderPipe.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/pipe/Region.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Region.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/pipe/ShapeSpanIterator.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ShapeSpanIterator.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/pipe/SpanClipRenderer.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SpanClipRenderer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/DrawGlyphList.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawGlyphList.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/FontInstanceAdapter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="FontInstanceAdapter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/HBShaper.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="HBShaper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/freetypeScaler.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="freetypeScaler.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-blob.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer-serialize.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-buffer-serialize.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-buffer.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-common.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-common.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-coretext.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-coretext.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-face.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-face.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-fallback-shape.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-fallback-shape.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-font.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-font.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-font.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-font.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-layout.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-map.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-map.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-arabic.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-default.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-default.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-hangul.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-hangul.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-hebrew.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-hebrew.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic-table.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-indic-table.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-indic.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-myanmar.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-myanmar.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-thai.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-thai.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-tibetan.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-tibetan.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use-table.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-use-table.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-use.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-fallback.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-fallback.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-normalize.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-normalize.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-tag.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-tag.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-set.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape-plan.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-shape-plan.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-shape.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shaper.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-shaper.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ucdn.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/ucdn.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-unicode.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-unicode.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-warning.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-warning.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/hb-jdk-font.cc"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-jdk-font.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/AlternateSubstSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/AnchorTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="AnchorTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ArabicLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ArabicLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ArabicShaping.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ArabicShaping.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/CanonData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="CanonData.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/CanonShaping.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="CanonShaping.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ClassDefinitionTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ClassDefinitionTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ContextualGlyphInsertionProc2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ContextualGlyphInsertionProc2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ContextualGlyphSubstProc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ContextualGlyphSubstProc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ContextualGlyphSubstProc2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ContextualGlyphSubstProc2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ContextualSubstSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ContextualSubstSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/CoverageTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="CoverageTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/CursiveAttachmentSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="CursiveAttachmentSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/DeviceTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="DeviceTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ExtensionSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ExtensionSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/Features.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="Features.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GDEFMarkFilter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="GDEFMarkFilter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GXLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="GXLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GXLayoutEngine2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="GXLayoutEngine2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphDefinitionTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphDefinitionTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphIterator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphIterator.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphLookupTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphLookupTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphPositionAdjustments.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphPositionAdjustments.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphPositioningTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphPositioningTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphPosnLookupProc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphPosnLookupProc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphSubstLookupProc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphSubstLookupProc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphSubstitutionTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphSubstitutionTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/HanLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="HanLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/HangulLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="HangulLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/IndicClassTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="IndicClassTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/IndicLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="IndicLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="IndicRearrangementProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="IndicRearrangementProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/IndicReordering.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="IndicReordering.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/KernTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="KernTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/KhmerLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="KhmerLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/KhmerReordering.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="KhmerReordering.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LEFontInstance.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="LEFontInstance.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LEGlyphStorage.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="LEGlyphStorage.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LEInsertionList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="LEInsertionList.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="LayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LigatureSubstProc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="LigatureSubstProc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LigatureSubstProc2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="LigatureSubstProc2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LigatureSubstSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="LigatureSubstSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LookupProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="LookupProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LookupTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="LookupTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/Lookups.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="Lookups.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MPreFixups.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="MPreFixups.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MarkArrays.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="MarkArrays.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MarkToBasePosnSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="MarkToBasePosnSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MarkToLigaturePosnSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="MarkToLigaturePosnSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MarkToMarkPosnSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="MarkToMarkPosnSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MirroredCharData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="MirroredCharData.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MorphTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="MorphTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MorphTables2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="MorphTables2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MultipleSubstSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="MultipleSubstSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/NonContextualGlyphSubstProc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="NonContextualGlyphSubstProc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/NonContextualGlyphSubstProc2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="NonContextualGlyphSubstProc2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/OpenTypeLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="OpenTypeLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/OpenTypeUtilities.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="OpenTypeUtilities.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/PairPositioningSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="PairPositioningSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ScriptAndLanguage.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ScriptAndLanguage.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ScriptAndLanguageTags.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ScriptAndLanguageTags.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SegmentArrayProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="SegmentArrayProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SegmentArrayProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="SegmentArrayProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SegmentSingleProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="SegmentSingleProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SegmentSingleProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="SegmentSingleProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ShapingTypeData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ShapingTypeData.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SimpleArrayProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="SimpleArrayProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SimpleArrayProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="SimpleArrayProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SinglePositioningSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="SinglePositioningSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SingleSubstitutionSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="SingleSubstitutionSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SingleTableProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="SingleTableProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SingleTableProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="SingleTableProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/StateTableProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="StateTableProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/StateTableProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="StateTableProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SubstitutionLookups.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="SubstitutionLookups.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SubtableProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="SubtableProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SubtableProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="SubtableProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SunLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="SunLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ThaiLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ThaiLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ThaiShaping.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ThaiShaping.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ThaiStateTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ThaiStateTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/TibetanLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="TibetanLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/TibetanReordering.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="TibetanReordering.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/TrimmedArrayProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="TrimmedArrayProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/TrimmedArrayProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="TrimmedArrayProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ValueRecords.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ValueRecords.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/scriptMapping.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="scriptMapping.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/sunFont.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="sunFont.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/imageioJPEG.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcapimin.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcapimin.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcapistd.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcapistd.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jccoefct.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jccoefct.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jccolor.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jccolor.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcdctmgr.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcdctmgr.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jchuff.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jchuff.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcinit.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcinit.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcmainct.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcmainct.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcmarker.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcmarker.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcmaster.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcmaster.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcomapi.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcomapi.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcparam.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcparam.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcphuff.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcphuff.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcprepct.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcprepct.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcsample.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcsample.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jctrans.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jctrans.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdapimin.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdapimin.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdapistd.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdapistd.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdcoefct.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdcoefct.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdcolor.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdcolor.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jddctmgr.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jddctmgr.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdhuff.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdhuff.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdinput.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdinput.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdmainct.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdmainct.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdmarker.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdmarker.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdmaster.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdmaster.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdmerge.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdmerge.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdphuff.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdphuff.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdpostct.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdpostct.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdsample.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdsample.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdtrans.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdtrans.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jerror.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jerror.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jfdctflt.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jfdctflt.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jfdctfst.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jfdctfst.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jfdctint.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jfdctint.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jidctflt.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jidctflt.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jidctfst.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jidctfst.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jidctint.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jidctint.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jidctred.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jidctred.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jmemmgr.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jmemmgr.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jmemnobs.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jmemnobs.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jpegdecoder.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="jpegdecoder.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jquant1.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jquant1.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jquant2.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jquant2.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jutils.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jutils.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/DirectAudioDevice.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/DirectAudioDeviceProvider.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DirectAudioDeviceProvider.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/MidiInDevice.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MidiInDevice.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/MidiInDeviceProvider.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MidiInDeviceProvider.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/MidiOutDevice.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MidiOutDevice.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/MidiOutDeviceProvider.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MidiOutDeviceProvider.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/Platform.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Platform.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/PlatformMidi.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PlatformMidi.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/PortMixer.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PortMixer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/PortMixerProvider.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PortMixerProvider.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/Utilities.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Utilities.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/LCMS.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmscam02.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmscam02.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmscgats.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmscgats.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmscnvrt.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmscnvrt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmserr.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmserr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsgamma.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsgamma.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsgmt.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsgmt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmshalf.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmshalf.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsintrp.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsintrp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsio0.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsio0.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsio1.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsio1.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmslut.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmslut.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsmd5.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsmd5.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsmtrx.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsmtrx.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsnamed.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsnamed.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsopt.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsopt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmspack.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmspack.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmspcs.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmspcs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsplugin.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsplugin.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsps2.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsps2.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmssamp.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmssamp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmssm.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmssm.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmstypes.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmstypes.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsvirt.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsvirt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmswtpnt.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmswtpnt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsxform.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsxform.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffineEdge.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffineEdge.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BC_D64.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BC_D64.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BC_F32.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BC_F32.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BC_S32.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BC_S32.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BL_D64.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BL_D64.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BL_F32.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BL_F32.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BL_S32.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BL_S32.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_NN.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_NN.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_NN_Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_NN_Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageClipping.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageClipping.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageColorTrue2Index.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageColorTrue2Index.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv2x2_f.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv2x2_f.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvClearEdge_Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvClearEdge_Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvClearEdge_Fp.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvClearEdge_Fp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvCopyEdge_Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvCopyEdge_Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvKernelConvert.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvKernelConvert.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvMxN.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvMxN.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvMxN_Fp.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvMxN_Fp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvMxN_ext.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvMxN_ext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_16ext.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_16ext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_16nw.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_16nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_32nw.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_32nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_8ext.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_8ext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_8nw.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_8nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_D64nw.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_D64nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_F32nw.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_F32nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_u16ext.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_u16ext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_u16nw.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_u16nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageDivTables.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageDivTables.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageFilters.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageFilters.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageLookUp_64.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageLookUp_64.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageLookUp_Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageLookUp_Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageScanPoly.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageScanPoly.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageUtils.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageUtils.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffineIndex_BC.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffineIndex_BC.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffineIndex_BL.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffineIndex_BL.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BC.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BC.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BC_S16.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BC_S16.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BC_U16.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BC_U16.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BL.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BL.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BL_S16.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BL_S16.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BL_U16.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BL_U16.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_NN.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_NN.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConvClearEdge.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageConvClearEdge.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConvCopyEdge.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageConvCopyEdge.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConvVersion.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageConvVersion.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConv_f.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageConv_f.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageCopy.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageCopy.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageLookUp.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageLookUp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageLookUp_f.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageLookUp_f.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageThresh1_U8.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageThresh1_U8.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/giflib/dgif_lib.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/giflib/gif_err.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="gif_err.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/giflib/gifalloc.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="gifalloc.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/java_awt_SplashScreen.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="java_awt_SplashScreen.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/png.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngerror.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngerror.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngget.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngget.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngmem.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngmem.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngpread.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngpread.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngread.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngread.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngrio.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngrio.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngrtran.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngrtran.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngrutil.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngrutil.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngset.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngset.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngtrans.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngtrans.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngwio.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngwio.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngwrite.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngwrite.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngwtran.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngwtran.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngwutil.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngwutil.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_gfx_impl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_gfx_impl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_gif.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_gif.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_impl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_impl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_jpeg.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_jpeg.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_png.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_png.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/awt/CUPSfuncs.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="CUPSfuncs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/awt/systemscale/systemScale.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt/awt/awt_LoadLibrary.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt/awt/awt_Mlib.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_Mlib.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/EncodingSupport.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/InstrumentationImplNativeMethods.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/InvocationAdapter.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/JPLISAgent.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/JPLISAssert.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/JarFacade.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/JavaExceptions.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/PathCharsValidator.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/Reentrancy.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/Utilities.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/unix/native/libinstrument/EncodingSupport_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/unix/native/libinstrument/FileSystemSupport_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/ClassLoadingImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/GarbageCollectorImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/HotspotThread.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/MemoryImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/MemoryManagerImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/MemoryPoolImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/ThreadImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/VMManagementImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/management.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/unix/native/libmanagement/FileSystemImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.prefs/macosx/native/libprefs/MacOSXPreferencesFile.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.rmi/share/native/librmi/GC.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.security.jgss/macosx/native/libosxkrb5/SCDynamicStoreConfig.m"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../build/support/headers/java.security.jgss</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.security.jgss/macosx/native/libosxkrb5/nativeccache.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ <incDir>
+ <pElem>/System/Library/Frameworks/Kerberos.framework/Headers</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.security.jgss/share/native/libj2gss/GSSLibStub.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.security.jgss/share/native/libj2gss/NativeUtil.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.security.jgss/unix/native/libj2gss/NativeFunc.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.smartcardio/share/native/libj2pcsc/pcsc.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.attach/macosx/native/libattach/VirtualMachineImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/ECC_JNI.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec2_163.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec2_193.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec2_233.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec2_aff.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec2_mont.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec_naf.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecdecode.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecl.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_curve.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_gf.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_mult.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_192.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_224.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_256.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_384.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_521.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_aff.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_jac.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_jm.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_mont.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/mp_gf2m.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/mpi.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/mplogic.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/mpmontg.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/oid.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/secitem.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/j2secmod.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_crypt.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_digest.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_dual.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_dual.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_general.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_keymgmt.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_mutex.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_objmgmt.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_sessmgmt.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_sign.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/unix/native/libj2pkcs11/j2secmod_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/unix/native/libj2pkcs11/p11_md.c"
+ ex="false"
+ tool="0"
+ flavor2="3">
+ <cTool flags="5">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libdt_socket/socketTransport.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ArrayReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ArrayTypeImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ArrayTypeImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ClassLoaderReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ClassLoaderReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ClassObjectReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ClassObjectReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ClassTypeImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ClassTypeImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/EventRequestImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="EventRequestImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/FieldImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FieldImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/FrameID.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FrameID.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/InterfaceTypeImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="InterfaceTypeImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/MethodImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MethodImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ModuleReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ModuleReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ObjectReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ObjectReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ReferenceTypeImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ReferenceTypeImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/SDE.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SDE.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/StackFrameImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="StackFrameImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/StringReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="StringReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ThreadGroupReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThreadGroupReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ThreadReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThreadReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/VirtualMachineImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="VirtualMachineImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/bag.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="bag.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/classTrack.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="classTrack.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/commonRef.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="commonRef.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/debugDispatch.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="debugDispatch.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/debugInit.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="debugInit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/debugLoop.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="debugLoop.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/error_messages.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="error_messages.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/eventFilter.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="eventFilter.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/eventHandler.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="eventHandler.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/eventHelper.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="eventHelper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/inStream.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="inStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/invoker.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="invoker.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/log_messages.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="log_messages.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/outStream.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="outStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/standardHandlers.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="standardHandlers.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/stepControl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="stepControl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/stream.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="stream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/threadControl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="threadControl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/transport.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="transport.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/utf_util.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="utf_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/util.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/unix/native/libdt_socket/socket_md.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/unix/native/libjdwp/linker_md.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="linker_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/macosx/native/libmanagement_ext/UnixOperatingSystem.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/DiagnosticCommandImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/Flag.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Flag.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/GarbageCollectorExtImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GarbageCollectorExtImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/GcInfoBuilder.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GcInfoBuilder.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/HotSpotDiagnostic.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="HotSpotDiagnostic.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/management_ext.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="management_ext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/unix/native/libmanagement_ext/OperatingSystemImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/bands.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/bytes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="bytes.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/coding.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="coding.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/unpack.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="unpack.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/utils.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="utils.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/zip.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="zip.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/libunpack/jni.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/unpack200/main.cpp"
+ ex="false"
+ tool="1"
+ flavor2="4">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.security.auth/unix/native/libjaas/Unix.c"
+ ex="false"
+ tool="0"
+ flavor2="2">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <folder path="0/build">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/makefiles</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_gcc</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_bsd_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_bsd_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_bsd</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_C_SOURCE</Elem>
+ <Elem>_GNU_SOURCE</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ <Elem>_XOPEN_SOURCE</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/build/hotspot">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/build/hotspot/variant-server/gensrc/jvmtifiles">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="bytecodeInterpreterWithChecks.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ </incDir>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot">
+ <cTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/posix/launcher</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/tools/launcher</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/bsd_amd64_compiler2/product</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/bsd_amd64_compiler2/generated</pElem>
+ </incDir>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>THIS_FILE="abstractInterpreter_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/cpu">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/makefiles</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_gcc</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_bsd_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_bsd_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_bsd</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_C_SOURCE</Elem>
+ <Elem>_GNU_SOURCE</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ <Elem>_XOPEN_SOURCE</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/jdk.hotspot.agent">
+ <cTool>
+ <incDir>
+ <pElem>../../hotspot/src/jdk.hotspot.agent/share/native/libsaproc</pElem>
+ <pElem>../../hotspot/src/jdk.hotspot.agent/macosx/native/libsaproc</pElem>
+ <pElem>../../build/support/headers/jdk.hotspot.agent</pElem>
+ <pElem>../../hotspot/src/os/macosx</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>ARCH="x86_64"</Elem>
+ <Elem>DEBUG</Elem>
+ <Elem>MACOSX</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_UNLIMITED_SELECT</Elem>
+ <Elem>_GNU_SOURCE</Elem>
+ <Elem>_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>amd64</Elem>
+ <Elem>x86_64</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/hotspot/src/jdk.hotspot.agent/share">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="sadis.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/hotspot/src/os">
+ <cTool>
+ <incDir>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="jsig.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/makefiles</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_gcc</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_bsd_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_bsd_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_bsd</Elem>
+ <Elem>THIS_FILE="attachListener_bsd.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_C_SOURCE</Elem>
+ <Elem>_GNU_SOURCE</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ <Elem>_XOPEN_SOURCE</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/os/bsd">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ </incDir>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/os/linux">
+ <cTool>
+ <incDir>
+ <pElem>../../build/linux-x86_64-normal-server-release/hotspot/linux_amd64_compiler2/product</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>_REENTRANT</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
+ <Elem>LINUX</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_linux_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_linux_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_linux</Elem>
+ <Elem>_REENTRANT</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/os/posix">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="os_posix.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/os_cpu">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_gcc</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_bsd_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_bsd_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_bsd</Elem>
+ <Elem>THIS_FILE="assembler_bsd_x86.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_C_SOURCE</Elem>
+ <Elem>_GNU_SOURCE</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ <Elem>_XOPEN_SOURCE</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/os_cpu/linux_x86">
+ <ccTool>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
+ <Elem>LINUX</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_linux_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_linux_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_linux</Elem>
+ <Elem>_REENTRANT</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="adlparse.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/adlc">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/makefiles</pElem>
+ </incDir>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/gc">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/makefiles</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_gcc</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_bsd_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_bsd_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_bsd</Elem>
+ <Elem>THIS_FILE="adaptiveFreeList.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_C_SOURCE</Elem>
+ <Elem>_GNU_SOURCE</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ <Elem>_XOPEN_SOURCE</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/prims/wbtestmethods">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/prims/wbtestmethods</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm/runtime</pElem>
+ <pElem>../../hotspot/src/share/vm/oops</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/parallel</pElem>
+ <pElem>../../hotspot/src/share/vm/gc/shared</pElem>
+ <pElem>../../hotspot/src/share/vm/classfile</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/tracefiles</pElem>
+ <pElem>../../hotspot/src/os/bsd/vm</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc/jvmtifiles</pElem>
+ <pElem>../../hotspot/src/share/vm/code</pElem>
+ <pElem>../../hotspot/src/share/vm/asm</pElem>
+ <pElem>../../hotspot/src/share/vm/interpreter</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/bsd_x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/services</pElem>
+ <pElem>../../build/macosx-x86_64-normal-server-release/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/trace">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/memory</pElem>
+ <pElem>../../hotspot/src/share/vm/logging</pElem>
+ <pElem>../../hotspot/src/share/vm/utilities</pElem>
+ <pElem>../../hotspot/src/share/vm/trace</pElem>
+ <pElem>/usr/include/c++/4.2.1</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk">
+ <cTool>
+ <preprocessorList>
+ <Elem>ARCH="x86_64"</Elem>
+ <Elem>MACOSX</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>THIS_FILE="agent_util.c"</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_UNLIMITED_SELECT</Elem>
+ <Elem>_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>x86_64</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <preprocessorList>
+ <Elem>ARCH="x86_64"</Elem>
+ <Elem>MACOSX</Elem>
+ <Elem>MAC_OS_X_VERSION_MAX_ALLOWED=1070</Elem>
+ <Elem>THIS_FILE="Agent.cpp"</Elem>
+ <Elem>_ALLBSD_SOURCE</Elem>
+ <Elem>_DARWIN_UNLIMITED_SELECT</Elem>
+ <Elem>_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>x86_64</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/make/src/native/genconstants/ch">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/make/src/native/genconstants/ch</pElem>
+ <pElem>../../jdk/make/gensrc</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/make/src/native/genconstants/fs">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/make/src/native/genconstants/fs</pElem>
+ <pElem>../../jdk/make/gensrc</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="HostLocaleProviderAdapter_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjimage</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="NativeImageBuffer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/macosx">
+ <cTool>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/macosx/native/libjli">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/macosx/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>LIBARCHNAME="x86_64"</Elem>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>THIS_FILE="java_md_macosx.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/macosx/native/libnet">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/macosx/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/macosx/native/libnio">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="KQueue.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/macosx/native/libnio/fs">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/macosx/native/libnio/fs</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/macosx/native/libosxsecurity">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/macosx/native/libosxsecurity</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="KeystoreImpl.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="main.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/launcher">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/launcher</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjli</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>ENABLE_ARG_FILES</Elem>
+ <Elem>EXPAND_CLASSPATH_WILDCARDS</Elem>
+ <Elem>JAVA_ARGS={ "-J-ms8m", "-m", "jdk.jlink/jdk.tools.jlink.internal.Main", }</Elem>
+ <Elem>LAUNCHER_NAME="openjdk"</Elem>
+ <Elem>NEVER_ACT_AS_SERVER_CLASS_MACHINE</Elem>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>PROGNAME="jlink"</Elem>
+ <Elem>VERSION_BUILD=0</Elem>
+ <Elem>VERSION_MAJOR=9</Elem>
+ <Elem>VERSION_MINOR=0</Elem>
+ <Elem>VERSION_NUMBER="9"</Elem>
+ <Elem>VERSION_OPT="2016-06-20-162150.devtester.jdktrunk"</Elem>
+ <Elem>VERSION_PATCH=0</Elem>
+ <Elem>VERSION_PRE="internal"</Elem>
+ <Elem>VERSION_SECURITY=0</Elem>
+ <Elem>VERSION_SHORT="9-internal"</Elem>
+ <Elem>VERSION_SPECIFICATION="9"</Elem>
+ <Elem>VERSION_STRING="9-internal+0-2016-06-20-162150.devtester.jdktrunk"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libfdlibm">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libfdlibm</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libnio">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libnio</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libzip">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libzip</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="jspawnhelper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/unix/native/libjimage</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="osSupport_unix.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix/native/jspawnhelper">
+ <cTool>
+ <incDir>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix/native/libjli">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/unix/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop">
+ <cTool>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="AWTEvent.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="PLATFORM_API_MacOSX_PCM.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/macosx">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ </incDir>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>EXTRA_SOUND_JNI_LIBS=""</Elem>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_IN=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_OUT=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ <Elem>X_PLATFORM=X_MACOSX</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/macosx/native/libawt_lwawt">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/macosx/native/libawt_lwawt/font">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="AWTFont.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/macosx/native/libawt_lwawt/java2d">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="CGLGraphicsConfig.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/macosx/native/libjawt">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="jawt.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/macosx/native/libjsound">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>EXTRA_SOUND_JNI_LIBS=""</Elem>
+ <Elem>THIS_FILE="PLATFORM_API_MacOSX_MidiIn.c"</Elem>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_IN=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_OUT=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ <Elem>X_PLATFORM=X_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/macosx/native/libosx">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosx</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="CFileManager.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/macosx/native/libosxapp">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="AWT_debug.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/macosx/native/libosxui">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxui</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="AquaFileView.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/macosx/native/libsplashscreen">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="splashscreen_sys.m"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="debug_assert.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/layout</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>/opt/local/include/freetype2</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>GETPAGESIZE</Elem>
+ <Elem>HAVE_CORETEXT</Elem>
+ <Elem>HAVE_FALLBACK</Elem>
+ <Elem>HAVE_INTEL_ATOMIC_PRIMITIVES</Elem>
+ <Elem>HAVE_MPROTECT</Elem>
+ <Elem>HAVE_OT</Elem>
+ <Elem>HAVE_PTHREAD</Elem>
+ <Elem>HAVE_SYSCONF</Elem>
+ <Elem>HAVE_SYS_MMAN_H</Elem>
+ <Elem>HAVE_UCDN</Elem>
+ <Elem>HAVE_UNISTD_H</Elem>
+ <Elem>HEADLESS</Elem>
+ <Elem>LE_STANDALONE</Elem>
+ <Elem>THIS_FILE="hb-blob.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common/awt">
+ <cTool>
+ <preprocessorList>
+ <Elem>MLIB_NO_LIBSUNMATH</Elem>
+ <Elem>__MEDIALIB_OLD_NAMES</Elem>
+ <Elem>__USE_J2D_NAMES</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common/awt/debug">
+ <cTool>
+ <incDir>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common/awt/medialib">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libmlib_image</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>MLIB_OS64BIT</Elem>
+ <Elem>THIS_FILE="mlib_ImageCopy_Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common/font">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="AccelGlyphCache.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common/java2d">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libawt_lwawt/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLBlitLoops.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libawt">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>MLIB_NO_LIBSUNMATH</Elem>
+ <Elem>THIS_FILE="img_globals.c"</Elem>
+ <Elem>__MEDIALIB_OLD_NAMES</Elem>
+ <Elem>__USE_J2D_NAMES</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libawt/awt/image/gif">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="gifdecoder.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libawt/awt/medialib">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_ImagingLib.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libawt/java2d">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="AlphaMacros.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libawt/java2d/pipe">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="BufferedMaskBlit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libfontmanager">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/layout</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>/opt/local/include/freetype2</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>GETPAGESIZE</Elem>
+ <Elem>HAVE_CORETEXT</Elem>
+ <Elem>HAVE_FALLBACK</Elem>
+ <Elem>HAVE_INTEL_ATOMIC_PRIMITIVES</Elem>
+ <Elem>HAVE_MPROTECT</Elem>
+ <Elem>HAVE_OT</Elem>
+ <Elem>HAVE_PTHREAD</Elem>
+ <Elem>HAVE_SYSCONF</Elem>
+ <Elem>HAVE_SYS_MMAN_H</Elem>
+ <Elem>HAVE_UCDN</Elem>
+ <Elem>HAVE_UNISTD_H</Elem>
+ <Elem>HEADLESS</Elem>
+ <Elem>LE_STANDALONE</Elem>
+ <Elem>THIS_FILE="ucdn.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libfontmanager/layout">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="AlternateSubstSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libjavajpeg">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="imageioJPEG.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libjsound">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>EXTRA_SOUND_JNI_LIBS=""</Elem>
+ <Elem>THIS_FILE="DirectAudioDevice.c"</Elem>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_IN=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_OUT=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ <Elem>X_PLATFORM=X_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/liblcms">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/liblcms</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CMS_DONT_USE_FAST_FLOOR</Elem>
+ <Elem>THIS_FILE="LCMS.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libmlib_image">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libmlib_image</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>MLIB_NO_LIBSUNMATH</Elem>
+ <Elem>MLIB_OS64BIT</Elem>
+ <Elem>THIS_FILE="mlib_ImageAffine.c"</Elem>
+ <Elem>__MEDIALIB_OLD_NAMES</Elem>
+ <Elem>__USE_J2D_NAMES</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libsplashscreen">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/macosx/native/libosxapp</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="dgif_lib.c"</Elem>
+ <Elem>WITH_MACOSX</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libsplashscreen/libpng">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="png.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="systemScale.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/common/awt/systemscale">
+ <cTool>
+ <incDir>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>MLIB_NO_LIBSUNMATH</Elem>
+ <Elem>__MEDIALIB_OLD_NAMES</Elem>
+ <Elem>__USE_J2D_NAMES</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libawt">
+ <cTool>
+ <incDir>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>MLIB_NO_LIBSUNMATH</Elem>
+ <Elem>THIS_FILE="awt_LoadLibrary.c"</Elem>
+ <Elem>__MEDIALIB_OLD_NAMES</Elem>
+ <Elem>__USE_J2D_NAMES</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.instrument">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.instrument/share/native/libinstrument</pElem>
+ <pElem>../../jdk/src/java.instrument/unix/native/libinstrument</pElem>
+ <pElem>../../build/support/headers/java.instrument</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>JPLIS_LOGGING</Elem>
+ <Elem>THIS_FILE="EncodingSupport.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.instrument/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="EncodingSupport_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.management">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.management/share/native/include</pElem>
+ <pElem>../../jdk/src/java.management/share/native/libmanagement</pElem>
+ <pElem>../../jdk/src/java.management/unix/native/libmanagement</pElem>
+ <pElem>../../build/support/headers/java.management</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="ClassLoadingImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.management/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="FileSystemImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.prefs">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.prefs/macosx/native/libprefs</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="MacOSXPreferencesFile.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.rmi">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.rmi/share/native/librmi</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="GC.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.security.jgss">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="SCDynamicStoreConfig.m"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.security.jgss/macosx">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.security.jgss/macosx/native/libosxkrb5</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.security.jgss/share">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.security.jgss/share/native/libj2gss</pElem>
+ <pElem>../../jdk/src/java.security.jgss/unix/native/libj2gss</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="GSSLibStub.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.security.jgss/unix">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.security.jgss/share/native/libj2gss</pElem>
+ <pElem>../../jdk/src/java.security.jgss/unix/native/libj2gss</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="NativeFunc.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.smartcardio">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.smartcardio/share/native/libj2pcsc</pElem>
+ <pElem>../../jdk/src/java.smartcardio/unix/native/libj2pcsc</pElem>
+ <pElem>../../jdk/src/java.smartcardio/unix/native/libj2pcsc/MUSCLE</pElem>
+ <pElem>../../build/support/headers/java.smartcardio</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="pcsc.c"</Elem>
+ <Elem>__sun_jdk</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.smartcardio/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="pcsc_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.attach">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.attach/macosx/native/libattach</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="VirtualMachineImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.crypto.ec">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>MP_API_COMPATIBLE</Elem>
+ <Elem>NSS_ECC_MORE_THAN_SUITE_B</Elem>
+ <Elem>THIS_FILE="ec.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/jdk.crypto.ec/share/native/libsunec</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="ECC_JNI.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.crypto.cryptoki">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11</pElem>
+ <pElem>../../jdk/src/jdk.crypto.cryptoki/unix/native/libj2pkcs11</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../build/support/headers/jdk.crypto.cryptoki</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="j2secmod.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.crypto.cryptoki/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="j2secmod_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="socketTransport.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent/share/native/libdt_socket">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libdt_socket</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/unix/native/libdt_socket</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/export</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>USE_MMAP</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent/share/native/libjdwp">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/export</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/include</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/unix/native/libjdwp</pElem>
+ <pElem>../../build/support/headers/jdk.jdwp.agent</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>JDWP_LOGGING</Elem>
+ <Elem>THIS_FILE="ArrayReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="socket_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent/unix/native/libdt_socket">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libdt_socket</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/unix/native/libdt_socket</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/export</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>USE_MMAP</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent/unix/native/libjdwp">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/export</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/include</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/unix/native/libjdwp</pElem>
+ <pElem>../../build/support/headers/jdk.jdwp.agent</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>JDWP_LOGGING</Elem>
+ <Elem>THIS_FILE="exec_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.management">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.management/share/native/include</pElem>
+ <pElem>../../jdk/src/jdk.management/share/native/libmanagement_ext</pElem>
+ <pElem>../../jdk/src/jdk.management/unix/native/libmanagement_ext</pElem>
+ <pElem>../../jdk/src/jdk.management/macosx/native/libmanagement_ext</pElem>
+ <pElem>../../build/support/headers/jdk.management</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="UnixOperatingSystem.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.management/share">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="DiagnosticCommandImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.management/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="OperatingSystemImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.pack">
+ <ccTool>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>FULL</Elem>
+ <Elem>THIS_FILE="bands.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.pack/share/native/common-unpack">
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/jdk.pack/share/native/common-unpack</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>NO_ZLIB</Elem>
+ <Elem>UNPACK_JNI</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.pack/share/native/libunpack">
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/jdk.pack/share/native/common-unpack</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>NO_ZLIB</Elem>
+ <Elem>THIS_FILE="jni.cpp"</Elem>
+ <Elem>UNPACK_JNI</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.pack/share/native/unpack200">
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.pack/share/native/common-unpack</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>SYSTEM_ZLIB</Elem>
+ <Elem>THIS_FILE="main.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.security.auth">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/macosx/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/jdk.security.auth</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="Unix.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ </conf>
+ <conf name="Linux_64" type="0">
+ <toolsSet>
+ <compilerSet>default</compilerSet>
+ <dependencyChecking>false</dependencyChecking>
+ <rebuildPropChanged>false</rebuildPropChanged>
+ </toolsSet>
+ <flagsDictionary>
+ <element flagsID="0"
+ commonFlags="-fPIC -fno-rtti -fno-exceptions -m64 -fstack-protector-all"/>
+ <element flagsID="1" commonFlags="-fno-rtti -fno-exceptions"/>
+ <element flagsID="2" commonFlags="-fstack-protector-all -fPIC"/>
+ <element flagsID="3" commonFlags="-g"/>
+ <element flagsID="4" commonFlags="-g -fstack-protector-all -fPIC -g"/>
+ <element flagsID="5" commonFlags="-g -fstack-protector-all -fPIC -g -g"/>
+ <element flagsID="6"
+ commonFlags="-g -fstack-protector-all -g -fstack-protector-all -fPIC -g"/>
+ <element flagsID="7" commonFlags="-g -m64 -fPIC"/>
+ <element flagsID="8" commonFlags="-m64"/>
+ </flagsDictionary>
+ <codeAssistance>
+ <transientMacros>
+ <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
+ </transientMacros>
+ </codeAssistance>
+ <makefileType>
+ <makeTool>
+ <buildCommandWorkingDir>../..</buildCommandWorkingDir>
+ <buildCommand>${MAKE} -f Makefile images</buildCommand>
+ <cleanCommand>${MAKE} -f Makefile clean</cleanCommand>
+ <executablePath></executablePath>
+ <ccTool>
+ <preprocessorList>
+ <Elem>LINUX</Elem>
+ <Elem>_GNU_SOURCE</Elem>
+ <Elem>_REENTRANT</Elem>
+ </preprocessorList>
+ </ccTool>
+ </makeTool>
+ <preBuild>
+ <preBuildCommandWorkingDir>../..</preBuildCommandWorkingDir>
+ <preBuildCommand>sh ../configure --with-debug-level=slowdebug --disable-zip-debug-info</preBuildCommand>
+ </preBuild>
+ </makefileType>
+ <item path="../../build/hotspot/linux_amd64_compiler2/generated/adfiles/ad_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/linux_amd64_compiler2/generated/adfiles/ad_x86_64_clone.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/linux_amd64_compiler2/generated/adfiles/ad_x86_64_expand.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/linux_amd64_compiler2/generated/adfiles/ad_x86_64_format.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/linux_amd64_compiler2/generated/adfiles/ad_x86_64_gen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/linux_amd64_compiler2/generated/adfiles/ad_x86_64_misc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/linux_amd64_compiler2/generated/adfiles/ad_x86_64_peephole.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/linux_amd64_compiler2/generated/adfiles/ad_x86_64_pipeline.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/linux_amd64_compiler2/generated/adfiles/dfa_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/linux_amd64_compiler2/generated/jvmtifiles/bytecodeInterpreterWithChecks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/linux_amd64_compiler2/generated/jvmtifiles/jvmtiEnter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/linux_amd64_compiler2/generated/jvmtifiles/jvmtiEnterTrace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../build/support/gensrc/java.desktop/_x11wrappers/sizer.64.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="8">
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/abstractInterpreter_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/assembler_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_CodeStubs_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_FpuStackSim_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_FrameMap_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_LinearScan_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c2_init_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/compiledIC_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/debug_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/depChecker_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/frame_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/icBuffer_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/icache_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/interp_masm_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/interpreterRT_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/jniFastGetField_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/jvmciCodeInstaller_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_libm_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/metaspaceShared_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/methodHandles_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/nativeInst_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/registerMap_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/register_definitions_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/register_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/relocInfo_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/runtime_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/sharedRuntime_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/stubRoutines_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/stubRoutines_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/templateTable_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/vm_version_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/vmreg_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/vtableStubs_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/jdk.hotspot.agent/linux/native/libsaproc/LinuxDebuggerLocal.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/jdk.hotspot.agent/linux/native/libsaproc/libproc_impl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="libproc_impl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/jdk.hotspot.agent/linux/native/libsaproc/ps_core.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ps_core.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/jdk.hotspot.agent/linux/native/libsaproc/ps_proc.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ps_proc.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/jdk.hotspot.agent/linux/native/libsaproc/salibelf.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="salibelf.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/jdk.hotspot.agent/linux/native/libsaproc/symtab.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="symtab.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/jdk.hotspot.agent/share/native/libsaproc/sadis.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/os/linux/vm/attachListener_linux.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/linux/vm/decoder_linux.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/linux/vm/jsig.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="7">
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/os/linux/vm/jvm_linux.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/linux/vm/mutex_linux.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/linux/vm/osThread_linux.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/linux/vm/os_linux.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/linux/vm/perfMemory_linux.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/linux/vm/stubRoutines_linux.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/linux/vm/threadCritical_linux.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/posix/vm/os_posix.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/posix/vm/threadLocalStorage_posix.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/posix/vm/vmError_posix.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os_cpu/linux_x86/vm/assembler_linux_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os_cpu/linux_x86/vm/thread_linux_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os_cpu/linux_x86/vm/vm_version_linux_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/adlparse.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="1">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/archDesc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="1">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/arena.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="1">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/dfa.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="1">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/dict2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="1">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/filebuff.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="1">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/forms.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="1">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/formsopt.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="1">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/formssel.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="1">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/main.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="1">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/output_c.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="1">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/output_h.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="1">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/asm/assembler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/asm/codeBuffer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/asm/register.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_CFGPrinter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Canonicalizer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Compilation.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Compiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Defs.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_FrameMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_GraphBuilder.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_IR.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Instruction.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_InstructionPrinter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_LIR.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_LIRAssembler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_LIRGenerator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_LinearScan.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Optimizer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_RangeCheckElimination.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Runtime1.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_ValueMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_ValueSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_ValueStack.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_ValueType.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_globals.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciArrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciBaseObject.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciCallSite.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciConstant.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciConstantPoolCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciEnv.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciExceptionHandler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciField.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciFlags.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciInstance.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciInstanceKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMemberName.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMetadata.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMethod.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMethodBlocks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMethodData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMethodHandle.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciNullObject.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciObjArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciObjArrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciObject.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciObjectFactory.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciReplay.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciSignature.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciStreams.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciSymbol.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciType.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciTypeArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciTypeArrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciTypeFlow.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciUtilities.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/altHashing.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/bytecodeAssembler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classFileError.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classFileParser.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classFileStream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classListParser.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classLoader.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classLoaderData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classLoaderExt.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classLoaderStats.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/compactHashtable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/defaultMethods.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/dictionary.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/javaAssertions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/javaClasses.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/klassFactory.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/loaderConstraints.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/metadataOnStackMark.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/placeholders.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/resolutionErrors.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/sharedPathsMiscInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/stackMapFrame.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/stackMapTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/stringTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/symbolTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/systemDictionary.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/verificationType.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/verifier.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/vmSymbols.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/codeBlob.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/codeCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/compiledIC.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/compressedStream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/debugInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/debugInfoRec.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/dependencies.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/dependencyContext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/exceptionHandlerTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/icBuffer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/location.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/nmethod.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/oopRecorder.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/pcDesc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/relocInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/scopeDesc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/stubs.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/vmreg.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/vtableStubs.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/abstractCompiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/compileBroker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/compileLog.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/compileTask.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/compilerDirectives.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/compilerOracle.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/directivesParser.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/disassembler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/methodLiveness.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/methodMatcher.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/oopMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/adaptiveFreeList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/allocationStats.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/cmsCollectorPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/cmsLockVerifier.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/cmsOopClosures.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/compactibleFreeListSpace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/concurrentMarkSweepGeneration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/concurrentMarkSweepThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/freeChunk.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/gSpaceCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/parCardTableModRefBS.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/parNewGeneration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/parOopClosures.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/promotionInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/vmCMSOperations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/yieldingWorkgroup.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/bufferingOopClosure.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/collectionSetChooser.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/concurrentG1Refine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/concurrentG1RefineThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/concurrentMarkThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/dirtyCardQueue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1AllocRegion.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1Allocator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1Allocator_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1BiasedArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1BlockOffsetTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CardCounts.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CodeBlobClosure.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CodeCacheRemSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CollectedHeap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CollectedHeap_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CollectorPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1ConcurrentMark.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1EvacFailure.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1EvacStats.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1FromCardCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1GCPhaseTimes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1HeapTransition.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1HeapVerifier.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1HotCardCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1IHOPControl.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1MMUTracker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1MarkSweep.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1MarkSweep_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1MonitoringSupport.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1OopClosures.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1PageBasedVirtualSpace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1ParScanThreadState.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1ParScanThreadState_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1Predictions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RegionToSpaceMapper.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RemSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RemSetSummary.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RootClosures.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RootClosures_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RootProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1SATBCardTableModRefBS.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1StringDedup.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1StringDedupQueue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1StringDedupStat.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1StringDedupTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1StringDedupThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1YoungRemSetSamplingThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1_globals.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/hSpaceCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegion.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegionManager.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegionRemSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegionSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegionTracer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegionType.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/ptrQueue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/satbMarkQueue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/sparsePRT.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/survRateGroup.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/suspendibleThreadSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/vm_operations_g1.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/workerDataArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/youngList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/adjoiningGenerations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/adjoiningVirtualSpaces.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/asPSOldGen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/asPSYoungGen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/cardTableExtension.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/gcAdaptivePolicyCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/gcTaskManager.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/gcTaskThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/generationSizer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/immutableSpace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/mutableNUMASpace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/mutableSpace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/objectStartArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/parMarkBitMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/parallelScavengeHeap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/pcTasks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psAdaptiveSizePolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psCompactionManager.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psGCAdaptivePolicyCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psGenerationCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psMarkSweep.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psMarkSweepDecorator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psOldGen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psParallelCompact.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psPromotionLAB.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psPromotionManager.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psScavenge.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psTasks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psVirtualspace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psYoungGen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/spaceCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/vmPSOperations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/serial/cSpaceCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/serial/defNewGeneration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/serial/genMarkSweep.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/serial/markSweep.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/serial/tenuredGeneration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/adaptiveSizePolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/ageTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/ageTableTracer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/allocTracer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/barrierSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/blockOffsetTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/cardGeneration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/cardTableModRefBS.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/cardTableModRefBSForCTRS.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/cardTableRS.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/collectedHeap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/collectorCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/collectorPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/concurrentGCThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcCause.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcId.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcLocker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcPolicyCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcStats.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcTimer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcTrace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcTraceSend.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcTraceTime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcUtil.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/genCollectedHeap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/genOopClosures.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/generation.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/generationCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/generationSpec.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/memset_with_concurrent_readers.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/objectCountEventSender.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/plab.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/referencePolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/referenceProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/space.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/spaceDecorator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/strongRootsScope.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/taskqueue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/threadLocalAllocBuffer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/vmGCOperations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/workgroup.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/abstractInterpreter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecodeHistogram.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecodeStream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecodeTracer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecodes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/cppInterpreter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/cppInterpreterGenerator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/interpreter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/interpreterRuntime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/invocationCounter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/linkResolver.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/oopMapCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/rewriter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/templateInterpreter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/templateInterpreterGenerator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/templateTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/commandLineFlagConstraintsJVMCI.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciCodeInstaller.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciCompiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciCompilerToVM.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciEnv.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciJavaClasses.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciRuntime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmci_globals.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/vmStructs_jvmci.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/libadt/dict.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/libadt/set.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/libadt/vectset.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/log.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logConfiguration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logDecorations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logDecorators.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logDiagnosticCommand.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logFileOutput.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logFileStreamOutput.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logLevel.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logOutput.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logOutputList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logTag.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logTagLevelExpression.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logTagSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/allocation.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/binaryTreeDictionary.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/filemap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/freeBlockDictionary.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/freeList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/guardedMemory.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/heap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/heapInspection.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/iterator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/memRegion.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/metachunk.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/metaspace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/metaspaceCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/metaspaceShared.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/metaspaceTracer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/oopFactory.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/resourceArea.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/universe.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/universe_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/virtualspace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/annotations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/arrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/arrayOop.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/compiledICHolder.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/constMethod.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/constantPool.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/cpCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/generateOopMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/instanceKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/instanceMirrorKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/instanceOop.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/instanceRefKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/klass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/klassVtable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/markOop.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/metadata.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/method.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/methodCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/methodData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/objArrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/objArrayOop.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/oop.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/oopsHierarchy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/symbol.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/typeArrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/addnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/arraycopynode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/block.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/buildOopMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/bytecodeInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/c2_globals.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/c2compiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/callGenerator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/callnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/castnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/cfgnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/chaitin.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/classes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/coalesce.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/compile.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/connode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/convertnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/countbitsnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/divnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/doCall.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/domgraph.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/escape.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/gcm.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/generateOptoStub.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/graphKit.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/idealGraphPrinter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/idealKit.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/ifg.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/ifnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/indexSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/intrinsicnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/lcm.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/library_call.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/live.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/locknode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/loopPredicate.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/loopTransform.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/loopUnswitch.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/loopnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/loopopts.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/machnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/macro.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/macroArrayCopy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/matcher.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/mathexactnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/memnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/movenode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/mulnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/multnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/narrowptrnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/node.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/opaquenode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/opcodes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/output.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/parse1.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/parse2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/parse3.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/parseHelper.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/phase.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/phaseX.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/postaloc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/reg_split.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/regalloc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/regmask.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/replacednodes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/rootnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/runtime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/split_if.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/stringopts.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/subnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/superword.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/type.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/vectornode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/evmCompat.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/forte.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jni.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jniCheck.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jniFastGetField.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvm.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiCodeBlobEvents.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiEnv.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiEnvBase.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiEnvThreadState.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiEventController.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiExport.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiExtensions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiGetLoadedClasses.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiImpl.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiManageCapabilities.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiRawMonitor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiTagMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiThreadState.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiTrace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiUtil.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/methodComparator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/methodHandles.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/nativeLookup.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/perf.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/privilegedStack.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/stackwalk.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/unsafe.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/wbtestmethods/parserTests.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/whitebox.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/whitebox_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/advancedThresholdPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/arguments.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/atomic.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/basicLock.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/biasedLocking.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagConstraintList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagConstraintsCompiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagConstraintsGC.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagConstraintsRuntime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagRangeList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/compilationPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/deoptimization.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/fieldDescriptor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/fieldType.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/fprofiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/frame.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/globals.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/handles.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/icache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/init.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/interfaceSupport.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/java.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/javaCalls.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/jniHandles.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/jniPeriodicChecker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/memprofiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/monitorChunk.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/mutex.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/mutexLocker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/objectMonitor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/orderAccess.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/os.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/osThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/park.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/perfData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/perfMemory.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/reflection.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/reflectionUtils.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/relocator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/rframe.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/rtmLocking.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/safepoint.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/semaphore.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/serviceThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/sharedRuntime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/sharedRuntimeTrans.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/sharedRuntimeTrig.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/signature.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/simpleThresholdPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/stackValue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/stackValueCollection.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/statSampler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/stubCodeGenerator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/stubRoutines.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/sweeper.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/synchronizer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/task.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/thread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/thread_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/timer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/unhandledOops.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vframe.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vframeArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vframe_hp.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vmStructs.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vmThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vm_operations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vm_version.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>DEBUG_LEVEL="slowdebug"</Elem>
+ <Elem>HOTSPOT_VERSION_STRING="9-internal+0-2016-06-20-224455.vkvashin.jdktrunk"</Elem>
+ <Elem>VERSION_BUILD=0</Elem>
+ <Elem>VERSION_MAJOR=9</Elem>
+ <Elem>VERSION_MINOR=0</Elem>
+ <Elem>VERSION_PATCH=0</Elem>
+ <Elem>VERSION_SECURITY=0</Elem>
+ <Elem>VERSION_STRING="9-internal+0-2016-06-20-224455.vkvashin.jdktrunk"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/attachListener.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/classLoadingService.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/diagnosticArgument.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/diagnosticCommand.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/diagnosticFramework.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/dtraceAttacher.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/g1MemoryPool.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/gcNotifier.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/heapDumper.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/lowMemoryDetector.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/mallocSiteTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/mallocTracker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/management.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memBaseline.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memReporter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memTracker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memoryManager.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memoryPool.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memoryService.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/nmtCommon.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/nmtDCmd.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/psMemoryPool.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/runtimeService.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/threadService.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/virtualMemoryTracker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/writeableFlags.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/accessFlags.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/array.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/bitMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/chunkedList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/constantTag.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/copy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/debug.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/decoder.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/decoder_elf.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/elfFile.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/elfFuncDescTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/elfStringTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/elfSymbolTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/errorReporter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/events.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/exceptions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/globalDefinitions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/growableArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/hashtable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/histogram.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/intHisto.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/internalVMTests.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/json.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/linkedlist.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/nativeCallStack.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/numberSeq.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/ostream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>_FILE_OFFSET_BITS=64</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/preserveException.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/quickSort.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/resourceHash.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/sizes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/stringUtils.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/ticks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/utf8.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/vmError.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/xmlstream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../jdk/make/src/native/genconstants/ch/genSocketOptionRegistry.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="3">
+ </cTool>
+ </item>
+ <item path="../../jdk/make/src/native/genconstants/fs/genUnixConstants.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="3">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/linux/native/libjava/ProcessHandleImpl_linux.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/linux/native/libnet/linux_close.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/linux/native/libnio/ch/EPoll.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/linux/native/libnio/ch/EPollArrayWrapper.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="EPollArrayWrapper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/linux/native/libnio/ch/EPollPort.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="EPollPort.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/linux/native/libnio/fs/LinuxNativeDispatcher.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/linux/native/libnio/fs/LinuxWatchService.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="LinuxWatchService.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/linux/native/libnio/fs/MagicFileTypeDetector.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="MagicFileTypeDetector.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/launcher/main.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="6">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_acos.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_asin.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_asin.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_atan2.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_atan2.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_atanh.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_atanh.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_cosh.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_cosh.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_exp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_exp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_fmod.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_fmod.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_log.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_log.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_log10.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_log10.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_rem_pio2.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_rem_pio2.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_remainder.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_remainder.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_scalb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_scalb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_sinh.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_sinh.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_sqrt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_sqrt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/k_cos.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="k_cos.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/k_rem_pio2.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="k_rem_pio2.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/k_sin.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="k_sin.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/k_standard.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="k_standard.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/k_tan.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="k_tan.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_atan.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_atan.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_ceil.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_ceil.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_copysign.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_copysign.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_cos.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_cos.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_expm1.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_expm1.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_fabs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_fabs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_finite.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_finite.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_floor.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_floor.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_frexp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_frexp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_ilogb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_ilogb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_isnan.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_isnan.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_ldexp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_ldexp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_lib_version.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_lib_version.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_log1p.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_log1p.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_logb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_logb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_matherr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_matherr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_modf.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_modf.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_nextafter.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_nextafter.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_rint.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_rint.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_scalbn.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_scalbn.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_signgam.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_signgam.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_significand.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_significand.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_sin.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_sin.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_tan.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_tan.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_tanh.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_tanh.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_acos.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_acos.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_asin.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_asin.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_atan2.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_atan2.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_atanh.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_atanh.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_cosh.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_cosh.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_exp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_exp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_fmod.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_fmod.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_log.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_log.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_log10.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_log10.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_remainder.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_remainder.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_scalb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_scalb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_sinh.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_sinh.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_sqrt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_sqrt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/AccessController.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Array.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Array.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/AtomicLong.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="AtomicLong.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Class.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Class.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/ClassLoader.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ClassLoader.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/ConstantPool.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ConstantPool.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Double.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Double.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Executable.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Executable.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Field.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Field.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/FileInputStream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileInputStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Float.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Float.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/GC.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="GC.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/NativeAccessors.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="NativeAccessors.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Object.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Object.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/ObjectInputStream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ObjectInputStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/ObjectOutputStream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ObjectOutputStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/ObjectStreamClass.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ObjectStreamClass.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Package.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Package.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Proxy.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Proxy.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/RandomAccessFile.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="RandomAccessFile.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Reflection.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Reflection.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Runtime.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Runtime.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/SecurityManager.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="SecurityManager.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Shutdown.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Shutdown.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Signal.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Signal.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/StackFrameInfo.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="StackFrameInfo.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/StackStreamFactory.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="StackStreamFactory.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/StrictMath.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="StrictMath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/String.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="String.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/StringCoding.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="StringCoding.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/System.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="System.c"</Elem>
+ <Elem>VERSION_BUILD=0</Elem>
+ <Elem>VERSION_MAJOR=9</Elem>
+ <Elem>VERSION_MINOR=0</Elem>
+ <Elem>VERSION_NUMBER="9"</Elem>
+ <Elem>VERSION_OPT="2016-06-20-224455.vkvashin.jdktrunk"</Elem>
+ <Elem>VERSION_PATCH=0</Elem>
+ <Elem>VERSION_PRE="internal"</Elem>
+ <Elem>VERSION_SECURITY=0</Elem>
+ <Elem>VERSION_SHORT="9-internal"</Elem>
+ <Elem>VERSION_SPECIFICATION="9"</Elem>
+ <Elem>VERSION_STRING="9-internal+0-2016-06-20-224455.vkvashin.jdktrunk"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Thread.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Thread.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Throwable.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Throwable.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/TimeZone.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="TimeZone.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/VM.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="VM.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/VMSupport.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="VMSupport.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Version.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Version.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/check_version.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="check_version.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/io_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="io_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/jdk_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="jdk_util.c"</Elem>
+ <Elem>VERSION_BUILD=0</Elem>
+ <Elem>VERSION_MAJOR=9</Elem>
+ <Elem>VERSION_MINOR=0</Elem>
+ <Elem>VERSION_NUMBER="9"</Elem>
+ <Elem>VERSION_OPT="2016-06-20-224455.vkvashin.jdktrunk"</Elem>
+ <Elem>VERSION_PATCH=0</Elem>
+ <Elem>VERSION_PRE="internal"</Elem>
+ <Elem>VERSION_SECURITY=0</Elem>
+ <Elem>VERSION_SHORT="9-internal"</Elem>
+ <Elem>VERSION_SPECIFICATION="9"</Elem>
+ <Elem>VERSION_STRING="9-internal+0-2016-06-20-224455.vkvashin.jdktrunk"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/jio.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="jio.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/jni_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="jni_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/verify_stub.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="verify_stub.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjimage/ImageNativeSubstrate.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjimage/endian.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="endian.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjimage/imageDecompressor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="imageDecompressor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjimage/imageFile.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="imageFile.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjimage/jimage.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="jimage.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/args.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/java.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="java.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/jli_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="jli_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/parse_manifest.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="parse_manifest.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/splashscreen_stubs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_stubs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/wildcard.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="wildcard.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnet/DatagramPacket.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnet/Inet4Address.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Inet4Address.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnet/Inet6Address.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Inet6Address.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnet/InetAddress.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="InetAddress.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnet/net_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="net_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnio/nio_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libverify/check_code.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libverify/check_format.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="check_format.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/Adler32.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="Adler32.c"</Elem>
+ <Elem>USE_MMAP</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/CRC32.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="CRC32.c"</Elem>
+ <Elem>USE_MMAP</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/Deflater.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="Deflater.c"</Elem>
+ <Elem>USE_MMAP</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/Inflater.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="Inflater.c"</Elem>
+ <Elem>USE_MMAP</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zip_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="zip_util.c"</Elem>
+ <Elem>USE_MMAP</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zlib/compress.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zlib/deflate.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="deflate.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zlib/gzclose.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="gzclose.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zlib/gzlib.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="gzlib.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zlib/gzread.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="gzread.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zlib/gzwrite.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="gzwrite.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zlib/infback.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="infback.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zlib/inffast.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="inffast.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zlib/inflate.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="inflate.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zlib/inftrees.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="inftrees.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zlib/trees.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="trees.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zlib/uncompr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="uncompr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zlib/zadler32.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="zadler32.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zlib/zcrc32.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="zcrc32.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zlib/zutil.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="zutil.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/launcher/jexec.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/Console_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/FileDescriptor_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileDescriptor_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/FileInputStream_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileInputStream_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/FileOutputStream_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileOutputStream_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/ProcessEnvironment_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ProcessEnvironment_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/ProcessHandleImpl_unix.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ProcessHandleImpl_unix.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/ProcessImpl_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ProcessImpl_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/RandomAccessFile_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="RandomAccessFile_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/TimeZone_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="TimeZone_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/UnixFileSystem_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="UnixFileSystem_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/VM_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="VM_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/canonicalize_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="canonicalize_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/childproc.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="childproc.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/io_util_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="io_util_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/java_props_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="java_props_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/jdk_util_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="jdk_util_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/jni_util_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="jni_util_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjimage/osSupport_unix.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjli/ergo.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjli/ergo_i586.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ergo_i586.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjli/java_md_common.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="java_md_common.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjli/java_md_solinux.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="java_md_solinux.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/DefaultProxySelector.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/ExtendedOptionsImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ExtendedOptionsImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/Inet4AddressImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Inet4AddressImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/Inet6AddressImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Inet6AddressImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/InetAddressImplFactory.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="InetAddressImplFactory.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/NetworkInterface.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="NetworkInterface.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/PlainDatagramSocketImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="PlainDatagramSocketImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/PlainSocketImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="PlainSocketImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/ResolverConfigurationImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ResolverConfigurationImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/SdpSupport.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="SdpSupport.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/SocketImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="SocketImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/SocketInputStream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="SocketInputStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/SocketOutputStream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="SocketOutputStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/net_util_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="net_util_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/portconfig.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="portconfig.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/MappedByteBuffer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="MappedByteBuffer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/DatagramChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/DatagramDispatcher.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="DatagramDispatcher.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/FileChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/FileDispatcherImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileDispatcherImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/FileKey.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileKey.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/IOUtil.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="IOUtil.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/InheritedChannel.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="InheritedChannel.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/NativeThread.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="NativeThread.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/Net.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Net.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/PollArrayWrapper.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="PollArrayWrapper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/ServerSocketChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ServerSocketChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/SocketChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="SocketChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/SocketDispatcher.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="SocketDispatcher.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/UnixAsynchronousServerSocketChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="UnixAsynchronousServerSocketChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/UnixAsynchronousSocketChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="UnixAsynchronousSocketChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/fs/GioFileTypeDetector.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/fs/UnixCopyFile.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="UnixCopyFile.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="UnixNativeDispatcher.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/debug/debug_assert.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/debug/debug_mem.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="debug_mem.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/debug/debug_trace.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="debug_trace.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/debug/debug_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="debug_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/medialib/mlib_ImageCopy_Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/medialib/mlib_ImageCreate.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageCreate.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/medialib/mlib_sys.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_sys.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/utility/rect.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/font/AccelGlyphCache.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLBlitLoops.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLBufImgOps.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLBufImgOps.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLContext.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLContext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLFuncs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLFuncs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLMaskBlit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLMaskBlit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLMaskFill.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLMaskFill.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLPaints.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLPaints.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLRenderQueue.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLRenderQueue.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLRenderer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLRenderer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLSurfaceData.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLSurfaceData.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLTextRenderer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLTextRenderer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLVertexCache.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLVertexCache.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/BufImgSurfaceData.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="BufImgSurfaceData.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/DataBufferNative.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="DataBufferNative.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/awt_ImageRep.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_ImageRep.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/awt_parseImage.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_parseImage.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils/img_colors.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils/img_globals.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="img_globals.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/dither.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="dither.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/gif/gifdecoder.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/imageInitIDs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="imageInitIDs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/medialib/awt_ImagingLib.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/Disposer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Disposer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/SurfaceData.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="SurfaceData.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/Trace.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Trace.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/AlphaMacros.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/AlphaMath.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="AlphaMath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Any3Byte.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Any3Byte.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Any4Byte.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Any4Byte.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/AnyByte.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="AnyByte.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/AnyInt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="AnyInt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/AnyShort.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="AnyShort.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Blit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Blit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/BlitBg.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="BlitBg.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ByteBinary1Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ByteBinary1Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ByteBinary2Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ByteBinary2Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ByteBinary4Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ByteBinary4Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ByteGray.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ByteGray.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ByteIndexed.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ByteIndexed.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/DrawLine.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawLine.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/DrawParallelogram.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawParallelogram.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/DrawPath.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawPath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/DrawPolygons.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawPolygons.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/DrawRect.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawRect.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FillParallelogram.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FillParallelogram.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FillPath.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FillPath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FillRect.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FillRect.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FillSpans.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FillSpans.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FourByteAbgr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FourByteAbgr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FourByteAbgrPre.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FourByteAbgrPre.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/GraphicsPrimitiveMgr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="GraphicsPrimitiveMgr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Index12Gray.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Index12Gray.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Index8Gray.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Index8Gray.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntArgb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntArgb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntArgbBm.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntArgbBm.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntArgbPre.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntArgbPre.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntBgr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntBgr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntRgb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntRgb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntRgbx.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntRgbx.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/MapAccelFunc.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="MapAccelFunc.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/MaskBlit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="MaskBlit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/MaskFill.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="MaskFill.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ProcessPath.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ProcessPath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ScaledBlit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ScaledBlit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ThreeByteBgr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThreeByteBgr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/TransformHelper.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="TransformHelper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Ushort4444Argb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Ushort4444Argb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Ushort555Rgb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Ushort555Rgb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Ushort555Rgbx.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Ushort555Rgbx.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Ushort565Rgb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Ushort565Rgb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/UshortGray.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="UshortGray.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/UshortIndexed.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="UshortIndexed.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/pipe/BufferedMaskBlit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/pipe/BufferedRenderPipe.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="BufferedRenderPipe.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/pipe/Region.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Region.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/pipe/ShapeSpanIterator.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ShapeSpanIterator.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/pipe/SpanClipRenderer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="SpanClipRenderer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/DrawGlyphList.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawGlyphList.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/FontInstanceAdapter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FontInstanceAdapter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/HBShaper.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="HBShaper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/freetypeScaler.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="freetypeScaler.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-blob.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer-serialize.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-buffer-serialize.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-buffer.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-common.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-common.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-face.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-face.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-fallback-shape.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-fallback-shape.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-font.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-font.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-font.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-font.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-layout.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-map.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-map.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-arabic.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-default.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-default.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-hangul.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-hangul.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-hebrew.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-hebrew.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic-table.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-indic-table.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-indic.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-myanmar.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-myanmar.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-thai.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-thai.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-tibetan.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-tibetan.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use-table.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-use-table.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-use.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-fallback.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-fallback.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-normalize.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-normalize.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-tag.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-tag.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-set.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape-plan.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-shape-plan.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-shape.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shaper.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-shaper.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ucdn.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/ucdn.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-unicode.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-unicode.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-warning.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-warning.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/hb-jdk-font.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-jdk-font.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/AlternateSubstSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/AnchorTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AnchorTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ArabicLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ArabicLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ArabicShaping.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ArabicShaping.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/CanonData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CanonData.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/CanonShaping.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CanonShaping.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ClassDefinitionTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ClassDefinitionTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ContextualGlyphInsertionProc2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ContextualGlyphInsertionProc2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ContextualGlyphSubstProc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ContextualGlyphSubstProc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ContextualGlyphSubstProc2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ContextualGlyphSubstProc2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ContextualSubstSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ContextualSubstSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/CoverageTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CoverageTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/CursiveAttachmentSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CursiveAttachmentSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/DeviceTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DeviceTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ExtensionSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ExtensionSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/Features.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Features.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GDEFMarkFilter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GDEFMarkFilter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GXLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GXLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GXLayoutEngine2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GXLayoutEngine2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphDefinitionTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphDefinitionTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphIterator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphIterator.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphLookupTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphLookupTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphPositionAdjustments.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphPositionAdjustments.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphPositioningTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphPositioningTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphPosnLookupProc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphPosnLookupProc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphSubstLookupProc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphSubstLookupProc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphSubstitutionTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphSubstitutionTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/HanLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="HanLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/HangulLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="HangulLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/IndicClassTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IndicClassTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/IndicLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IndicLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IndicRearrangementProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IndicRearrangementProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/IndicReordering.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IndicReordering.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/KernTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="KernTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/KhmerLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="KhmerLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/KhmerReordering.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="KhmerReordering.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LEFontInstance.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="LEFontInstance.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LEGlyphStorage.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="LEGlyphStorage.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LEInsertionList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="LEInsertionList.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="LayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LigatureSubstProc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="LigatureSubstProc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LigatureSubstProc2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="LigatureSubstProc2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LigatureSubstSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="LigatureSubstSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LookupProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="LookupProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LookupTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="LookupTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/Lookups.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Lookups.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MPreFixups.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MPreFixups.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MarkArrays.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MarkArrays.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MarkToBasePosnSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MarkToBasePosnSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MarkToLigaturePosnSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MarkToLigaturePosnSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MarkToMarkPosnSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MarkToMarkPosnSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MirroredCharData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MirroredCharData.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MorphTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MorphTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MorphTables2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MorphTables2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MultipleSubstSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MultipleSubstSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/NonContextualGlyphSubstProc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="NonContextualGlyphSubstProc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/NonContextualGlyphSubstProc2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="NonContextualGlyphSubstProc2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/OpenTypeLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OpenTypeLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/OpenTypeUtilities.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OpenTypeUtilities.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/PairPositioningSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PairPositioningSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ScriptAndLanguage.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ScriptAndLanguage.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ScriptAndLanguageTags.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ScriptAndLanguageTags.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SegmentArrayProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SegmentArrayProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SegmentArrayProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SegmentArrayProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SegmentSingleProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SegmentSingleProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SegmentSingleProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SegmentSingleProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ShapingTypeData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ShapingTypeData.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SimpleArrayProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SimpleArrayProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SimpleArrayProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SimpleArrayProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SinglePositioningSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SinglePositioningSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SingleSubstitutionSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SingleSubstitutionSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SingleTableProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SingleTableProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SingleTableProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SingleTableProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/StateTableProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="StateTableProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/StateTableProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="StateTableProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SubstitutionLookups.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SubstitutionLookups.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SubtableProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SubtableProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SubtableProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SubtableProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SunLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SunLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ThaiLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThaiLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ThaiShaping.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThaiShaping.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ThaiStateTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThaiStateTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/TibetanLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="TibetanLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/TibetanReordering.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="TibetanReordering.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/TrimmedArrayProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="TrimmedArrayProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/TrimmedArrayProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="TrimmedArrayProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ValueRecords.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ValueRecords.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/scriptMapping.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="scriptMapping.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/sunFont.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="sunFont.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/imageioJPEG.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcapimin.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcapimin.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcapistd.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcapistd.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jccoefct.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jccoefct.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jccolor.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jccolor.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcdctmgr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcdctmgr.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jchuff.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jchuff.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcinit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcinit.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcmainct.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcmainct.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcmarker.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcmarker.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcmaster.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcmaster.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcomapi.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcomapi.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcparam.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcparam.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcphuff.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcphuff.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcprepct.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcprepct.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcsample.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcsample.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jctrans.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jctrans.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdapimin.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdapimin.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdapistd.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdapistd.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdcoefct.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdcoefct.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdcolor.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdcolor.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jddctmgr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jddctmgr.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdhuff.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdhuff.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdinput.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdinput.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdmainct.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdmainct.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdmarker.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdmarker.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdmaster.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdmaster.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdmerge.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdmerge.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdphuff.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdphuff.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdpostct.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdpostct.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdsample.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdsample.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdtrans.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdtrans.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jerror.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jerror.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jfdctflt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jfdctflt.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jfdctfst.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jfdctfst.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jfdctint.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jfdctint.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jidctflt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jidctflt.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jidctfst.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jidctfst.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jidctint.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jidctint.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jidctred.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jidctred.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jmemmgr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jmemmgr.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jmemnobs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jmemnobs.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jpegdecoder.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="jpegdecoder.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jquant1.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jquant1.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jquant2.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jquant2.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jutils.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jutils.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/DirectAudioDevice.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>/usr/include/alsa</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_IN=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_OUT=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/DirectAudioDeviceProvider.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>/usr/include/alsa</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="DirectAudioDeviceProvider.c"</Elem>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_IN=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_OUT=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/MidiInDevice.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>/usr/include/alsa</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="MidiInDevice.c"</Elem>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_IN=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_OUT=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/MidiInDeviceProvider.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>/usr/include/alsa</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="MidiInDeviceProvider.c"</Elem>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_IN=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_OUT=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/MidiOutDevice.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>/usr/include/alsa</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="MidiOutDevice.c"</Elem>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_IN=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_OUT=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/MidiOutDeviceProvider.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>/usr/include/alsa</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="MidiOutDeviceProvider.c"</Elem>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_IN=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_OUT=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/Platform.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="Platform.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/PlatformMidi.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>/usr/include/alsa</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="PlatformMidi.c"</Elem>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_IN=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_OUT=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/PortMixer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>/usr/include/alsa</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="PortMixer.c"</Elem>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_IN=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_OUT=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/PortMixerProvider.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>/usr/include/alsa</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="PortMixerProvider.c"</Elem>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_IN=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_OUT=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/Utilities.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <incDir>
+ <pElem>/usr/include/alsa</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="Utilities.c"</Elem>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_IN=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_OUT=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/LCMS.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmscam02.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmscam02.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmscgats.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmscgats.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmscnvrt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmscnvrt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmserr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmserr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsgamma.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsgamma.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsgmt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsgmt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmshalf.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmshalf.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsintrp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsintrp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsio0.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsio0.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsio1.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsio1.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmslut.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmslut.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsmd5.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsmd5.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsmtrx.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsmtrx.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsnamed.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsnamed.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsopt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsopt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmspack.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmspack.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmspcs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmspcs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsplugin.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsplugin.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsps2.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsps2.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmssamp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmssamp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmssm.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmssm.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmstypes.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmstypes.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsvirt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsvirt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmswtpnt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmswtpnt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsxform.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsxform.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffineEdge.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffineEdge.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BC_D64.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BC_D64.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BC_F32.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BC_F32.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BC_S32.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BC_S32.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BL_D64.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BL_D64.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BL_F32.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BL_F32.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BL_S32.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BL_S32.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_NN.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_NN.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_NN_Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_NN_Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageClipping.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageClipping.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageColorTrue2Index.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageColorTrue2Index.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv2x2_f.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv2x2_f.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvClearEdge_Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvClearEdge_Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvClearEdge_Fp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvClearEdge_Fp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvCopyEdge_Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvCopyEdge_Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvKernelConvert.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvKernelConvert.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvMxN.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvMxN.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvMxN_Fp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvMxN_Fp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvMxN_ext.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvMxN_ext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_16ext.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_16ext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_16nw.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_16nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_32nw.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_32nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_8ext.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_8ext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_8nw.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_8nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_D64nw.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_D64nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_F32nw.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_F32nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_u16ext.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_u16ext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_u16nw.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_u16nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageDivTables.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageDivTables.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageFilters.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageFilters.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageLookUp_64.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageLookUp_64.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageLookUp_Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageLookUp_Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageScanPoly.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageScanPoly.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageUtils.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageUtils.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffineIndex_BC.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffineIndex_BC.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffineIndex_BL.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffineIndex_BL.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BC.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BC.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BC_S16.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BC_S16.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BC_U16.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BC_U16.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BL.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BL.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BL_S16.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BL_S16.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BL_U16.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BL_U16.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_NN.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_NN.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConvClearEdge.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageConvClearEdge.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConvCopyEdge.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageConvCopyEdge.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConvVersion.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageConvVersion.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConv_f.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageConv_f.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageCopy.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageCopy.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageLookUp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageLookUp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageLookUp_f.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageLookUp_f.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageThresh1_U8.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageThresh1_U8.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/giflib/dgif_lib.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/giflib/gif_err.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="gif_err.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/giflib/gifalloc.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="gifalloc.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/java_awt_SplashScreen.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="java_awt_SplashScreen.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/png.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngerror.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngerror.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngget.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngget.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngmem.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngmem.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngpread.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngpread.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngread.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngread.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngrio.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngrio.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngrtran.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngrtran.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngrutil.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngrutil.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngset.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngset.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngtrans.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngtrans.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngwio.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngwio.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngwrite.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngwrite.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngwtran.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngwtran.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngwutil.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngwutil.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_gfx_impl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_gfx_impl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_gif.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_gif.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_impl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_impl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_jpeg.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_jpeg.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_png.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_png.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/awt/CUPSfuncs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/awt/X11Color.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="X11Color.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/awt/awt_Font.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_Font.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/awt/fontpath.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="fontpath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/java2d/opengl/GLXGraphicsConfig.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/java2d/opengl/GLXSurfaceData.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="GLXSurfaceData.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/java2d/x11/X11FontScaler_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/java2d/x11/X11PMBlitLoops.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="X11PMBlitLoops.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/java2d/x11/X11Renderer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="X11Renderer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/java2d/x11/X11SurfaceData.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="X11SurfaceData.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/java2d/x11/X11TextRenderer_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="X11TextRenderer_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt/awt/awt_LoadLibrary.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt/awt/awt_Mlib.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_Mlib.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt/awt/initIDs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="initIDs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_headless/awt/HeadlessToolkit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_headless/awt/VDrawingArea.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="VDrawingArea.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_DrawingSurface.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_DrawingSurface.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_Event.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_GraphicsEnv.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_InputMethod.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Insets.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_Insets.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Robot.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_Robot.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_UNIXToolkit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_UNIXToolkit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="gtk2_interface.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/list.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="list.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/multiVis.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="multiVis.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/multi_font.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="multi_font.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/robot_common.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="robot_common.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/sun_awt_X11_GtkFileDialogPeer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="sun_awt_X11_GtkFileDialogPeer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/swing_GTKEngine.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="swing_GTKEngine.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/swing_GTKStyle.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="swing_GTKStyle.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11/XRBackendNative.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11/XRSurfaceData.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="XRSurfaceData.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt/XWindow.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="XWindow.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="XlibWrapper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt/awt_Desktop.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_Desktop.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt/gnome_interface.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="gnome_interface.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libfontmanager/X11FontScaler.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libfontmanager/X11TextRenderer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="X11TextRenderer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libjawt/jawt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libjsound/PLATFORM_API_LinuxOS_ALSA_CommonUtils.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libjsound/PLATFORM_API_LinuxOS_ALSA_MidiIn.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="PLATFORM_API_LinuxOS_ALSA_MidiIn.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libjsound/PLATFORM_API_LinuxOS_ALSA_MidiOut.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="PLATFORM_API_LinuxOS_ALSA_MidiOut.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libjsound/PLATFORM_API_LinuxOS_ALSA_MidiUtils.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="PLATFORM_API_LinuxOS_ALSA_MidiUtils.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libjsound/PLATFORM_API_LinuxOS_ALSA_PCM.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="PLATFORM_API_LinuxOS_ALSA_PCM.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libjsound/PLATFORM_API_LinuxOS_ALSA_PCMUtils.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="PLATFORM_API_LinuxOS_ALSA_PCMUtils.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libjsound/PLATFORM_API_LinuxOS_ALSA_Ports.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="PLATFORM_API_LinuxOS_ALSA_Ports.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libsplashscreen/splashscreen_sys.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/EncodingSupport.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/InstrumentationImplNativeMethods.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="InstrumentationImplNativeMethods.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/InvocationAdapter.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="InvocationAdapter.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/JPLISAgent.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="JPLISAgent.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/JPLISAssert.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="JPLISAssert.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/JarFacade.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="JarFacade.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/JavaExceptions.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="JavaExceptions.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/PathCharsValidator.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="PathCharsValidator.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/Reentrancy.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Reentrancy.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/Utilities.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Utilities.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/unix/native/libinstrument/EncodingSupport_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/unix/native/libinstrument/FileSystemSupport_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileSystemSupport_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/ClassLoadingImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/GarbageCollectorImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="GarbageCollectorImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/HotspotThread.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="HotspotThread.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/MemoryImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="MemoryImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/MemoryManagerImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="MemoryManagerImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/MemoryPoolImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="MemoryPoolImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/ThreadImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThreadImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/VMManagementImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="VMManagementImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/management.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="management.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/unix/native/libmanagement/FileSystemImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.prefs/unix/native/libprefs/FileSystemPreferences.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.security.jgss/share/native/libj2gss/GSSLibStub.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.security.jgss/share/native/libj2gss/NativeUtil.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="NativeUtil.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.security.jgss/unix/native/libj2gss/NativeFunc.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.smartcardio/share/native/libj2pcsc/pcsc.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.attach/linux/native/libattach/VirtualMachineImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/ECC_JNI.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec2_163.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ec2_163.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec2_193.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ec2_193.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec2_233.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ec2_233.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec2_aff.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ec2_aff.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec2_mont.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ec2_mont.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec_naf.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ec_naf.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecdecode.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecdecode.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_curve.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecl_curve.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_gf.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecl_gf.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_mult.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecl_mult.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_192.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_192.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_224.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_224.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_256.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_256.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_384.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_384.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_521.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_521.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_aff.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_aff.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_jac.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_jac.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_jm.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_jm.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_mont.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_mont.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/mp_gf2m.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mp_gf2m.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/mpi.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mpi.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/mplogic.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mplogic.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/mpmontg.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="mpmontg.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/oid.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="oid.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/secitem.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="secitem.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/j2secmod.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_convert.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_crypt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_crypt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_digest.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_digest.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_dual.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_dual.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_general.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_general.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_keymgmt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_keymgmt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_mutex.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_mutex.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_objmgmt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_objmgmt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_sessmgmt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_sessmgmt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_sign.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_sign.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/unix/native/libj2pkcs11/j2secmod_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/unix/native/libj2pkcs11/p11_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libdt_socket/socketTransport.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ArrayReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ArrayTypeImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ArrayTypeImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ClassLoaderReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ClassLoaderReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ClassObjectReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ClassObjectReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ClassTypeImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ClassTypeImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/EventRequestImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="EventRequestImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/FieldImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FieldImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/FrameID.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="FrameID.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/InterfaceTypeImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="InterfaceTypeImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/MethodImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="MethodImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ObjectReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ObjectReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ReferenceTypeImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ReferenceTypeImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/SDE.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="SDE.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/StackFrameImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="StackFrameImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/StringReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="StringReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ThreadGroupReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThreadGroupReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ThreadReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThreadReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/VirtualMachineImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="VirtualMachineImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/bag.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="bag.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/classTrack.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="classTrack.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/commonRef.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="commonRef.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/debugDispatch.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="debugDispatch.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/debugInit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="debugInit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/debugLoop.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="debugLoop.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/error_messages.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="error_messages.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/eventFilter.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="eventFilter.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/eventHandler.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="eventHandler.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/eventHelper.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="eventHelper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/inStream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="inStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/invoker.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="invoker.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/log_messages.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="log_messages.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/outStream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="outStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/standardHandlers.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="standardHandlers.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/stepControl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="stepControl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/stream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="stream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/threadControl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="threadControl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/transport.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="transport.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/utf_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="utf_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/unix/native/libdt_socket/socket_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/unix/native/libjdwp/linker_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="linker_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/linux/native/libmanagement_ext/UnixOperatingSystem.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/DiagnosticCommandImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/Flag.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="Flag.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/GarbageCollectorExtImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="GarbageCollectorExtImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/GcInfoBuilder.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="GcInfoBuilder.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/HotSpotDiagnostic.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="HotSpotDiagnostic.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/management_ext.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="management_ext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/unix/native/libmanagement_ext/OperatingSystemImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/bands.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/bytes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="bytes.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/coding.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="coding.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/unpack.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="unpack.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/utils.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="utils.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/zip.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="zip.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/libunpack/jni.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/unpack200/main.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="2">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.sctp/unix/native/libsctp/SctpChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.sctp/unix/native/libsctp/SctpNet.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="SctpNet.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.sctp/unix/native/libsctp/SctpServerChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ <preprocessorList>
+ <Elem>THIS_FILE="SctpServerChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.security.auth/unix/native/libjaas/Unix.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <folder path="0/build">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ </incDir>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_gcc</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_linux_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_linux_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_linux</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot">
+ <cTool>
+ <preprocessorList>
+ <Elem>_GNU_SOURCE</Elem>
+ <Elem>_REENTRANT</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_gcc</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_linux_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_linux_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_linux</Elem>
+ </preprocessorList>
+ <undefinedList>
+ <Elem>__EXCEPTIONS</Elem>
+ <Elem>__GXX_RTTI</Elem>
+ </undefinedList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/cpu">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/jdk.hotspot.agent">
+ <cTool>
+ <incDir>
+ <pElem>../../hotspot/src/jdk.hotspot.agent/share/native/libsaproc</pElem>
+ <pElem>../../hotspot/src/jdk.hotspot.agent/linux/native/libsaproc</pElem>
+ <pElem>../../build/support/headers/jdk.hotspot.agent</pElem>
+ <pElem>../../hotspot/src/os/linux</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>ARCH="amd64"</Elem>
+ <Elem>DEBUG</Elem>
+ <Elem>LINUX</Elem>
+ <Elem>THIS_FILE="LinuxDebuggerLocal.c"</Elem>
+ <Elem>_FILE_OFFSET_BITS=64</Elem>
+ <Elem>_LARGEFILE64_SOURCE</Elem>
+ <Elem>_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>amd64</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/hotspot/src/jdk.hotspot.agent/share">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="sadis.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/hotspot/src/os">
+ <cTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ </incDir>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/os/posix">
+ <cTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/posix/launcher</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/tools/launcher</pElem>
+ <pElem>../../build/linux-x86_64-normal-server-release/hotspot/linux_amd64_compiler2/product</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/linux-x86_64-normal-server-release/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ARCH="amd64"</Elem>
+ <Elem>GAMMA</Elem>
+ <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>LAUNCHER_TYPE="gamma"</Elem>
+ <Elem>LINK_INTO_LIBJVM</Elem>
+ <Elem>LINUX</Elem>
+ <Elem>PRODUCT</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_gcc</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_linux_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_linux_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_linux</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/hotspot/src/os_cpu">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share">
+ <cTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/posix/launcher</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/tools/launcher</pElem>
+ <pElem>../../build/linux-x86_64-normal-server-release/hotspot/linux_amd64_compiler2/product</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/linux-x86_64-normal-server-release/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ARCH="amd64"</Elem>
+ <Elem>GAMMA</Elem>
+ <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>LAUNCHER_TYPE="gamma"</Elem>
+ <Elem>LINK_INTO_LIBJVM</Elem>
+ <Elem>LINUX</Elem>
+ <Elem>PRODUCT</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_gcc</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_linux_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_linux_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_linux</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/adlc">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/adlc</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ </incDir>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/asm">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/c1">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/ci">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/classfile">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/code">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/compiler">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/gc">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/interpreter">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/jvmci">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/libadt">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/logging">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/memory">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/oops">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/opto">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/prims">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/runtime">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/services">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/utilities">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/debug</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="genSocketOptionRegistry.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <preprocessorList>
+ <Elem>ARCH="amd64"</Elem>
+ <Elem>THIS_FILE="Agent.cpp"</Elem>
+ <Elem>_LARGEFILE64_SOURCE</Elem>
+ <Elem>_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>amd64</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/make">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/make/gensrc</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/make/src/native/genconstants/fs">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="genUnixConstants.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src">
+ <cTool>
+ <preprocessorList>
+ <Elem>ARCH="amd64"</Elem>
+ <Elem>LINUX</Elem>
+ <Elem>THIS_FILE="agent_util.c"</Elem>
+ <Elem>_GNU_SOURCE</Elem>
+ <Elem>_LARGEFILE64_SOURCE</Elem>
+ <Elem>_LITTLE_ENDIAN</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_REENTRANT</Elem>
+ <Elem>amd64</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ProcessHandleImpl_linux.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjimage</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="ImageNativeSubstrate.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/linux">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/linux/native/libjava">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libfdlibm</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>ARCHPROPNAME="amd64"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/linux/native/libnet">
+ <cTool>
+ <incDir>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="linux_close.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/linux/native/libnio">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libnio</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libnio/fs</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/fs</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="EPoll.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/linux/native/libnio/fs">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="LinuxNativeDispatcher.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="main.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/launcher">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/launcher</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjli</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>EXPAND_CLASSPATH_WILDCARDS</Elem>
+ <Elem>JAVA_ARGS={ "-J-ms8m", "com.sun.tools.javac.Main", }</Elem>
+ <Elem>LAUNCHER_NAME="openjdk"</Elem>
+ <Elem>NEVER_ACT_AS_SERVER_CLASS_MACHINE</Elem>
+ <Elem>PROGNAME="javac"</Elem>
+ <Elem>VERSION_BUILD=0</Elem>
+ <Elem>VERSION_MAJOR=9</Elem>
+ <Elem>VERSION_MINOR=0</Elem>
+ <Elem>VERSION_NUMBER="9"</Elem>
+ <Elem>VERSION_OPT="2016-06-20-224455.vkvashin.jdktrunk"</Elem>
+ <Elem>VERSION_PATCH=0</Elem>
+ <Elem>VERSION_PRE="internal"</Elem>
+ <Elem>VERSION_SECURITY=0</Elem>
+ <Elem>VERSION_SHORT="9-internal"</Elem>
+ <Elem>VERSION_SPECIFICATION="9"</Elem>
+ <Elem>VERSION_STRING="9-internal+0-2016-06-20-224455.vkvashin.jdktrunk"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libfdlibm">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libfdlibm</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>LIBRARY_NAME=fdlibm</Elem>
+ <Elem>THIS_FILE="e_acos.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libjava">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libfdlibm</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>ARCHPROPNAME="amd64"</Elem>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="AccessController.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libjli">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>LIBARCHNAME="amd64"</Elem>
+ <Elem>THIS_FILE="args.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libnet">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="DatagramPacket.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libnio">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnio</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libnio/fs</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/fs</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="nio_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libverify">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="check_code.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libzip">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="compress.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libzip/zlib">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="jexec.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="osSupport_unix.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix/native/launcher">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix/native/libjava">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libfdlibm</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>ARCHPROPNAME="amd64"</Elem>
+ <Elem>THIS_FILE="Console_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix/native/libjli">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/unix/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>LIBARCHNAME="amd64"</Elem>
+ <Elem>THIS_FILE="ergo.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix/native/libnet">
+ <cTool>
+ <incDir>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="DefaultProxySelector.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix/native/libnio">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libnio</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libnio/fs</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/fs</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="DatagramChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix/native/libnio/fs">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="GioFileTypeDetector.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop">
+ <cTool>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="debug_assert.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/layout</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>/usr/include/freetype2</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>GETPAGESIZE</Elem>
+ <Elem>HAVE_FALLBACK</Elem>
+ <Elem>HAVE_INTEL_ATOMIC_PRIMITIVES</Elem>
+ <Elem>HAVE_MPROTECT</Elem>
+ <Elem>HAVE_OT</Elem>
+ <Elem>HAVE_PTHREAD</Elem>
+ <Elem>HAVE_SYSCONF</Elem>
+ <Elem>HAVE_SYS_MMAN_H</Elem>
+ <Elem>HAVE_UCDN</Elem>
+ <Elem>HAVE_UNISTD_H</Elem>
+ <Elem>HEADLESS</Elem>
+ <Elem>LE_STANDALONE</Elem>
+ <Elem>THIS_FILE="hb-blob.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common/awt/debug">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsunwjdga</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>XAWT</Elem>
+ <Elem>XAWT_HACK</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common/awt/medialib">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libmlib_image</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>MLIB_NO_LIBSUNMATH</Elem>
+ <Elem>MLIB_OS64BIT</Elem>
+ <Elem>THIS_FILE="mlib_ImageCopy_Bit.c"</Elem>
+ <Elem>__MEDIALIB_OLD_NAMES</Elem>
+ <Elem>__USE_J2D_NAMES</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common/awt/utility">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsunwjdga</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>THIS_FILE="rect.c"</Elem>
+ <Elem>XAWT</Elem>
+ <Elem>XAWT_HACK</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common/font">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsunwjdga</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>THIS_FILE="AccelGlyphCache.c"</Elem>
+ <Elem>XAWT</Elem>
+ <Elem>XAWT_HACK</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common/java2d">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsunwjdga</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>THIS_FILE="OGLBlitLoops.c"</Elem>
+ <Elem>XAWT</Elem>
+ <Elem>XAWT_HACK</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libawt">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>MLIB_NO_LIBSUNMATH</Elem>
+ <Elem>THIS_FILE="img_colors.c"</Elem>
+ <Elem>__MEDIALIB_OLD_NAMES</Elem>
+ <Elem>__USE_J2D_NAMES</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libawt/awt/image/gif">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="gifdecoder.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libawt/awt/medialib">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_ImagingLib.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libawt/java2d">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="AlphaMacros.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libawt/java2d/pipe">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="BufferedMaskBlit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libfontmanager">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/layout</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>/usr/include/freetype2</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>GETPAGESIZE</Elem>
+ <Elem>HAVE_FALLBACK</Elem>
+ <Elem>HAVE_INTEL_ATOMIC_PRIMITIVES</Elem>
+ <Elem>HAVE_MPROTECT</Elem>
+ <Elem>HAVE_OT</Elem>
+ <Elem>HAVE_PTHREAD</Elem>
+ <Elem>HAVE_SYSCONF</Elem>
+ <Elem>HAVE_SYS_MMAN_H</Elem>
+ <Elem>HAVE_UCDN</Elem>
+ <Elem>HAVE_UNISTD_H</Elem>
+ <Elem>HEADLESS</Elem>
+ <Elem>LE_STANDALONE</Elem>
+ <Elem>THIS_FILE="ucdn.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libfontmanager/layout">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="AlternateSubstSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libjavajpeg">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="imageioJPEG.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libjsound">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>EXTRA_SOUND_JNI_LIBS=" jsoundalsa"</Elem>
+ <Elem>THIS_FILE="DirectAudioDevice.c"</Elem>
+ <Elem>X_PLATFORM=X_LINUX</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/liblcms">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/liblcms</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CMS_DONT_USE_FAST_FLOOR</Elem>
+ <Elem>THIS_FILE="LCMS.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libmlib_image">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libmlib_image</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>MLIB_NO_LIBSUNMATH</Elem>
+ <Elem>MLIB_OS64BIT</Elem>
+ <Elem>THIS_FILE="mlib_ImageAffine.c"</Elem>
+ <Elem>__MEDIALIB_OLD_NAMES</Elem>
+ <Elem>__USE_J2D_NAMES</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libsplashscreen">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="dgif_lib.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libsplashscreen/libpng">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="png.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="CUPSfuncs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/common">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsunwjdga</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>XAWT</Elem>
+ <Elem>XAWT_HACK</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/common/java2d">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="GLXGraphicsConfig.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/common/java2d/x11">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="X11FontScaler_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libawt">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>MLIB_NO_LIBSUNMATH</Elem>
+ <Elem>THIS_FILE="awt_LoadLibrary.c"</Elem>
+ <Elem>__MEDIALIB_OLD_NAMES</Elem>
+ <Elem>__USE_J2D_NAMES</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libawt_headless">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_headless/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsunwjdga</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HEADLESS=true</Elem>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>THIS_FILE="HeadlessToolkit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libawt_xawt">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsunwjdga</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>THIS_FILE="awt_AWTEvent.c"</Elem>
+ <Elem>XAWT</Elem>
+ <Elem>XAWT_HACK</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libawt_xawt/java2d">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="XRBackendNative.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libawt_xawt/xawt">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="XToolkit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libfontmanager">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/layout</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>/usr/include/freetype2</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>GETPAGESIZE</Elem>
+ <Elem>HAVE_FALLBACK</Elem>
+ <Elem>HAVE_INTEL_ATOMIC_PRIMITIVES</Elem>
+ <Elem>HAVE_MPROTECT</Elem>
+ <Elem>HAVE_OT</Elem>
+ <Elem>HAVE_PTHREAD</Elem>
+ <Elem>HAVE_SYSCONF</Elem>
+ <Elem>HAVE_SYS_MMAN_H</Elem>
+ <Elem>HAVE_UCDN</Elem>
+ <Elem>HAVE_UNISTD_H</Elem>
+ <Elem>HEADLESS</Elem>
+ <Elem>LE_STANDALONE</Elem>
+ <Elem>THIS_FILE="X11FontScaler.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libjawt">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="jawt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libjsound">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>/usr/include/alsa</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>EXTRA_SOUND_JNI_LIBS=" jsoundalsa"</Elem>
+ <Elem>THIS_FILE="PLATFORM_API_LinuxOS_ALSA_CommonUtils.c"</Elem>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_IN=TRUE</Elem>
+ <Elem>USE_PLATFORM_MIDI_OUT=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ <Elem>X_PLATFORM=X_LINUX</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libsplashscreen">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="splashscreen_sys.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.instrument">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.instrument/share/native/libinstrument</pElem>
+ <pElem>../../jdk/src/java.instrument/unix/native/libinstrument</pElem>
+ <pElem>../../build/support/headers/java.instrument</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>JPLIS_LOGGING</Elem>
+ <Elem>THIS_FILE="EncodingSupport.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.instrument/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="EncodingSupport_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.management">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.management/share/native/include</pElem>
+ <pElem>../../jdk/src/java.management/share/native/libmanagement</pElem>
+ <pElem>../../jdk/src/java.management/unix/native/libmanagement</pElem>
+ <pElem>../../build/support/headers/java.management</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="ClassLoadingImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.management/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="FileSystemImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.prefs">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.prefs/unix/native/libprefs</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="FileSystemPreferences.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.security.jgss">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.security.jgss/share/native/libj2gss</pElem>
+ <pElem>../../jdk/src/java.security.jgss/unix/native/libj2gss</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.security.jgss</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="GSSLibStub.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.security.jgss/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="NativeFunc.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.smartcardio">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.smartcardio/share/native/libj2pcsc</pElem>
+ <pElem>../../jdk/src/java.smartcardio/unix/native/libj2pcsc</pElem>
+ <pElem>../../jdk/src/java.smartcardio/unix/native/libj2pcsc/MUSCLE</pElem>
+ <pElem>../../build/support/headers/java.smartcardio</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="pcsc.c"</Elem>
+ <Elem>__sun_jdk</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.smartcardio/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="pcsc_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.attach">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/jdk.attach</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="VirtualMachineImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.crypto.ec">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>MP_API_COMPATIBLE</Elem>
+ <Elem>NSS_ECC_MORE_THAN_SUITE_B</Elem>
+ <Elem>THIS_FILE="ec.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="ECC_JNI.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.crypto.cryptoki">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11</pElem>
+ <pElem>../../jdk/src/jdk.crypto.cryptoki/unix/native/libj2pkcs11</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../build/support/headers/jdk.crypto.cryptoki</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="j2secmod.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.crypto.cryptoki/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="j2secmod_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="socketTransport.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent/share/native/libdt_socket">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libdt_socket</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/unix/native/libdt_socket</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/export</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>USE_MMAP</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent/share/native/libjdwp">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/export</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/include</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/unix/native/libjdwp</pElem>
+ <pElem>../../build/support/headers/jdk.jdwp.agent</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>JDWP_LOGGING</Elem>
+ <Elem>THIS_FILE="ArrayReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="socket_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent/unix/native/libdt_socket">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libdt_socket</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/unix/native/libdt_socket</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/export</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>USE_MMAP</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent/unix/native/libjdwp">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/export</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/include</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/unix/native/libjdwp</pElem>
+ <pElem>../../build/support/headers/jdk.jdwp.agent</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>JDWP_LOGGING</Elem>
+ <Elem>THIS_FILE="exec_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.management">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.management/share/native/include</pElem>
+ <pElem>../../jdk/src/jdk.management/share/native/libmanagement_ext</pElem>
+ <pElem>../../jdk/src/jdk.management/unix/native/libmanagement_ext</pElem>
+ <pElem>../../jdk/src/jdk.management/linux/native/libmanagement_ext</pElem>
+ <pElem>../../build/support/headers/jdk.management</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="UnixOperatingSystem.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.management/share">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="DiagnosticCommandImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.management/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="OperatingSystemImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.pack">
+ <ccTool>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>FULL</Elem>
+ <Elem>THIS_FILE="bands.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.pack/share/native/common-unpack">
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/jdk.pack/share/native/common-unpack</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>NO_ZLIB</Elem>
+ <Elem>UNPACK_JNI</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.pack/share/native/libunpack">
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/jdk.pack/share/native/common-unpack</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>NO_ZLIB</Elem>
+ <Elem>THIS_FILE="jni.cpp"</Elem>
+ <Elem>UNPACK_JNI</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.pack/share/native/unpack200">
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.pack/share/native/common-unpack</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libzip/zlib</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="main.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.sctp">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/libjava</pElem>
+ <pElem>../../build/support/headers/jdk.sctp</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="SctpChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.security.auth">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/linux/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/jdk.security.auth</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="Unix.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ </conf>
+ <conf name="Solaris_64" type="0">
+ <toolsSet>
+ <compilerSet>default</compilerSet>
+ <dependencyChecking>false</dependencyChecking>
+ <rebuildPropChanged>false</rebuildPropChanged>
+ </toolsSet>
+ <flagsDictionary>
+ <element flagsID="0" commonFlags="-m64"/>
+ <element flagsID="1" commonFlags="-m64 -g"/>
+ <element flagsID="2" commonFlags="-m64 -g -g"/>
+ <element flagsID="3" commonFlags="-m64 -g -g -g"/>
+ <element flagsID="4" commonFlags="-m64 -g -m64 -g -g"/>
+ </flagsDictionary>
+ <codeAssistance>
+ <transientMacros>
+ <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
+ </transientMacros>
+ </codeAssistance>
+ <makefileType>
+ <makeTool>
+ <buildCommandWorkingDir>../..</buildCommandWorkingDir>
+ <buildCommand>gmake -f Makefile images</buildCommand>
+ <cleanCommand>gmake -f Makefile clean</cleanCommand>
+ <executablePath></executablePath>
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </makeTool>
+ <preBuild>
+ <preBuildCommandWorkingDir>../..</preBuildCommandWorkingDir>
+ <preBuildCommand>sh ../configure --with-debug-level=slowdebug --disable-zip-debug-info</preBuildCommand>
+ </preBuild>
+ </makefileType>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64_clone.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64_clone.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64_expand.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64_expand.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64_format.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64_format.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64_gen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64_gen.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64_misc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64_misc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64_peephole.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64_peephole.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/ad_x86_64_pipeline.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ad_x86_64_pipeline.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/adfiles/dfa_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="dfa_x86_64.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/jvmtifiles/bytecodeInterpreterWithChecks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/jvmtifiles/jvmtiEnter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiEnter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/gensrc/jvmtifiles/jvmtiEnterTrace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiEnterTrace.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../build/hotspot/variant-server/support/dtrace/JvmOffsets.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../build/support/gensrc/java.desktop/_x11wrappers/sizer.64.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="0">
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/abstractInterpreter_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/assembler_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="assembler_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_CodeStubs_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_CodeStubs_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_FpuStackSim_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_FpuStackSim_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_FrameMap_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_FrameMap_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_LIRAssembler_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_LIRGenerator_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_LIRGenerator_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_LinearScan_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_LinearScan_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_MacroAssembler_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_MacroAssembler_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c1_Runtime1_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_Runtime1_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/c2_init_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c2_init_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/compiledIC_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="compiledIC_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/debug_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="debug_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/depChecker_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="depChecker_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/frame_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="frame_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/icBuffer_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="icBuffer_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/icache_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="icache_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/interp_masm_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="interp_masm_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/interpreterRT_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="interpreterRT_x86_64.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/jniFastGetField_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jniFastGetField_x86_64.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/jvmciCodeInstaller_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmciCodeInstaller_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="macroAssembler_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_cos.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="macroAssembler_x86_cos.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_exp.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="macroAssembler_x86_exp.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_log.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="macroAssembler_x86_log.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_log10.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="macroAssembler_x86_log10.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_pow.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="macroAssembler_x86_pow.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_sha.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="macroAssembler_x86_sha.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_sin.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="macroAssembler_x86_sin.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/macroAssembler_x86_tan.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="macroAssembler_x86_tan.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/metaspaceShared_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="metaspaceShared_x86_64.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/methodHandles_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="methodHandles_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/nativeInst_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="nativeInst_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/registerMap_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="registerMap_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/register_definitions_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="register_definitions_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/register_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="register_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/relocInfo_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="relocInfo_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/runtime_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="runtime_x86_64.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/sharedRuntime_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="sharedRuntime_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/sharedRuntime_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="sharedRuntime_x86_64.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/stubGenerator_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="stubGenerator_x86_64.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/stubRoutines_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="stubRoutines_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/stubRoutines_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="stubRoutines_x86_64.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="templateInterpreterGenerator_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="templateInterpreterGenerator_x86_64.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/templateTable_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="templateTable_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/vm_version_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vm_version_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/vmreg_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vmreg_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/cpu/x86/vm/vtableStubs_x86_64.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vtableStubs_x86_64.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/jdk.hotspot.agent/share/native/libsaproc/sadis.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/jdk.hotspot.agent/solaris/native/libsaproc/saproc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/posix/vm/os_posix.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/posix/vm/threadLocalStorage_posix.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="threadLocalStorage_posix.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/posix/vm/vmError_posix.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vmError_posix.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/solaris/dtrace/generateJvmOffsets.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <incDir>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/solaris/dtrace/generateJvmOffsetsMain.c"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <incDir>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="generateJvmOffsetsMain.c"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/solaris/dtrace/jvm_dtrace.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="1">
+ <incDir>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/os/solaris/dtrace/libjvm_db.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="1">
+ <incDir>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../build/hotspot/variant-server/support/dtrace</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="libjvm_db.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/os/solaris/vm/attachListener_solaris.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/solaris/vm/decoder_solaris.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="decoder_solaris.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/solaris/vm/jsig.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="1">
+ </cTool>
+ </item>
+ <item path="../../hotspot/src/os/solaris/vm/jvm_solaris.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvm_solaris.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/solaris/vm/mutex_solaris.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="mutex_solaris.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/solaris/vm/osThread_solaris.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="osThread_solaris.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/solaris/vm/os_solaris.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="os_solaris.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/solaris/vm/perfMemory_solaris.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="perfMemory_solaris.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/solaris/vm/stubRoutines_solaris.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="stubRoutines_solaris.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os/solaris/vm/threadCritical_solaris.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="threadCritical_solaris.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os_cpu/solaris_x86/vm/assembler_solaris_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="os_solaris_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os_cpu/solaris_x86/vm/thread_solaris_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="thread_solaris_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/os_cpu/solaris_x86/vm/vm_version_solaris_x86.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vm_version_solaris_x86.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/adlparse.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/archDesc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="archDesc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/arena.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="arena.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/dfa.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="dfa.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/dict2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="dict2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/filebuff.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="filebuff.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/forms.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="forms.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/formsopt.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="formsopt.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/formssel.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="formssel.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/main.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="main.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/output_c.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="output_c.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/adlc/output_h.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="output_h.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/asm/assembler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/asm/codeBuffer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="codeBuffer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/asm/register.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="register.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_CFGPrinter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Canonicalizer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_Canonicalizer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Compilation.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_Compilation.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Compiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_Compiler.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Defs.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_Defs.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_FrameMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_FrameMap.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_GraphBuilder.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_GraphBuilder.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_IR.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_IR.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Instruction.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_Instruction.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_InstructionPrinter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_InstructionPrinter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_LIR.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_LIR.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_LIRAssembler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_LIRAssembler.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_LIRGenerator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_LIRGenerator.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_LinearScan.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_LinearScan.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Optimizer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_Optimizer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_RangeCheckElimination.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_RangeCheckElimination.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_Runtime1.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_Runtime1.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_ValueMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_ValueMap.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_ValueSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_ValueSet.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_ValueStack.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_ValueStack.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_ValueType.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_ValueType.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/c1/c1_globals.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c1_globals.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/bcEscapeAnalyzer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciArray.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciArrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciArrayKlass.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciBaseObject.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciBaseObject.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciCallSite.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciCallSite.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciConstant.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciConstant.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciConstantPoolCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciConstantPoolCache.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciEnv.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciEnv.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciExceptionHandler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciExceptionHandler.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciField.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciField.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciFlags.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciFlags.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciInstance.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciInstance.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciInstanceKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciInstanceKlass.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciKlass.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMemberName.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciMemberName.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMetadata.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciMetadata.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMethod.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciMethod.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMethodBlocks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciMethodBlocks.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMethodData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciMethodData.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciMethodHandle.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciMethodHandle.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciNullObject.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciNullObject.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciObjArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciObjArray.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciObjArrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciObjArrayKlass.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciObject.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciObject.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciObjectFactory.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciObjectFactory.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciReplay.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciReplay.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciSignature.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciSignature.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciStreams.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciStreams.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciSymbol.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciSymbol.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciType.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciType.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciTypeArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciTypeArray.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciTypeArrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciTypeArrayKlass.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciTypeFlow.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciTypeFlow.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/ci/ciUtilities.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ciUtilities.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/altHashing.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/bytecodeAssembler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="bytecodeAssembler.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classFileError.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="classFileError.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classFileParser.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="classFileParser.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classFileStream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="classFileStream.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classListParser.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="classListParser.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classLoader.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="classLoader.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classLoaderData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="classLoaderData.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classLoaderExt.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="classLoaderExt.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/classLoaderStats.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="classLoaderStats.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/compactHashtable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="compactHashtable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/defaultMethods.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="defaultMethods.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/dictionary.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="dictionary.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/javaAssertions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="javaAssertions.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/javaClasses.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="javaClasses.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/klassFactory.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="klassFactory.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/loaderConstraints.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="loaderConstraints.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/metadataOnStackMark.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="metadataOnStackMark.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/moduleEntry.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="moduleEntry.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/modules.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="modules.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/packageEntry.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="packageEntry.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/placeholders.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="placeholders.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/resolutionErrors.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="resolutionErrors.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/sharedPathsMiscInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="sharedPathsMiscInfo.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/stackMapFrame.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="stackMapFrame.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/stackMapTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="stackMapTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/stringTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="stringTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/symbolTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="symbolTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/systemDictionary.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="systemDictionary.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/verificationType.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="verificationType.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/verifier.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="verifier.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/classfile/vmSymbols.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vmSymbols.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/codeBlob.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/codeCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="codeCache.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/compiledIC.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="compiledIC.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/compiledMethod.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="compiledMethod.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/compressedStream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="compressedStream.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/debugInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="debugInfo.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/debugInfoRec.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="debugInfoRec.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/dependencies.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="dependencies.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/dependencyContext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="dependencyContext.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/exceptionHandlerTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="exceptionHandlerTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/icBuffer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="icBuffer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/location.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="location.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/nmethod.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="nmethod.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/oopRecorder.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="oopRecorder.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/pcDesc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="pcDesc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/relocInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="relocInfo.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/scopeDesc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="scopeDesc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/stubs.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="stubs.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/vmreg.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vmreg.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/code/vtableStubs.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vtableStubs.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/abstractCompiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/compileBroker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="compileBroker.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/compileLog.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="compileLog.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/compileTask.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="compileTask.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/compilerDirectives.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="compilerDirectives.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/compilerOracle.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="compilerOracle.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/directivesParser.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="directivesParser.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/disassembler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="disassembler.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/methodLiveness.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="methodLiveness.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/methodMatcher.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="methodMatcher.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/compiler/oopMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="oopMap.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/adaptiveFreeList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/allocationStats.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="allocationStats.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/cmsCollectorPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsCollectorPolicy.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/cmsLockVerifier.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsLockVerifier.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/cmsOopClosures.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsOopClosures.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/compactibleFreeListSpace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="compactibleFreeListSpace.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/concurrentMarkSweepGeneration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="concurrentMarkSweepGeneration.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/concurrentMarkSweepThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="concurrentMarkSweepThread.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/freeChunk.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="freeChunk.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/gSpaceCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gSpaceCounters.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/parCardTableModRefBS.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="parCardTableModRefBS.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/parNewGeneration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="parNewGeneration.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/parOopClosures.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="parOopClosures.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/promotionInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="promotionInfo.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/vmCMSOperations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vmCMSOperations.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/cms/yieldingWorkgroup.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="yieldingWorkgroup.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/bufferingOopClosure.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/collectionSetChooser.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="collectionSetChooser.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/concurrentG1Refine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="concurrentG1Refine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/concurrentG1RefineThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="concurrentG1RefineThread.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/concurrentMarkThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="concurrentMarkThread.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/dirtyCardQueue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="dirtyCardQueue.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1AllocRegion.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1AllocRegion.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1Allocator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1Allocator.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1Allocator_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1Allocator_ext.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1Analytics.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1Analytics.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1BiasedArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1BiasedArray.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1BlockOffsetTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1BlockOffsetTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CardCounts.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1CardCounts.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CardLiveData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1CardLiveData.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CodeBlobClosure.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1CodeBlobClosure.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CodeCacheRemSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1CodeCacheRemSet.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CollectedHeap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1CollectedHeap.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CollectedHeap_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1CollectedHeap_ext.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CollectionSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1CollectionSet.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1CollectorPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1CollectorPolicy.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1ConcurrentMark.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1ConcurrentMark.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1DefaultPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1DefaultPolicy.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1EvacFailure.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1EvacFailure.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1EvacStats.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1EvacStats.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1FromCardCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1FromCardCache.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1GCPhaseTimes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1GCPhaseTimes.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1HeapSizingPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1HeapSizingPolicy.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1HeapSizingPolicy_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1HeapSizingPolicy_ext.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1HeapTransition.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1HeapTransition.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1HeapVerifier.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1HeapVerifier.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1HotCardCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1HotCardCache.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1IHOPControl.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1IHOPControl.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1MMUTracker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1MMUTracker.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1MarkSweep.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1MarkSweep.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1MarkSweep_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1MarkSweep_ext.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1MonitoringSupport.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1MonitoringSupport.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1OopClosures.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1OopClosures.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1PageBasedVirtualSpace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1PageBasedVirtualSpace.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1ParScanThreadState.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1ParScanThreadState.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1ParScanThreadState_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1ParScanThreadState_ext.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1Predictions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1Predictions.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RegionToSpaceMapper.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1RegionToSpaceMapper.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RemSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1RemSet.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RemSetSummary.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1RemSetSummary.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RootClosures.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1RootClosures.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RootClosures_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1RootClosures_ext.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1RootProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1RootProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1SATBCardTableModRefBS.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1SATBCardTableModRefBS.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1StringDedup.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1StringDedup.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1StringDedupQueue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1StringDedupQueue.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1StringDedupStat.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1StringDedupStat.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1StringDedupTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1StringDedupTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1StringDedupThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1StringDedupThread.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1SurvivorRegions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1SurvivorRegions.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1YoungGenSizer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1YoungGenSizer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1YoungRemSetSamplingThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1YoungRemSetSamplingThread.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/g1_globals.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1_globals.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/hSpaceCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hSpaceCounters.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegion.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="heapRegion.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegionManager.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="heapRegionManager.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegionRemSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="heapRegionRemSet.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegionSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="heapRegionSet.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegionTracer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="heapRegionTracer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/heapRegionType.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="heapRegionType.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/ptrQueue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ptrQueue.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/satbMarkQueue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="satbMarkQueue.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/sparsePRT.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="sparsePRT.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/survRateGroup.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="survRateGroup.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/suspendibleThreadSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="suspendibleThreadSet.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/vm_operations_g1.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vm_operations_g1.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/g1/workerDataArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="workerDataArray.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/adjoiningGenerations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/adjoiningVirtualSpaces.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="adjoiningVirtualSpaces.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/asPSOldGen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="asPSOldGen.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/asPSYoungGen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="asPSYoungGen.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/cardTableExtension.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="cardTableExtension.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/gcAdaptivePolicyCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gcAdaptivePolicyCounters.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/gcTaskManager.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gcTaskManager.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/gcTaskThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gcTaskThread.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/generationSizer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="generationSizer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/immutableSpace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="immutableSpace.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/mutableNUMASpace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="mutableNUMASpace.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/mutableSpace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="mutableSpace.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/objectStartArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="objectStartArray.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/parMarkBitMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="parMarkBitMap.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/parallelScavengeHeap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="parallelScavengeHeap.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/pcTasks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="pcTasks.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psAdaptiveSizePolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="psAdaptiveSizePolicy.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psCompactionManager.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="psCompactionManager.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psGCAdaptivePolicyCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="psGCAdaptivePolicyCounters.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psGenerationCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="psGenerationCounters.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psMarkSweep.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="psMarkSweep.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psMarkSweepDecorator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="psMarkSweepDecorator.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psOldGen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="psOldGen.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psParallelCompact.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="psParallelCompact.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psPromotionLAB.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="psPromotionLAB.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psPromotionManager.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="psPromotionManager.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psScavenge.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="psScavenge.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psTasks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="psTasks.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psVirtualspace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="psVirtualspace.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/psYoungGen.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="psYoungGen.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/spaceCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="spaceCounters.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/parallel/vmPSOperations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vmPSOperations.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/serial/cSpaceCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/serial/defNewGeneration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="defNewGeneration.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/serial/genMarkSweep.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="genMarkSweep.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/serial/markSweep.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="markSweep.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/serial/tenuredGeneration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="tenuredGeneration.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/adaptiveSizePolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/ageTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ageTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/ageTableTracer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ageTableTracer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/allocTracer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="allocTracer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/barrierSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="barrierSet.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/blockOffsetTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="blockOffsetTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/cardGeneration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="cardGeneration.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/cardTableModRefBS.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="cardTableModRefBS.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/cardTableModRefBSForCTRS.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="cardTableModRefBSForCTRS.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/cardTableRS.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="cardTableRS.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/collectedHeap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="collectedHeap.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/collectorCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="collectorCounters.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/collectorPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="collectorPolicy.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/concurrentGCThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="concurrentGCThread.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcCause.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gcCause.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcId.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gcId.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcLocker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gcLocker.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcPolicyCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gcPolicyCounters.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcStats.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gcStats.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcTimer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gcTimer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcTrace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gcTrace.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcTraceSend.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gcTraceSend.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcTraceTime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gcTraceTime.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/gcUtil.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gcUtil.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/genCollectedHeap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="genCollectedHeap.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/genOopClosures.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="genOopClosures.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/generation.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="generation.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/generationCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="generationCounters.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/generationSpec.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="generationSpec.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/memset_with_concurrent_readers.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="memset_with_concurrent_readers.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/objectCountEventSender.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="objectCountEventSender.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/plab.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="plab.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/preservedMarks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="preservedMarks.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/referencePendingListLocker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="referencePendingListLocker.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/referencePolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="referencePolicy.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/referenceProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="referenceProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/space.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="space.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/spaceDecorator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="spaceDecorator.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/strongRootsScope.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="strongRootsScope.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/taskqueue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="taskqueue.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/threadLocalAllocBuffer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="threadLocalAllocBuffer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/vmGCOperations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vmGCOperations.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/gc/shared/workgroup.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="workgroup.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/abstractInterpreter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="bytecode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecodeHistogram.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="bytecodeHistogram.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecodeInterpreter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="bytecodeInterpreter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecodeStream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="bytecodeStream.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecodeTracer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="bytecodeTracer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/bytecodes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="bytecodes.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/cppInterpreter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="cppInterpreter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/cppInterpreterGenerator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="cppInterpreterGenerator.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/interpreter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="interpreter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/interpreterRuntime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="interpreterRuntime.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/invocationCounter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="invocationCounter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/linkResolver.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="linkResolver.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/oopMapCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="oopMapCache.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/rewriter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="rewriter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/templateInterpreter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="templateInterpreter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/templateInterpreterGenerator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="templateInterpreterGenerator.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/interpreter/templateTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="templateTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciCodeInstaller.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciCompiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmciCompiler.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciCompilerToVM.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmciCompilerToVM.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciEnv.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmciEnv.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciJavaClasses.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmciJavaClasses.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmciRuntime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmciRuntime.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/jvmci_globals.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmci_globals.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/jvmci/vmStructs_jvmci.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vmStructs_jvmci.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/libadt/dict.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/libadt/set.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="set.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/libadt/vectset.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vectset.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/log.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logConfiguration.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="logConfiguration.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logDecorations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="logDecorations.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logDecorators.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="logDecorators.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logDiagnosticCommand.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="logDiagnosticCommand.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logFileOutput.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="logFileOutput.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logFileStreamOutput.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="logFileStreamOutput.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logLevel.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="logLevel.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logMessageBuffer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="logMessageBuffer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logOutput.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="logOutput.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logOutputList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="logOutputList.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logStream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="logStream.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logTag.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="logTag.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logTagLevelExpression.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="logTagLevelExpression.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logTagSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="logTagSet.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/logging/logTagSetDescriptions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="logTagSetDescriptions.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/allocation.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/binaryTreeDictionary.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="binaryTreeDictionary.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/filemap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="filemap.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/freeBlockDictionary.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="freeBlockDictionary.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/freeList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="freeList.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/guardedMemory.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="guardedMemory.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/heap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="heap.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/heapInspection.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="heapInspection.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/iterator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="iterator.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/memRegion.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="memRegion.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/metachunk.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="metachunk.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/metaspace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="metaspace.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/metaspaceCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="metaspaceCounters.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/metaspaceShared.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="metaspaceShared.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/metaspaceTracer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="metaspaceTracer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/oopFactory.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="oopFactory.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/operator_new.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="operator_new.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/resourceArea.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="resourceArea.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/universe.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="universe.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/universe_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="universe_ext.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/memory/virtualspace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="virtualspace.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/annotations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/arrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="arrayKlass.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/arrayOop.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="arrayOop.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/compiledICHolder.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="compiledICHolder.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/constMethod.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="constMethod.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/constantPool.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="constantPool.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/cpCache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="cpCache.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/generateOopMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="generateOopMap.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/instanceKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="instanceKlass.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/instanceMirrorKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="instanceMirrorKlass.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/instanceOop.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="instanceOop.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/instanceRefKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="instanceRefKlass.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/klass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="klass.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/klassVtable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="klassVtable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/markOop.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="markOop.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/metadata.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="metadata.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/method.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="method.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/methodCounters.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="methodCounters.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/methodData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="methodData.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/objArrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="objArrayKlass.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/objArrayOop.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="objArrayOop.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/oop.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="oop.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/oopsHierarchy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="oopsHierarchy.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/symbol.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="symbol.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/oops/typeArrayKlass.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="typeArrayKlass.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/addnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/arraycopynode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="arraycopynode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/block.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="block.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/buildOopMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="buildOopMap.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/bytecodeInfo.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="bytecodeInfo.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/c2_globals.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c2_globals.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/c2compiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="c2compiler.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/callGenerator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="callGenerator.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/callnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="callnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/castnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="castnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/cfgnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="cfgnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/chaitin.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="chaitin.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/classes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="classes.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/coalesce.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="coalesce.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/compile.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="compile.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/connode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="connode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/convertnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="convertnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/countbitsnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="countbitsnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/divnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="divnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/doCall.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="doCall.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/domgraph.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="domgraph.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/escape.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="escape.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/gcm.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gcm.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/generateOptoStub.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="generateOptoStub.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/graphKit.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="graphKit.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/idealGraphPrinter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="idealGraphPrinter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/idealKit.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="idealKit.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/ifg.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ifg.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/ifnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ifnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/indexSet.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="indexSet.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/intrinsicnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="intrinsicnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/lcm.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="lcm.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/library_call.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="library_call.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/live.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="live.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/locknode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="locknode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/loopPredicate.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="loopPredicate.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/loopTransform.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="loopTransform.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/loopUnswitch.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="loopUnswitch.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/loopnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="loopnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/loopopts.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="loopopts.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/machnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="machnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/macro.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="macro.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/macroArrayCopy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="macroArrayCopy.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/matcher.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="matcher.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/mathexactnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="mathexactnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/memnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="memnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/movenode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="movenode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/mulnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="mulnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/multnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="multnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/narrowptrnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="narrowptrnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/node.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="node.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/opaquenode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="opaquenode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/opcodes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="opcodes.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/output.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="output.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/parse1.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="parse1.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/parse2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="parse2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/parse3.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="parse3.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/parseHelper.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="parseHelper.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/phase.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="phase.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/phaseX.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="phaseX.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/postaloc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="postaloc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/reg_split.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="reg_split.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/regalloc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="regalloc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/regmask.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="regmask.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/replacednodes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="replacednodes.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/rootnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="rootnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/runtime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="runtime.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/split_if.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="split_if.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/stringopts.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="stringopts.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/subnode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="subnode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/superword.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="superword.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/type.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="type.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/opto/vectornode.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vectornode.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/evmCompat.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="evmCompat.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/forte.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="forte.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jni.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jni.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jniCheck.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jniCheck.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jniFastGetField.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jniFastGetField.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvm.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvm.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiClassFileReconstituter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiClassFileReconstituter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiCodeBlobEvents.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiCodeBlobEvents.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiEnv.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiEnv.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiEnvBase.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiEnvBase.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiEnvThreadState.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiEnvThreadState.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiEventController.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiEventController.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiExport.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiExport.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiExtensions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiExtensions.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiGetLoadedClasses.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiGetLoadedClasses.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiImpl.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiImpl.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiManageCapabilities.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiManageCapabilities.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiRawMonitor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiRawMonitor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiRedefineClasses.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiRedefineClasses.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiTagMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiTagMap.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiThreadState.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiThreadState.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiTrace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiTrace.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/jvmtiUtil.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jvmtiUtil.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/methodComparator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="methodComparator.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/methodHandles.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="methodHandles.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/nativeLookup.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="nativeLookup.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/perf.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="perf.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/privilegedStack.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="privilegedStack.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/stackwalk.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="stackwalk.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/unsafe.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="unsafe.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/wbtestmethods/parserTests.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/whitebox.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="whitebox.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/prims/whitebox_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="whitebox_ext.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/advancedThresholdPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/arguments.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="arguments.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/atomic.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="atomic.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/basicLock.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="basicLock.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/biasedLocking.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="biasedLocking.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagConstraintList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="commandLineFlagConstraintList.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagConstraintsCompiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="commandLineFlagConstraintsCompiler.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagConstraintsGC.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="commandLineFlagConstraintsGC.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagConstraintsRuntime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="commandLineFlagConstraintsRuntime.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagRangeList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="commandLineFlagRangeList.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/commandLineFlagWriteableList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="commandLineFlagWriteableList.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/compilationPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="compilationPolicy.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/deoptimization.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="deoptimization.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/fieldDescriptor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="fieldDescriptor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/fieldType.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="fieldType.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/fprofiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="fprofiler.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/frame.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="frame.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/globals.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="globals.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/handles.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="handles.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/icache.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="icache.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/init.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="init.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/interfaceSupport.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="interfaceSupport.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/java.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="java.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/javaCalls.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="javaCalls.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/jniHandles.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jniHandles.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/jniPeriodicChecker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jniPeriodicChecker.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/memprofiler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="memprofiler.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/monitorChunk.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="monitorChunk.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/mutex.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="mutex.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/mutexLocker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="mutexLocker.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/objectMonitor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="objectMonitor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/orderAccess.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="orderAccess.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/os.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="os.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/osThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="osThread.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/park.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="park.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/perfData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="perfData.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/perfMemory.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="perfMemory.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/reflection.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="reflection.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/reflectionUtils.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="reflectionUtils.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/relocator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="relocator.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/rframe.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="rframe.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/rtmLocking.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="rtmLocking.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/safepoint.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="safepoint.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/semaphore.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="semaphore.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/serviceThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="serviceThread.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/sharedRuntime.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="sharedRuntime.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/sharedRuntimeTrans.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="sharedRuntimeTrans.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/sharedRuntimeTrig.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="sharedRuntimeTrig.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/signature.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="signature.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/simpleThresholdPolicy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="simpleThresholdPolicy.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/stackValue.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="stackValue.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/stackValueCollection.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="stackValueCollection.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/statSampler.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="statSampler.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/stubCodeGenerator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="stubCodeGenerator.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/stubRoutines.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="stubRoutines.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/sweeper.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="sweeper.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/synchronizer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="synchronizer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/task.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="task.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/thread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="thread.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/thread_ext.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="thread_ext.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/timer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="timer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/timerTrace.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="timerTrace.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/unhandledOops.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="unhandledOops.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vframe.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vframe.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vframeArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vframeArray.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vframe_hp.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vframe_hp.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vmStructs.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vmStructs.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vmThread.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vmThread.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vm_operations.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vm_operations.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/runtime/vm_version.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>CPU="amd64"</Elem>
+ <Elem>DEBUG_LEVEL="slowdebug"</Elem>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_VERSION_STRING="9-internal+0-2016-06-21-161756.vkvashin.jdktrunk"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>THIS_FILE="vm_version.cpp"</Elem>
+ <Elem>VERSION_BUILD=0</Elem>
+ <Elem>VERSION_MAJOR=9</Elem>
+ <Elem>VERSION_MINOR=0</Elem>
+ <Elem>VERSION_NUMBER="9"</Elem>
+ <Elem>VERSION_OPT="2016-06-21-161756.vkvashin.jdktrunk"</Elem>
+ <Elem>VERSION_PATCH=0</Elem>
+ <Elem>VERSION_PRE="internal"</Elem>
+ <Elem>VERSION_SECURITY=0</Elem>
+ <Elem>VERSION_SHORT="9-internal"</Elem>
+ <Elem>VERSION_SPECIFICATION="9"</Elem>
+ <Elem>VERSION_STRING="9-internal+0-2016-06-21-161756.vkvashin.jdktrunk"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/attachListener.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/classLoadingService.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="classLoadingService.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/diagnosticArgument.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="diagnosticArgument.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/diagnosticCommand.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="diagnosticCommand.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/diagnosticFramework.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="diagnosticFramework.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/dtraceAttacher.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="dtraceAttacher.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/g1MemoryPool.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="g1MemoryPool.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/gcNotifier.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="gcNotifier.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/heapDumper.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="heapDumper.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/lowMemoryDetector.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="lowMemoryDetector.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/mallocSiteTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="mallocSiteTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/mallocTracker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="mallocTracker.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/management.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="management.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memBaseline.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="memBaseline.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memReporter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="memReporter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memTracker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="memTracker.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memoryManager.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="memoryManager.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memoryPool.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="memoryPool.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/memoryService.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="memoryService.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/nmtCommon.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="nmtCommon.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/nmtDCmd.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="nmtDCmd.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/psMemoryPool.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="psMemoryPool.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/runtimeService.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="runtimeService.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/threadService.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="threadService.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/virtualMemoryTracker.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="virtualMemoryTracker.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/services/writeableFlags.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="writeableFlags.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/trace/traceBackend.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/accessFlags.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/bitMap.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="bitMap.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/chunkedList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="chunkedList.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/constantTag.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="constantTag.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/copy.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="copy.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/debug.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="debug.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/decoder.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="decoder.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/decoder_elf.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="decoder_elf.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/elfFile.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="elfFile.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/elfFuncDescTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="elfFuncDescTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/elfStringTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="elfStringTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/elfSymbolTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="elfSymbolTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/errorReporter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="errorReporter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/events.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="events.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/exceptions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="exceptions.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/globalDefinitions.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="globalDefinitions.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/growableArray.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="growableArray.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/hashtable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hashtable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/histogram.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="histogram.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/intHisto.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="intHisto.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/internalVMTests.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="internalVMTests.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/json.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="json.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/linkedlist.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="linkedlist.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/nativeCallStack.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="nativeCallStack.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/numberSeq.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="numberSeq.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/ostream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ostream.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/preserveException.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="preserveException.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/quickSort.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="quickSort.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/resourceHash.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="resourceHash.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/sizes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="sizes.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/stringUtils.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="stringUtils.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/ticks.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ticks.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/utf8.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="utf8.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/vmError.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="vmError.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/src/share/vm/utilities/xmlstream.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="xmlstream.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/test/native/gtestLauncher.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <incDir>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="gtestLauncher.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/test/native/gtestMain.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <incDir>
+ <pElem>../../hotspot/test/native</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>GTEST_HAS_EXCEPTIONS=0</Elem>
+ <Elem>THIS_FILE="gtestMain.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../hotspot/test/native/runtime/test_os.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../hotspot/test/native/utilities/test_quicksort.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/launcher/main.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="4">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_acos.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_asin.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_asin.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_atan2.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_atan2.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_atanh.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_atanh.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_cosh.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_cosh.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_exp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_exp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_fmod.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_fmod.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_log.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_log.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_log10.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_log10.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_rem_pio2.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_rem_pio2.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_remainder.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_remainder.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_scalb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_scalb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_sinh.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_sinh.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/e_sqrt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="e_sqrt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/k_cos.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="k_cos.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/k_rem_pio2.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="k_rem_pio2.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/k_sin.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="k_sin.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/k_standard.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="k_standard.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/k_tan.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="k_tan.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_atan.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_atan.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_ceil.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_ceil.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_copysign.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_copysign.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_cos.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_cos.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_expm1.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_expm1.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_fabs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_fabs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_finite.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_finite.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_floor.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_floor.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_frexp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_frexp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_ilogb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_ilogb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_isnan.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_isnan.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_ldexp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_ldexp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_lib_version.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_lib_version.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_log1p.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_log1p.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_logb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_logb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_matherr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_matherr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_modf.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_modf.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_nextafter.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_nextafter.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_rint.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_rint.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_scalbn.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_scalbn.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_signgam.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_signgam.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_significand.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_significand.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_sin.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_sin.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_tan.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_tan.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/s_tanh.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="s_tanh.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_acos.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_acos.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_asin.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_asin.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_atan2.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_atan2.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_atanh.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_atanh.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_cosh.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_cosh.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_exp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_exp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_fmod.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_fmod.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_log.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_log.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_log10.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_log10.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_remainder.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_remainder.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_scalb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_scalb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_sinh.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_sinh.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libfdlibm/w_sqrt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="w_sqrt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/AccessController.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Array.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Array.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/AtomicLong.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AtomicLong.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/BootLoader.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="BootLoader.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Class.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Class.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/ClassLoader.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ClassLoader.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/ConstantPool.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ConstantPool.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Double.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Double.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Executable.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Executable.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Field.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Field.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/FileInputStream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileInputStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Float.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Float.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Module.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Module.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/NativeAccessors.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="NativeAccessors.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Object.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Object.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/ObjectInputStream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ObjectInputStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/ObjectOutputStream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ObjectOutputStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/ObjectStreamClass.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ObjectStreamClass.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/RandomAccessFile.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="RandomAccessFile.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Reflection.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Reflection.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Runtime.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Runtime.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/SecurityManager.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SecurityManager.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Shutdown.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Shutdown.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Signal.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Signal.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/StackFrameInfo.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="StackFrameInfo.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/StackStreamFactory.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="StackStreamFactory.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/StrictMath.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="StrictMath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/String.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="String.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/StringCoding.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="StringCoding.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/System.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="System.c"</Elem>
+ <Elem>VERSION_BUILD=0</Elem>
+ <Elem>VERSION_MAJOR=9</Elem>
+ <Elem>VERSION_MINOR=0</Elem>
+ <Elem>VERSION_NUMBER="9"</Elem>
+ <Elem>VERSION_OPT="2016-06-21-161756.vkvashin.jdktrunk"</Elem>
+ <Elem>VERSION_PATCH=0</Elem>
+ <Elem>VERSION_PRE="internal"</Elem>
+ <Elem>VERSION_SECURITY=0</Elem>
+ <Elem>VERSION_SHORT="9-internal"</Elem>
+ <Elem>VERSION_SPECIFICATION="9"</Elem>
+ <Elem>VERSION_STRING="9-internal+0-2016-06-21-161756.vkvashin.jdktrunk"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Thread.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Thread.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/Throwable.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Throwable.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/TimeZone.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="TimeZone.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/VM.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="VM.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/VMSupport.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="VMSupport.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/check_version.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="check_version.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/io_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="io_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/jdk_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="jdk_util.c"</Elem>
+ <Elem>VERSION_BUILD=0</Elem>
+ <Elem>VERSION_MAJOR=9</Elem>
+ <Elem>VERSION_MINOR=0</Elem>
+ <Elem>VERSION_NUMBER="9"</Elem>
+ <Elem>VERSION_OPT="2016-06-21-161756.vkvashin.jdktrunk"</Elem>
+ <Elem>VERSION_PATCH=0</Elem>
+ <Elem>VERSION_PRE="internal"</Elem>
+ <Elem>VERSION_SECURITY=0</Elem>
+ <Elem>VERSION_SHORT="9-internal"</Elem>
+ <Elem>VERSION_SPECIFICATION="9"</Elem>
+ <Elem>VERSION_STRING="9-internal+0-2016-06-21-161756.vkvashin.jdktrunk"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/jio.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="jio.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/jni_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="jni_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjava/verify_stub.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="verify_stub.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjimage/NativeImageBuffer.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjimage/endian.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="endian.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjimage/imageDecompressor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="imageDecompressor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjimage/imageFile.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="imageFile.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjimage/jimage.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="jimage.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/args.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/java.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="java.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/jli_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="jli_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/parse_manifest.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="parse_manifest.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/splashscreen_stubs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_stubs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libjli/wildcard.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="wildcard.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnet/DatagramPacket.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnet/Inet4Address.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Inet4Address.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnet/Inet6Address.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Inet6Address.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnet/InetAddress.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="InetAddress.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnet/net_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="net_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libnio/nio_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libverify/check_code.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libverify/check_format.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="check_format.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/Adler32.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/CRC32.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CRC32.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/Deflater.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Deflater.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/Inflater.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Inflater.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/share/native/libzip/zip_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="zip_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/solaris/native/libjava/ProcessHandleImpl_solaris.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/solaris/native/libnet/solaris_close.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/solaris/native/libnio/ch/DevPollArrayWrapper.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/solaris/native/libnio/ch/SolarisEventPort.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SolarisEventPort.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/solaris/native/libnio/fs/SolarisNativeDispatcher.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/solaris/native/libnio/fs/SolarisWatchService.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SolarisWatchService.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/jspawnhelper/jspawnhelper.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/Console_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/FileDescriptor_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileDescriptor_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/FileInputStream_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileInputStream_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/FileOutputStream_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileOutputStream_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/ProcessEnvironment_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ProcessEnvironment_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/ProcessHandleImpl_unix.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ProcessHandleImpl_unix.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/ProcessImpl_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ProcessImpl_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/RandomAccessFile_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="RandomAccessFile_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/TimeZone_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="TimeZone_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/UnixFileSystem_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="UnixFileSystem_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/VM_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="VM_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/canonicalize_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="canonicalize_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/childproc.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="childproc.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/io_util_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="io_util_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/java_props_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="java_props_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/jdk_util_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="jdk_util_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjava/jni_util_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="jni_util_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjimage/osSupport_unix.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjli/ergo.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjli/ergo_i586.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ergo_i586.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjli/java_md_common.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="java_md_common.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libjli/java_md_solinux.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="java_md_solinux.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/DefaultProxySelector.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/Inet4AddressImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Inet4AddressImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/Inet6AddressImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Inet6AddressImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/InetAddressImplFactory.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="InetAddressImplFactory.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/NetworkInterface.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="NetworkInterface.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/PlainDatagramSocketImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PlainDatagramSocketImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/PlainSocketImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PlainSocketImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/ResolverConfigurationImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ResolverConfigurationImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/SdpSupport.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SdpSupport.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/SocketImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SocketImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/SocketInputStream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SocketInputStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/SocketOutputStream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SocketOutputStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/net_util_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="net_util_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnet/portconfig.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="portconfig.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/MappedByteBuffer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MappedByteBuffer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/DatagramChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/DatagramDispatcher.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DatagramDispatcher.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/FileChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/FileDispatcherImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileDispatcherImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/FileKey.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileKey.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/IOUtil.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IOUtil.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/InheritedChannel.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="InheritedChannel.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/NativeThread.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="NativeThread.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/Net.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Net.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/PollArrayWrapper.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PollArrayWrapper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/ServerSocketChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ServerSocketChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/SocketChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SocketChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/SocketDispatcher.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SocketDispatcher.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/UnixAsynchronousServerSocketChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="UnixAsynchronousServerSocketChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/ch/UnixAsynchronousSocketChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="UnixAsynchronousSocketChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/fs/GioFileTypeDetector.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/fs/UnixCopyFile.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="UnixCopyFile.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="UnixNativeDispatcher.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/debug/debug_assert.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/debug/debug_mem.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="debug_mem.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/debug/debug_trace.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="debug_trace.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/debug/debug_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="debug_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/medialib/mlib_ImageCopy_Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/medialib/mlib_ImageCreate.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageCreate.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/medialib/mlib_sys.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_sys.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/awt/utility/rect.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/font/AccelGlyphCache.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLBlitLoops.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLBufImgOps.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLBufImgOps.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLContext.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLContext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLFuncs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLFuncs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLMaskBlit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLMaskBlit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLMaskFill.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLMaskFill.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLPaints.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLPaints.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLRenderQueue.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLRenderQueue.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLRenderer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLRenderer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLSurfaceData.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLSurfaceData.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLTextRenderer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLTextRenderer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/common/java2d/opengl/OGLVertexCache.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="OGLVertexCache.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/BufImgSurfaceData.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="BufImgSurfaceData.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/DataBufferNative.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DataBufferNative.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/awt_ImageRep.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_ImageRep.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/awt_parseImage.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_parseImage.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils/img_colors.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils/img_globals.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="img_globals.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/dither.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="dither.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/gif/gifdecoder.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/image/imageInitIDs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="imageInitIDs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/awt/medialib/awt_ImagingLib.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/Disposer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Disposer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/SurfaceData.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SurfaceData.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/Trace.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Trace.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/AlphaMacros.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/AlphaMath.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AlphaMath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Any3Byte.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Any3Byte.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Any4Byte.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Any4Byte.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/AnyByte.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AnyByte.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/AnyInt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AnyInt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/AnyShort.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="AnyShort.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Blit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Blit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/BlitBg.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="BlitBg.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ByteBinary1Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ByteBinary1Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ByteBinary2Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ByteBinary2Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ByteBinary4Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ByteBinary4Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ByteGray.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ByteGray.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ByteIndexed.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ByteIndexed.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/DrawLine.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawLine.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/DrawParallelogram.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawParallelogram.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/DrawPath.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawPath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/DrawPolygons.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawPolygons.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/DrawRect.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawRect.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FillParallelogram.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FillParallelogram.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FillPath.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FillPath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FillRect.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FillRect.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FillSpans.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FillSpans.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FourByteAbgr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FourByteAbgr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/FourByteAbgrPre.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FourByteAbgrPre.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/GraphicsPrimitiveMgr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GraphicsPrimitiveMgr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Index12Gray.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Index12Gray.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Index8Gray.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Index8Gray.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntArgb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntArgb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntArgbBm.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntArgbBm.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntArgbPre.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntArgbPre.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntBgr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntBgr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntRgb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntRgb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/IntRgbx.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="IntRgbx.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/MapAccelFunc.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MapAccelFunc.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/MaskBlit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MaskBlit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/MaskFill.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MaskFill.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ProcessPath.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ProcessPath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ScaledBlit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ScaledBlit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/ThreeByteBgr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThreeByteBgr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/TransformHelper.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="TransformHelper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Ushort4444Argb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Ushort4444Argb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Ushort555Rgb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Ushort555Rgb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Ushort555Rgbx.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Ushort555Rgbx.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/Ushort565Rgb.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Ushort565Rgb.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/UshortGray.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="UshortGray.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/loops/UshortIndexed.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="UshortIndexed.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/pipe/BufferedMaskBlit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/pipe/BufferedRenderPipe.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="BufferedRenderPipe.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/pipe/Region.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Region.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/pipe/ShapeSpanIterator.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ShapeSpanIterator.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libawt/java2d/pipe/SpanClipRenderer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SpanClipRenderer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/DrawGlyphList.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DrawGlyphList.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/FontInstanceAdapter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="FontInstanceAdapter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/HBShaper.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="HBShaper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/freetypeScaler.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="freetypeScaler.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-blob.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer-serialize.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-buffer-serialize.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-buffer.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-buffer.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-common.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-common.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-face.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-face.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-fallback-shape.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-fallback-shape.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-font.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-font.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-font.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-font.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-layout.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-layout.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-map.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-map.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-arabic.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-arabic.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-default.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-default.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-hangul.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-hangul.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-hebrew.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-hebrew.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic-table.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-indic-table.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-indic.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-indic.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-myanmar.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-myanmar.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-thai.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-thai.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-tibetan.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-tibetan.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use-table.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-use-table.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-complex-use.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-complex-use.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-fallback.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-fallback.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape-normalize.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape-normalize.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-shape.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-shape.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-tag.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ot-tag.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-set.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-set.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape-plan.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-shape-plan.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shape.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-shape.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-shaper.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-shaper.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-ucdn.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn/ucdn.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-unicode.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-unicode.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-warning.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-warning.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/hb-jdk-font.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="hb-jdk-font.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/AlternateSubstSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/AnchorTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="AnchorTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ArabicLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ArabicLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ArabicShaping.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ArabicShaping.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/CanonData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="CanonData.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/CanonShaping.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="CanonShaping.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ClassDefinitionTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ClassDefinitionTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ContextualGlyphInsertionProc2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ContextualGlyphInsertionProc2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ContextualGlyphSubstProc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ContextualGlyphSubstProc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ContextualGlyphSubstProc2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ContextualGlyphSubstProc2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ContextualSubstSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ContextualSubstSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/CoverageTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="CoverageTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/CursiveAttachmentSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="CursiveAttachmentSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/DeviceTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="DeviceTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ExtensionSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ExtensionSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/Features.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="Features.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GDEFMarkFilter.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="GDEFMarkFilter.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GXLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="GXLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GXLayoutEngine2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="GXLayoutEngine2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphDefinitionTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphDefinitionTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphIterator.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphIterator.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphLookupTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphLookupTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphPositionAdjustments.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphPositionAdjustments.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphPositioningTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphPositioningTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphPosnLookupProc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphPosnLookupProc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphSubstLookupProc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphSubstLookupProc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/GlyphSubstitutionTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="GlyphSubstitutionTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/HanLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="HanLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/HangulLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="HangulLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/IndicClassTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="IndicClassTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/IndicLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="IndicLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="IndicRearrangementProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/IndicRearrangementProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="IndicRearrangementProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/IndicReordering.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="IndicReordering.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/KernTable.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="KernTable.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/KhmerLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="KhmerLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/KhmerReordering.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="KhmerReordering.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LEFontInstance.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="LEFontInstance.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LEGlyphStorage.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="LEGlyphStorage.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LEInsertionList.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="LEInsertionList.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="LayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LigatureSubstProc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="LigatureSubstProc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LigatureSubstProc2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="LigatureSubstProc2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LigatureSubstSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="LigatureSubstSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LookupProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="LookupProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/LookupTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="LookupTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/Lookups.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="Lookups.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MPreFixups.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="MPreFixups.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MarkArrays.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="MarkArrays.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MarkToBasePosnSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="MarkToBasePosnSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MarkToLigaturePosnSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="MarkToLigaturePosnSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MarkToMarkPosnSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="MarkToMarkPosnSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MirroredCharData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="MirroredCharData.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MorphTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="MorphTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MorphTables2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="MorphTables2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/MultipleSubstSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="MultipleSubstSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/NonContextualGlyphSubstProc.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="NonContextualGlyphSubstProc.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/NonContextualGlyphSubstProc2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="NonContextualGlyphSubstProc2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/OpenTypeLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="OpenTypeLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/OpenTypeUtilities.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="OpenTypeUtilities.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/PairPositioningSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="PairPositioningSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ScriptAndLanguage.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ScriptAndLanguage.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ScriptAndLanguageTags.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ScriptAndLanguageTags.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SegmentArrayProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="SegmentArrayProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SegmentArrayProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="SegmentArrayProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SegmentSingleProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="SegmentSingleProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SegmentSingleProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="SegmentSingleProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ShapingTypeData.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ShapingTypeData.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SimpleArrayProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="SimpleArrayProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SimpleArrayProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="SimpleArrayProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SinglePositioningSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="SinglePositioningSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SingleSubstitutionSubtables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="SingleSubstitutionSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SingleTableProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="SingleTableProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SingleTableProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="SingleTableProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/StateTableProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="StateTableProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/StateTableProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="StateTableProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SubstitutionLookups.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="SubstitutionLookups.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SubtableProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="SubtableProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SubtableProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="SubtableProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/SunLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="SunLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ThaiLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThaiLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ThaiShaping.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThaiShaping.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ThaiStateTables.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThaiStateTables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/TibetanLayoutEngine.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="TibetanLayoutEngine.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/TibetanReordering.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="TibetanReordering.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/TrimmedArrayProcessor.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="TrimmedArrayProcessor.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/TrimmedArrayProcessor2.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="TrimmedArrayProcessor2.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/layout/ValueRecords.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="ValueRecords.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/scriptMapping.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="scriptMapping.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libfontmanager/sunFont.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="sunFont.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/imageioJPEG.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcapimin.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcapimin.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcapistd.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcapistd.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jccoefct.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jccoefct.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jccolor.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jccolor.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcdctmgr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcdctmgr.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jchuff.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jchuff.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcinit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcinit.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcmainct.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcmainct.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcmarker.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcmarker.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcmaster.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcmaster.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcomapi.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcomapi.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcparam.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcparam.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcphuff.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcphuff.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcprepct.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcprepct.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jcsample.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jcsample.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jctrans.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jctrans.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdapimin.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdapimin.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdapistd.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdapistd.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdcoefct.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdcoefct.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdcolor.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdcolor.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jddctmgr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jddctmgr.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdhuff.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdhuff.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdinput.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdinput.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdmainct.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdmainct.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdmarker.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdmarker.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdmaster.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdmaster.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdmerge.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdmerge.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdphuff.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdphuff.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdpostct.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdpostct.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdsample.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdsample.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jdtrans.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jdtrans.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jerror.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jerror.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jfdctflt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jfdctflt.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jfdctfst.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jfdctfst.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jfdctint.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jfdctint.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jidctflt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jidctflt.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jidctfst.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jidctfst.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jidctint.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jidctint.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jidctred.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jidctred.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jmemmgr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jmemmgr.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jmemnobs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jmemnobs.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jpegdecoder.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="jpegdecoder.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jquant1.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jquant1.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jquant2.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jquant2.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjavajpeg/jutils.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="jutils.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/DirectAudioDevice.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/DirectAudioDeviceProvider.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="DirectAudioDeviceProvider.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/MidiInDevice.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MidiInDevice.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/MidiInDeviceProvider.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MidiInDeviceProvider.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/MidiOutDevice.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MidiOutDevice.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/MidiOutDeviceProvider.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MidiOutDeviceProvider.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/Platform.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Platform.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/PlatformMidi.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PlatformMidi.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/PortMixer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PortMixer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/PortMixerProvider.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PortMixerProvider.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libjsound/Utilities.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Utilities.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/LCMS.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmscam02.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmscam02.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmscgats.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmscgats.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmscnvrt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmscnvrt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmserr.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmserr.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsgamma.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsgamma.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsgmt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsgmt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmshalf.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmshalf.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsintrp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsintrp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsio0.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsio0.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsio1.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsio1.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmslut.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmslut.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsmd5.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsmd5.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsmtrx.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsmtrx.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsnamed.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsnamed.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsopt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsopt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmspack.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmspack.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmspcs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmspcs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsplugin.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsplugin.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsps2.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsps2.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmssamp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmssamp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmssm.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmssm.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmstypes.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmstypes.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsvirt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsvirt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmswtpnt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmswtpnt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/liblcms/cmsxform.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="cmsxform.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffineEdge.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffineEdge.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BC_D64.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BC_D64.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BC_F32.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BC_F32.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BC_S32.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BC_S32.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BL_D64.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BL_D64.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BL_F32.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BL_F32.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_BL_S32.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_BL_S32.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_NN.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_NN.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageAffine_NN_Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageAffine_NN_Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageClipping.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageClipping.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvClearEdge_Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvClearEdge_Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvClearEdge_Fp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvClearEdge_Fp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvCopyEdge_Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvCopyEdge_Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvKernelConvert.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvKernelConvert.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvMxN.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvMxN.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvMxN_Fp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvMxN_Fp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConvMxN_ext.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConvMxN_ext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_16ext.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_16ext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_16nw.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_16nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_32nw.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_32nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_8ext.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_8ext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_8nw.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_8nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_D64nw.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_D64nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_F32nw.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_F32nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_u16ext.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_u16ext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageConv_u16nw.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageConv_u16nw.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageDivTables.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageDivTables.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageFilters.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageFilters.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageLookUp_64.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageLookUp_64.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageLookUp_Bit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageLookUp_Bit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageScanPoly.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageScanPoly.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_ImageUtils.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_ImageUtils.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BC.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BC.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BC_S16.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BC_S16.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BC_U16.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BC_U16.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BL.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BL.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BL_S16.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BL_S16.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BL_U16.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_BL_U16.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_NN.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageAffine_NN.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConvClearEdge.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageConvClearEdge.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConvCopyEdge.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageConvCopyEdge.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConvVersion.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageConvVersion.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageConv_f.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageConv_f.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageCopy.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageCopy.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageLookUp.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageLookUp.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libmlib_image/mlib_c_ImageLookUp_f.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mlib_c_ImageLookUp_f.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/giflib/dgif_lib.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/giflib/gif_err.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="gif_err.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/giflib/gifalloc.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="gifalloc.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/java_awt_SplashScreen.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="java_awt_SplashScreen.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/png.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngerror.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngerror.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngget.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngget.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngmem.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngmem.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngpread.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngpread.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngread.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngread.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngrio.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngrio.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngrtran.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngrtran.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngrutil.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngrutil.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngset.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngset.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngtrans.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngtrans.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngwio.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngwio.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngwrite.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngwrite.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngwtran.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngwtran.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/libpng/pngwutil.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="pngwutil.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_gfx_impl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_gfx_impl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_gif.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_gif.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_impl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_impl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_jpeg.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_jpeg.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/share/native/libsplashscreen/splashscreen_png.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="splashscreen_png.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/awt/CUPSfuncs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="CUPSfuncs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/awt/X11Color.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="X11Color.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/awt/awt_Font.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_Font.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/awt/fontpath.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="fontpath.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/awt/systemscale/systemScale.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/java2d/opengl/GLXGraphicsConfig.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/java2d/opengl/GLXSurfaceData.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GLXSurfaceData.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/java2d/x11/X11FontScaler_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/java2d/x11/X11PMBlitLoops.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="X11PMBlitLoops.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/java2d/x11/X11Renderer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="X11Renderer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/java2d/x11/X11SurfaceData.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="X11SurfaceData.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/common/java2d/x11/X11TextRenderer_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="X11TextRenderer_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt/awt/awt_LoadLibrary.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt/awt/awt_Mlib.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_Mlib.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt/awt/initIDs.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="initIDs.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_headless/awt/HeadlessToolkit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_AWTEvent.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_DrawingSurface.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_DrawingSurface.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Event.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_Event.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_GraphicsEnv.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_GraphicsEnv.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_InputMethod.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Insets.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_Insets.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_Robot.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_Robot.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_UNIXToolkit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_UNIXToolkit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/awt_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk2_interface.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="gtk2_interface.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="gtk3_interface.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/gtk_interface.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="gtk_interface.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/list.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="list.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/multiVis.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="multiVis.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/multi_font.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="multi_font.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/robot_common.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="robot_common.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/sun_awt_X11_GtkFileDialogPeer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="sun_awt_X11_GtkFileDialogPeer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/swing_GTKEngine.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="swing_GTKEngine.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/awt/swing_GTKStyle.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="swing_GTKStyle.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11/XRBackendNative.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11/XRSurfaceData.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="XRSurfaceData.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt/XToolkit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt/XWindow.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="XWindow.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt/XlibWrapper.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="XlibWrapper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt/awt_Desktop.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_Desktop.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt/awt_Taskbar.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_Taskbar.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt/gnome_interface.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="gnome_interface.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libfontmanager/X11FontScaler.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libfontmanager/X11TextRenderer.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="X11TextRenderer.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libjawt/jawt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libjsound/PLATFORM_API_SolarisOS_PCM.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libjsound/PLATFORM_API_SolarisOS_Ports.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PLATFORM_API_SolarisOS_Ports.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libjsound/PLATFORM_API_SolarisOS_Utils.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PLATFORM_API_SolarisOS_Utils.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.desktop/unix/native/libsplashscreen/splashscreen_sys.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/EncodingSupport.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/InstrumentationImplNativeMethods.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="InstrumentationImplNativeMethods.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/InvocationAdapter.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="InvocationAdapter.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/JPLISAgent.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="JPLISAgent.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/JPLISAssert.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="JPLISAssert.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/JarFacade.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="JarFacade.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/JavaExceptions.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="JavaExceptions.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/PathCharsValidator.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="PathCharsValidator.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/Reentrancy.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Reentrancy.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/share/native/libinstrument/Utilities.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Utilities.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/unix/native/libinstrument/EncodingSupport_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.instrument/unix/native/libinstrument/FileSystemSupport_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FileSystemSupport_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/ClassLoadingImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/GarbageCollectorImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GarbageCollectorImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/HotspotThread.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="HotspotThread.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/MemoryImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MemoryImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/MemoryManagerImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MemoryManagerImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/MemoryPoolImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MemoryPoolImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/ThreadImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThreadImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/VMManagementImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="VMManagementImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/share/native/libmanagement/management.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="management.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.management/unix/native/libmanagement/FileSystemImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.prefs/unix/native/libprefs/FileSystemPreferences.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.rmi/share/native/librmi/GC.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.security.jgss/share/native/libj2gss/GSSLibStub.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.security.jgss/share/native/libj2gss/NativeUtil.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="NativeUtil.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.security.jgss/unix/native/libj2gss/NativeFunc.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.smartcardio/share/native/libj2pcsc/pcsc.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/java.smartcardio/unix/native/libj2pcsc/pcsc_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.attach/solaris/native/libattach/VirtualMachineImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/ECC_JNI.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec2_163.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ec2_163.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec2_193.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ec2_193.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec2_233.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ec2_233.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec2_aff.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ec2_aff.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec2_mont.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ec2_mont.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ec_naf.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ec_naf.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecdecode.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecdecode.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_curve.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecl_curve.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_gf.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecl_gf.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecl_mult.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecl_mult.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_192.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_192.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_224.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_224.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_256.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_256.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_384.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_384.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_521.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_521.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_aff.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_aff.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_jac.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_jac.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_jm.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_jm.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/ecp_mont.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ecp_mont.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/mp_gf2m.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mp_gf2m.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/mpi.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mpi.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/mplogic.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mplogic.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/mpmontg.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="mpmontg.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/oid.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="oid.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ec/share/native/libsunec/impl/secitem.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="secitem.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/j2secmod.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_convert.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_convert.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_crypt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_crypt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_digest.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_digest.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_dual.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_dual.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_general.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_general.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_keymgmt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_keymgmt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_mutex.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_mutex.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_objmgmt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_objmgmt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_sessmgmt.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_sessmgmt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_sign.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_sign.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11/p11_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/unix/native/libj2pkcs11/j2secmod_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.cryptoki/unix/native/libj2pkcs11/p11_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="p11_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ucrypto/solaris/native/libj2ucrypto/nativeCrypto.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ucrypto/solaris/native/libj2ucrypto/nativeCryptoMD.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="nativeCryptoMD.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.crypto.ucrypto/solaris/native/libj2ucrypto/nativeFunc.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="nativeFunc.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libdt_socket/socketTransport.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ArrayReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ArrayTypeImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ArrayTypeImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ClassLoaderReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ClassLoaderReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ClassObjectReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ClassObjectReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ClassTypeImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ClassTypeImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/EventRequestImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="EventRequestImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/FieldImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FieldImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/FrameID.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="FrameID.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/InterfaceTypeImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="InterfaceTypeImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/MethodImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="MethodImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ModuleReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ModuleReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ObjectReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ObjectReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ReferenceTypeImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ReferenceTypeImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/SDE.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SDE.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/StackFrameImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="StackFrameImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/StringReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="StringReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ThreadGroupReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThreadGroupReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/ThreadReferenceImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="ThreadReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/VirtualMachineImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="VirtualMachineImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/bag.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="bag.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/classTrack.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="classTrack.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/commonRef.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="commonRef.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/debugDispatch.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="debugDispatch.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/debugInit.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="debugInit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/debugLoop.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="debugLoop.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/error_messages.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="error_messages.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/eventFilter.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="eventFilter.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/eventHandler.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="eventHandler.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/eventHelper.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="eventHelper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/inStream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="inStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/invoker.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="invoker.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/log_messages.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="log_messages.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/outStream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="outStream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/standardHandlers.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="standardHandlers.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/stepControl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="stepControl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/stream.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="stream.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/threadControl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="threadControl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/transport.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="transport.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/utf_util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="utf_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/util.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/unix/native/libdt_socket/socket_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.jdwp.agent/unix/native/libjdwp/linker_md.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="linker_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/DiagnosticCommandImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/Flag.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="Flag.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/GarbageCollectorExtImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GarbageCollectorExtImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/GcInfoBuilder.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="GcInfoBuilder.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/HotSpotDiagnostic.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="HotSpotDiagnostic.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/share/native/libmanagement_ext/management_ext.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="management_ext.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/solaris/native/libmanagement_ext/UnixOperatingSystem.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.management/unix/native/libmanagement_ext/OperatingSystemImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.net/solaris/native/libextnet/SolarisSocketOptions.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/bands.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/bytes.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="bytes.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/coding.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="coding.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/unpack.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="unpack.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/utils.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="utils.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/common-unpack/zip.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ <preprocessorList>
+ <Elem>THIS_FILE="zip.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/libunpack/jni.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.pack/share/native/unpack200/main.cpp"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <item path="../../jdk/src/jdk.sctp/unix/native/libsctp/SctpChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.sctp/unix/native/libsctp/SctpNet.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SctpNet.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.sctp/unix/native/libsctp/SctpServerChannelImpl.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ <preprocessorList>
+ <Elem>THIS_FILE="SctpServerChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.security.auth/solaris/native/libjaas/Solaris.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../jdk/src/jdk.security.auth/unix/native/libjaas/Unix.c"
+ ex="false"
+ tool="0"
+ flavor2="0">
+ <cTool flags="2">
+ </cTool>
+ </item>
+ <item path="../../test/fmw/gtest/src/gtest-all.cc"
+ ex="false"
+ tool="1"
+ flavor2="0">
+ <ccTool flags="0">
+ </ccTool>
+ </item>
+ <folder path="0/build">
+ <cTool>
+ <incDir>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ </incDir>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/build/hotspot/variant-server/gensrc/jvmtifiles">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="bytecodeInterpreterWithChecks.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/build/hotspot/variant-server/support">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/hotspot/variant-server/support/dtrace</pElem>
+ </incDir>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot">
+ <cTool>
+ <incDir>
+ <pElem>../../build/solaris-x86_64-normal-server-release/hotspot/solaris_amd64_compiler2/product</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="sadis.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="abstractInterpreter_x86.cpp"</Elem>
+ </preprocessorList>
+ <undefinedList>
+ <Elem>__EXCEPTIONS</Elem>
+ <Elem>__GXX_RTTI</Elem>
+ </undefinedList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/cpu">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/jdk.hotspot.agent">
+ <cTool>
+ <incDir>
+ <pElem>../../hotspot/src/jdk.hotspot.agent/share/native/libsaproc</pElem>
+ <pElem>../../hotspot/src/jdk.hotspot.agent/solaris/native/libsaproc</pElem>
+ <pElem>../../build/support/headers/jdk.hotspot.agent</pElem>
+ <pElem>../../hotspot/src/os/solaris</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>ARCH="amd64"</Elem>
+ <Elem>BREAKPTS</Elem>
+ <Elem>DEBUG</Elem>
+ <Elem>MACRO_MEMSYS_OPS</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SOLARIS_11_B159_OR_LATER</Elem>
+ <Elem>TRACING</Elem>
+ <Elem>_LITTLE_ENDIAN=</Elem>
+ <Elem>__solaris__</Elem>
+ <Elem>amd64</Elem>
+ <Elem>cpuIntel</Elem>
+ <Elem>i586</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/jdk.hotspot.agent/share/native/libsaproc</pElem>
+ <pElem>../../hotspot/src/jdk.hotspot.agent/solaris/native/libsaproc</pElem>
+ <pElem>../../build/support/headers/jdk.hotspot.agent</pElem>
+ <pElem>../../hotspot/src/os/solaris</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>ARCH="amd64"</Elem>
+ <Elem>BREAKPTS</Elem>
+ <Elem>CC_NOEX</Elem>
+ <Elem>DEBUG</Elem>
+ <Elem>MACRO_MEMSYS_OPS</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SOLARIS_11_B159_OR_LATER</Elem>
+ <Elem>THIS_FILE="saproc.cpp"</Elem>
+ <Elem>TRACING</Elem>
+ <Elem>_LITTLE_ENDIAN=</Elem>
+ <Elem>__solaris__</Elem>
+ <Elem>amd64</Elem>
+ <Elem>cpuIntel</Elem>
+ <Elem>i586</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/os">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="jvm_dtrace.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../build/linux-x86_64-normal-server-release/hotspot/linux_amd64_compiler2/product</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/linux_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/linux/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/linux-x86_64-normal-server-release/hotspot/linux_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="os_posix.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/os/linux">
+ <cTool>
+ <incDir>
+ <pElem>../../build/linux-x86_64-normal-server-release/hotspot/linux_amd64_compiler2/product</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>_REENTRANT</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <preprocessorList>
+ <Elem>LINUX</Elem>
+ <Elem>_GNU_SOURCE</Elem>
+ <Elem>_REENTRANT</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/os/posix">
+ <cTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/posix/launcher</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/tools/launcher</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/solaris-x86_64-normal-server-release/hotspot/solaris_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ARCH="amd64"</Elem>
+ <Elem>GAMMA</Elem>
+ <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>LAUNCHER_TYPE="gamma"</Elem>
+ <Elem>LINK_INTO_LIBJVM</Elem>
+ <Elem>PRODUCT</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/os/solaris">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="generateJvmOffsets.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/os/solaris/vm">
+ <cTool>
+ <incDir>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="jsig.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="attachListener_solaris.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/os_cpu">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="assembler_solaris_x86.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/os_cpu/linux_x86">
+ <ccTool>
+ <preprocessorList>
+ <Elem>LINUX</Elem>
+ <Elem>_GNU_SOURCE</Elem>
+ <Elem>_LP64=1</Elem>
+ <Elem>_REENTRANT</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share">
+ <cTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/posix/launcher</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/src/share/tools/launcher</pElem>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../build/solaris-x86_64-normal-server-release/hotspot/solaris_amd64_compiler2/generated</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ARCH="amd64"</Elem>
+ <Elem>GAMMA</Elem>
+ <Elem>HOTSPOT_BUILD_TARGET="target"</Elem>
+ <Elem>HOTSPOT_BUILD_USER="user"</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>HOTSPOT_RELEASE_VERSION="version"</Elem>
+ <Elem>HOTSPOT_VM_DISTRO="OpenJDK"</Elem>
+ <Elem>LAUNCHER_TYPE="gamma"</Elem>
+ <Elem>LINK_INTO_LIBJVM</Elem>
+ <Elem>PRODUCT</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>THIS_FILE="adlparse.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/adlc">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/asm">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="assembler.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/c1">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="c1_CFGPrinter.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/ci">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="bcEscapeAnalyzer.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/classfile">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="altHashing.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/code">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="codeBlob.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/compiler">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="abstractCompiler.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/gc">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="adaptiveFreeList.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/gc/g1">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="bufferingOopClosure.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/gc/parallel">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="adjoiningGenerations.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/gc/serial">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="cSpaceCounters.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/gc/shared">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="adaptiveSizePolicy.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/interpreter">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="abstractInterpreter.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/jvmci">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="jvmciCodeInstaller.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/libadt">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="dict.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/logging">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="log.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/memory">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="allocation.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/oops">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="annotations.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/opto">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="addnode.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/prims">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="parserTests.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/runtime">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="advancedThresholdPolicy.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/services">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="attachListener.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/trace">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="traceBackend.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/src/share/vm/utilities">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="accessFlags.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/test">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../test/fmw/gtest</pElem>
+ <pElem>../../test/fmw/gtest/include</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="test_os.cpp"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/test/native/runtime">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/test/native</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>GTEST_HAS_EXCEPTIONS=0</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/hotspot/test/native/utilities">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/test/native</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>GTEST_HAS_EXCEPTIONS=0</Elem>
+ <Elem>THIS_FILE="test_quicksort.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk">
+ <cTool>
+ <preprocessorList>
+ <Elem>ARCH="amd64"</Elem>
+ <Elem>BREAKPTS</Elem>
+ <Elem>MACRO_MEMSYS_OPS</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>THIS_FILE="agent_util.c"</Elem>
+ <Elem>TRACING</Elem>
+ <Elem>_LITTLE_ENDIAN=</Elem>
+ <Elem>__solaris__</Elem>
+ <Elem>amd64</Elem>
+ <Elem>cpuIntel</Elem>
+ <Elem>i586</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>ARCH="amd64"</Elem>
+ <Elem>BREAKPTS</Elem>
+ <Elem>CC_NOEX</Elem>
+ <Elem>MACRO_MEMSYS_OPS</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>THIS_FILE="Agent.cpp"</Elem>
+ <Elem>TRACING</Elem>
+ <Elem>_LITTLE_ENDIAN=</Elem>
+ <Elem>__solaris__</Elem>
+ <Elem>amd64</Elem>
+ <Elem>cpuIntel</Elem>
+ <Elem>i586</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/java.base">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="main.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libjimage</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="NativeImageBuffer.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/launcher">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/launcher</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjli</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>ENABLE_ARG_FILES</Elem>
+ <Elem>EXPAND_CLASSPATH_WILDCARDS</Elem>
+ <Elem>HAVE_GETHRTIME</Elem>
+ <Elem>JAVA_ARGS={ "-J-addmods", "-JALL-DEFAULT", "-J-ms8m", "-m", "jdk.jlink/jdk.tools.jlink.internal.Main", }</Elem>
+ <Elem>LAUNCHER_NAME="openjdk"</Elem>
+ <Elem>NEVER_ACT_AS_SERVER_CLASS_MACHINE</Elem>
+ <Elem>PROGNAME="jlink"</Elem>
+ <Elem>VERSION_BUILD=0</Elem>
+ <Elem>VERSION_MAJOR=9</Elem>
+ <Elem>VERSION_MINOR=0</Elem>
+ <Elem>VERSION_NUMBER="9"</Elem>
+ <Elem>VERSION_OPT="2016-06-21-161756.vkvashin.jdktrunk"</Elem>
+ <Elem>VERSION_PATCH=0</Elem>
+ <Elem>VERSION_PRE="internal"</Elem>
+ <Elem>VERSION_SECURITY=0</Elem>
+ <Elem>VERSION_SHORT="9-internal"</Elem>
+ <Elem>VERSION_SPECIFICATION="9"</Elem>
+ <Elem>VERSION_STRING="9-internal+0-2016-06-21-161756.vkvashin.jdktrunk"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libfdlibm">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libfdlibm</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>LIBRARY_NAME=fdlibm</Elem>
+ <Elem>THIS_FILE="e_acos.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libjava">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libfdlibm</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>ARCHPROPNAME="amd64"</Elem>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="AccessController.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libjli">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/unix/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>LIBARCH32NAME="i386"</Elem>
+ <Elem>LIBARCH64NAME="amd64"</Elem>
+ <Elem>LIBARCHNAME="amd64"</Elem>
+ <Elem>THIS_FILE="args.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libnet">
+ <cTool>
+ <incDir>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="DatagramPacket.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libnio">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libnio</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libnio/fs</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/fs</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="nio_util.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libverify">
+ <cTool>
+ <incDir>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="check_code.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/share/native/libzip">
+ <cTool>
+ <incDir>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="Adler32.c"</Elem>
+ <Elem>USE_MMAP</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/solaris">
+ <cTool>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="ProcessHandleImpl_solaris.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/solaris/native/libjava">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libfdlibm</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>ARCHPROPNAME="amd64"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/solaris/native/libnet">
+ <cTool>
+ <incDir>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="solaris_close.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/solaris/native/libnio">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libnio</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libnio/fs</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/fs</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="DevPollArrayWrapper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/solaris/native/libnio/fs">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="SolarisNativeDispatcher.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="jspawnhelper.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="osSupport_unix.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix/native/jspawnhelper">
+ <cTool>
+ <incDir>
+ <pElem>../../make</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix/native/libjava">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libfdlibm</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>ARCHPROPNAME="amd64"</Elem>
+ <Elem>THIS_FILE="Console_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix/native/libjli">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/unix/native/libjli</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>LIBARCH32NAME="i386"</Elem>
+ <Elem>LIBARCH64NAME="amd64"</Elem>
+ <Elem>LIBARCHNAME="amd64"</Elem>
+ <Elem>THIS_FILE="ergo.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix/native/libnet">
+ <cTool>
+ <incDir>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="DefaultProxySelector.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix/native/libnio">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/libnio</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libnio/fs</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/fs</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="DatagramChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.base/unix/native/libnio/fs">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="GioFileTypeDetector.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop">
+ <cTool>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="debug_assert.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/layout</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>/usr/include/freetype2</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>GETPAGESIZE</Elem>
+ <Elem>HAVE_FALLBACK</Elem>
+ <Elem>HAVE_MPROTECT</Elem>
+ <Elem>HAVE_OT</Elem>
+ <Elem>HAVE_PTHREAD</Elem>
+ <Elem>HAVE_SOLARIS_ATOMIC_OPS</Elem>
+ <Elem>HAVE_SYSCONF</Elem>
+ <Elem>HAVE_SYS_MMAN_H</Elem>
+ <Elem>HAVE_UCDN</Elem>
+ <Elem>HAVE_UNISTD_H</Elem>
+ <Elem>HEADLESS</Elem>
+ <Elem>LE_STANDALONE</Elem>
+ <Elem>THIS_FILE="hb-blob.cc"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ </incDir>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common/awt/debug">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsunwjdga</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>FUNCPROTO=15</Elem>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>XAWT</Elem>
+ <Elem>XAWT_HACK</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common/awt/medialib">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libmlib_image</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>MLIB_NO_LIBSUNMATH</Elem>
+ <Elem>MLIB_OS64BIT</Elem>
+ <Elem>THIS_FILE="mlib_ImageCopy_Bit.c"</Elem>
+ <Elem>__MEDIALIB_OLD_NAMES</Elem>
+ <Elem>__USE_J2D_NAMES</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common/awt/utility">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsunwjdga</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>FUNCPROTO=15</Elem>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>THIS_FILE="rect.c"</Elem>
+ <Elem>XAWT</Elem>
+ <Elem>XAWT_HACK</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common/font">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsunwjdga</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>FUNCPROTO=15</Elem>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>THIS_FILE="AccelGlyphCache.c"</Elem>
+ <Elem>XAWT</Elem>
+ <Elem>XAWT_HACK</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/common/java2d">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsunwjdga</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>FUNCPROTO=15</Elem>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>THIS_FILE="OGLBlitLoops.c"</Elem>
+ <Elem>XAWT</Elem>
+ <Elem>XAWT_HACK</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libawt">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="img_colors.c"</Elem>
+ <Elem>__MEDIALIB_OLD_NAMES</Elem>
+ <Elem>__USE_J2D_NAMES</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libawt/awt/image/gif">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="gifdecoder.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libawt/awt/medialib">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_ImagingLib.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libawt/java2d">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="AlphaMacros.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libawt/java2d/pipe">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="BufferedMaskBlit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libfontmanager">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/layout</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>/usr/include/freetype2</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>GETPAGESIZE</Elem>
+ <Elem>HAVE_FALLBACK</Elem>
+ <Elem>HAVE_MPROTECT</Elem>
+ <Elem>HAVE_OT</Elem>
+ <Elem>HAVE_PTHREAD</Elem>
+ <Elem>HAVE_SOLARIS_ATOMIC_OPS</Elem>
+ <Elem>HAVE_SYSCONF</Elem>
+ <Elem>HAVE_SYS_MMAN_H</Elem>
+ <Elem>HAVE_UCDN</Elem>
+ <Elem>HAVE_UNISTD_H</Elem>
+ <Elem>HEADLESS</Elem>
+ <Elem>LE_STANDALONE</Elem>
+ <Elem>THIS_FILE="ucdn.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libfontmanager/layout">
+ <ccTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="AlternateSubstSubtables.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libjavajpeg">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="imageioJPEG.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libjsound">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>EXTRA_SOUND_JNI_LIBS=""</Elem>
+ <Elem>THIS_FILE="DirectAudioDevice.c"</Elem>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ <Elem>X_PLATFORM=X_SOLARIS</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/liblcms">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/liblcms</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>CMS_DONT_USE_FAST_FLOOR</Elem>
+ <Elem>THIS_FILE="LCMS.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libmlib_image">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libmlib_image</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>MLIB_NO_LIBSUNMATH</Elem>
+ <Elem>MLIB_OS64BIT</Elem>
+ <Elem>THIS_FILE="mlib_ImageAffine.c"</Elem>
+ <Elem>__MEDIALIB_OLD_NAMES</Elem>
+ <Elem>__USE_J2D_NAMES</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libsplashscreen">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="dgif_lib.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/share/native/libsplashscreen/libpng">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="png.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="systemScale.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/common">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsunwjdga</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>FUNCPROTO=15</Elem>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>XAWT</Elem>
+ <Elem>XAWT_HACK</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/common/java2d">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="GLXGraphicsConfig.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/common/java2d/x11">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="X11FontScaler_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libawt">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libmlib_image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="awt_LoadLibrary.c"</Elem>
+ <Elem>__MEDIALIB_OLD_NAMES</Elem>
+ <Elem>__USE_J2D_NAMES</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libawt_headless">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_headless/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsunwjdga</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>HEADLESS=true</Elem>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>THIS_FILE="HeadlessToolkit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libawt_xawt">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/xawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt_xawt/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsunwjdga</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>FUNCPROTO=15</Elem>
+ <Elem>PACKAGE_PATH="/opt/local"</Elem>
+ <Elem>THIS_FILE="awt_AWTEvent.c"</Elem>
+ <Elem>XAWT</Elem>
+ <Elem>XAWT_HACK</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libawt_xawt/java2d">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="XRBackendNative.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libawt_xawt/xawt">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="XToolkit.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libfontmanager">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ucdn</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libfontmanager/layout</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libfontmanager</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/java2d/pipe</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/gif</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/image/cvutils</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libawt/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libawt/java2d/loops</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/utility</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/awt/debug</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/opengl/J2D_GL</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/java2d/x11</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/font</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/medialib</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/utility</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>/usr/include/freetype2</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>GETPAGESIZE</Elem>
+ <Elem>HAVE_FALLBACK</Elem>
+ <Elem>HAVE_MPROTECT</Elem>
+ <Elem>HAVE_OT</Elem>
+ <Elem>HAVE_PTHREAD</Elem>
+ <Elem>HAVE_SOLARIS_ATOMIC_OPS</Elem>
+ <Elem>HAVE_SYSCONF</Elem>
+ <Elem>HAVE_SYS_MMAN_H</Elem>
+ <Elem>HAVE_UCDN</Elem>
+ <Elem>HAVE_UNISTD_H</Elem>
+ <Elem>HEADLESS</Elem>
+ <Elem>LE_STANDALONE</Elem>
+ <Elem>THIS_FILE="X11FontScaler.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libjawt">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt</pElem>
+ <pElem>../../jdk/src/java.desktop/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>THIS_FILE="jawt.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libjsound">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.desktop</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjsound</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libjsound</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>EXTRA_SOUND_JNI_LIBS=""</Elem>
+ <Elem>THIS_FILE="PLATFORM_API_SolarisOS_PCM.c"</Elem>
+ <Elem>USE_DAUDIO=TRUE</Elem>
+ <Elem>USE_PORTS=TRUE</Elem>
+ <Elem>X_PLATFORM=X_SOLARIS</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.desktop/unix/native/libsplashscreen">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/giflib</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libjavajpeg</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/share/native/libsplashscreen/libpng</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/libsplashscreen</pElem>
+ <pElem>../../jdk/src/java.desktop/unix/native/common/awt/systemscale</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>/usr/openwin/include</pElem>
+ <pElem>/usr/openwin/include/X11/extensions</pElem>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>PNG_ARM_NEON_OPT=0</Elem>
+ <Elem>PNG_NO_MMX_CODE</Elem>
+ <Elem>SPLASHSCREEN</Elem>
+ <Elem>THIS_FILE="splashscreen_sys.c"</Elem>
+ <Elem>WITH_X11</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.instrument">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.instrument/share/native/libinstrument</pElem>
+ <pElem>../../jdk/src/java.instrument/unix/native/libinstrument</pElem>
+ <pElem>../../build/support/headers/java.instrument</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjli</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>JPLIS_LOGGING</Elem>
+ <Elem>THIS_FILE="EncodingSupport.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.instrument/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="EncodingSupport_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.management">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.management/share/native/include</pElem>
+ <pElem>../../jdk/src/java.management/share/native/libmanagement</pElem>
+ <pElem>../../jdk/src/java.management/unix/native/libmanagement</pElem>
+ <pElem>../../build/support/headers/java.management</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="ClassLoadingImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.management/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="FileSystemImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.prefs">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.prefs/unix/native/libprefs</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="FileSystemPreferences.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.rmi">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.rmi</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="GC.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.security.jgss">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.security.jgss/share/native/libj2gss</pElem>
+ <pElem>../../jdk/src/java.security.jgss/unix/native/libj2gss</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../build/support/headers/java.security.jgss</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="GSSLibStub.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.security.jgss/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="NativeFunc.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.smartcardio">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.smartcardio/share/native/libj2pcsc</pElem>
+ <pElem>../../jdk/src/java.smartcardio/unix/native/libj2pcsc</pElem>
+ <pElem>../../jdk/src/java.smartcardio/unix/native/libj2pcsc/MUSCLE</pElem>
+ <pElem>../../build/support/headers/java.smartcardio</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="pcsc.c"</Elem>
+ <Elem>__sun_jdk</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/java.smartcardio/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="pcsc_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.attach">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/jdk.attach</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="VirtualMachineImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.crypto.ec">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>MP_API_COMPATIBLE</Elem>
+ <Elem>NSS_ECC_MORE_THAN_SUITE_B</Elem>
+ <Elem>THIS_FILE="ec.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ <ccTool>
+ <incDir>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="ECC_JNI.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.crypto.cryptoki">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/jdk.crypto.cryptoki/share/native/libj2pkcs11</pElem>
+ <pElem>../../jdk/src/jdk.crypto.cryptoki/unix/native/libj2pkcs11</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../build/support/headers/jdk.crypto.cryptoki</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="j2secmod.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.crypto.cryptoki/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="j2secmod_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.crypto.ucrypto">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/jdk.crypto.ucrypto/solaris/native/libj2ucrypto</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="nativeCrypto.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="socketTransport.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent/share/native/libdt_socket">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libdt_socket</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/unix/native/libdt_socket</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/export</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>USE_MMAP</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent/share/native/libjdwp">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/export</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/include</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/unix/native/libjdwp</pElem>
+ <pElem>../../build/support/headers/jdk.jdwp.agent</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>JDWP_LOGGING</Elem>
+ <Elem>THIS_FILE="ArrayReferenceImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="socket_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent/unix/native/libdt_socket">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libdt_socket</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/unix/native/libdt_socket</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/export</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/include</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>USE_MMAP</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.jdwp.agent/unix/native/libjdwp">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp/export</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/include</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/share/native/libjdwp</pElem>
+ <pElem>../../jdk/src/jdk.jdwp.agent/unix/native/libjdwp</pElem>
+ <pElem>../../build/support/headers/jdk.jdwp.agent</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>JDWP_LOGGING</Elem>
+ <Elem>THIS_FILE="exec_md.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.management">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.management/share/native/include</pElem>
+ <pElem>../../jdk/src/jdk.management/share/native/libmanagement_ext</pElem>
+ <pElem>../../jdk/src/jdk.management/unix/native/libmanagement_ext</pElem>
+ <pElem>../../jdk/src/jdk.management/solaris/native/libmanagement_ext</pElem>
+ <pElem>../../build/support/headers/jdk.management</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="DiagnosticCommandImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.management/solaris">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="UnixOperatingSystem.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.management/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="OperatingSystemImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.net">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/jdk.net</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="SolarisSocketOptions.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.pack">
+ <ccTool>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>FULL</Elem>
+ <Elem>THIS_FILE="bands.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.pack/share/native/common-unpack">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/jdk.pack/share/native/common-unpack</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>NO_ZLIB</Elem>
+ <Elem>UNPACK_JNI</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.pack/share/native/libunpack">
+ <ccTool>
+ <incDir>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../jdk/src/jdk.pack/share/native/common-unpack</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>NO_ZLIB</Elem>
+ <Elem>THIS_FILE="jni.cpp"</Elem>
+ <Elem>UNPACK_JNI</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.pack/share/native/unpack200">
+ <ccTool>
+ <incDir>
+ <pElem>../../jdk/src/jdk.pack/share/native/common-unpack</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>SYSTEM_ZLIB</Elem>
+ <Elem>THIS_FILE="main.cpp"</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.sctp">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnio/ch</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libnet</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/libjava</pElem>
+ <pElem>../../build/support/headers/jdk.sctp</pElem>
+ <pElem>../../build/support/headers/java.base</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="SctpChannelImpl.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.security.auth">
+ <cTool>
+ <incDir>
+ <pElem>../../jdk/src/java.base/share/native/include</pElem>
+ <pElem>../../jdk/src/java.base/solaris/native/include</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/include</pElem>
+ <pElem>../../jdk/src/java.base/share/native/libjava</pElem>
+ <pElem>../../jdk/src/java.base/unix/native/libjava</pElem>
+ <pElem>../../build/support/headers/jdk.security.auth</pElem>
+ <pElem>../../make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>DEBUG</Elem>
+ <Elem>THIS_FILE="Solaris.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/jdk/src/jdk.security.auth/unix">
+ <cTool>
+ <preprocessorList>
+ <Elem>THIS_FILE="Unix.c"</Elem>
+ </preprocessorList>
+ </cTool>
+ </folder>
+ <folder path="0/test">
+ <ccTool>
+ <incDir>
+ <pElem>../../hotspot/src/share/vm</pElem>
+ <pElem>../../hotspot/src/os/solaris/vm</pElem>
+ <pElem>../../hotspot/src/os/posix/vm</pElem>
+ <pElem>../../hotspot/src/cpu/x86/vm</pElem>
+ <pElem>../../hotspot/src/os_cpu/solaris_x86/vm</pElem>
+ <pElem>../../build/hotspot/variant-server/gensrc</pElem>
+ <pElem>../../hotspot/src/share/vm/precompiled</pElem>
+ <pElem>../../hotspot/src/share/vm/prims</pElem>
+ <pElem>../../test/fmw/gtest</pElem>
+ <pElem>../../test/fmw/gtest/include</pElem>
+ <pElem>../../hotspot/test/native</pElem>
+ <pElem>../../hotspot/make</pElem>
+ </incDir>
+ <preprocessorList>
+ <Elem>AMD64</Elem>
+ <Elem>ASSERT</Elem>
+ <Elem>COMPILER1</Elem>
+ <Elem>COMPILER2</Elem>
+ <Elem>DONT_USE_PRECOMPILED_HEADER</Elem>
+ <Elem>DTRACE_ENABLED</Elem>
+ <Elem>GTEST_HAS_EXCEPTIONS=0</Elem>
+ <Elem>HOTSPOT_LIB_ARCH="amd64"</Elem>
+ <Elem>SOLARIS</Elem>
+ <Elem>SPARC_WORKS</Elem>
+ <Elem>TARGET_ARCH_MODEL_x86_64</Elem>
+ <Elem>TARGET_ARCH_x86</Elem>
+ <Elem>TARGET_COMPILER_sparcWorks</Elem>
+ <Elem>TARGET_OS_ARCH_MODEL_solaris_x86_64</Elem>
+ <Elem>TARGET_OS_ARCH_solaris_x86</Elem>
+ <Elem>TARGET_OS_FAMILY_solaris</Elem>
+ <Elem>THIS_FILE="gtest-all.cc"</Elem>
+ <Elem>VM_LITTLE_ENDIAN</Elem>
+ <Elem>_Crun_inline_placement</Elem>
+ <Elem>_NMT_NOINLINE_</Elem>
+ </preprocessorList>
+ </ccTool>
+ </folder>
+ </conf>
+ </confs>
+</configurationDescriptor>
diff --git a/common/nb_native/nbproject/project.xml b/common/nb_native/nbproject/project.xml
new file mode 100644
index 0000000..37ac590
--- /dev/null
+++ b/common/nb_native/nbproject/project.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.cnd.makeproject</type>
+ <configuration>
+ <data xmlns="http://www.netbeans.org/ns/make-project/1">
+ <name>OpenJDK (Native)</name>
+ <c-extensions>c,m</c-extensions>
+ <cpp-extensions>cc,cpp</cpp-extensions>
+ <header-extensions>ad,h,hh,hpp,in_out,map,txt</header-extensions>
+ <sourceEncoding>UTF-8</sourceEncoding>
+ <make-dep-projects/>
+ <sourceRootList>
+ <sourceRootElem>../..</sourceRootElem>
+ </sourceRootList>
+ <confList>
+ <confElem>
+ <name>Mac_64</name>
+ <type>0</type>
+ </confElem>
+ <confElem>
+ <name>Linux_64</name>
+ <type>0</type>
+ </confElem>
+ <confElem>
+ <name>Solaris_64</name>
+ <type>0</type>
+ </confElem>
+ </confList>
+ <formatting>
+ <project-formatting-style>false</project-formatting-style>
+ </formatting>
+ </data>
+ </configuration>
+</project>
diff --git a/common/src/fixpath.c b/common/src/fixpath.c
new file mode 100644
index 0000000..d9dec6d
--- /dev/null
+++ b/common/src/fixpath.c
@@ -0,0 +1,545 @@
+/*
+ * Copyright (c) 2011, 2014, 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 <Windows.h>
+#include <io.h>
+#include <stdio.h>
+#include <string.h>
+#include <malloc.h>
+
+void report_error(char const * msg)
+{
+ LPVOID lpMsgBuf;
+ DWORD dw = GetLastError();
+
+ FormatMessage(
+ FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ dw,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (LPTSTR) &lpMsgBuf,
+ 0,
+ NULL);
+
+ fprintf(stderr,
+ "%s Failed with error %d: %s\n",
+ msg, dw, lpMsgBuf);
+
+ LocalFree(lpMsgBuf);
+}
+
+/*
+ * Test if pos points to /cygdrive/_/ where _ can
+ * be any character.
+ */
+int is_cygdrive_here(int pos, char const *in, int len)
+{
+ // Length of /cygdrive/c/ is 12
+ if (pos+12 > len) return 0;
+ if (in[pos+11]=='/' &&
+ in[pos+9]=='/' &&
+ in[pos+8]=='e' &&
+ in[pos+7]=='v' &&
+ in[pos+6]=='i' &&
+ in[pos+5]=='r' &&
+ in[pos+4]=='d' &&
+ in[pos+3]=='g' &&
+ in[pos+2]=='y' &&
+ in[pos+1]=='c' &&
+ in[pos+0]=='/') {
+ return 1;
+ }
+ return 0;
+}
+
+/*
+ * Replace /cygdrive/_/ with _:/
+ * Works in place since drive letter is always
+ * shorter than /cygdrive/
+ */
+char *replace_cygdrive_cygwin(char const *in)
+{
+ size_t len = strlen(in);
+ char *out = (char*) malloc(len+1);
+ int i,j;
+
+ if (len < 12) {
+ memmove(out, in, len + 1);
+ return out;
+ }
+
+ for (i = 0, j = 0; i<len;) {
+ if (is_cygdrive_here(i, in, len)) {
+ out[j++] = in[i+10];
+ out[j++] = ':';
+ i+=11;
+ } else {
+ out[j] = in[i];
+ i++;
+ j++;
+ }
+ }
+ out[j] = '\0';
+ return out;
+}
+
+void append(char **b, size_t *bl, size_t *u, char *add, size_t addlen)
+{
+ while ((addlen+*u+1) > *bl) {
+ *bl *= 2;
+ *b = (char*) realloc(*b, *bl);
+ }
+ memcpy(*b+*u, add, addlen);
+ *u += addlen;
+}
+
+/*
+ * Creates a new string from in where the first occurrence of sub is
+ * replaced by rep.
+ */
+char *replace_substring(char *in, char *sub, char *rep)
+{
+ int in_len = strlen(in);
+ int sub_len = strlen(sub);
+ int rep_len = strlen(rep);
+ char *out = (char *) malloc(in_len - sub_len + rep_len + 1);
+ char *p;
+
+ if (!(p = strstr(in, sub))) {
+ // If sub isn't a substring of in, just return in.
+ return in;
+ }
+
+ // Copy characters from beginning of in to start of sub.
+ strncpy(out, in, p - in);
+ out[p - in] = '\0';
+
+ sprintf(out + (p - in), "%s%s", rep, p + sub_len);
+
+ return out;
+}
+
+char* msys_path_list; // @-separated list of paths prefix to look for
+char* msys_path_list_end; // Points to last \0 in msys_path_list.
+
+void setup_msys_path_list(char const * argument)
+{
+ char* p;
+ char* drive_letter_pos;
+
+ msys_path_list = strdup(&argument[2]);
+ msys_path_list_end = &msys_path_list[strlen(msys_path_list)];
+
+ // Convert all at-sign (@) in path list to \0.
+ // @ was chosen as separator to minimize risk of other tools messing around with it
+ p = msys_path_list;
+ do {
+ if (p[1] == ':') {
+ // msys has mangled our path list, restore it from c:/... to /c/...
+ drive_letter_pos = p+1;
+ *drive_letter_pos = *p;
+ *p = '/';
+ }
+
+ // Look for an @ in the list
+ p = strchr(p, '@');
+ if (p != NULL) {
+ *p = '\0';
+ p++;
+ }
+ } while (p != NULL);
+}
+
+char *replace_cygdrive_msys(char const *in)
+{
+ char* str;
+ char* prefix;
+ char* p;
+
+ str = strdup(in);
+
+ // For each prefix in the path list, search for it and replace /c/... with c:/...
+ for (prefix = msys_path_list; prefix < msys_path_list_end && prefix != NULL; prefix += strlen(prefix)+1) {
+ p=str;
+ while ((p = strstr(p, prefix))) {
+ char* drive_letter = p+1;
+ *p = *drive_letter;
+ *drive_letter = ':';
+ p++;
+ }
+ }
+
+ return str;
+}
+
+char*(*replace_cygdrive)(char const *in) = NULL;
+
+char *files_to_delete[1024];
+int num_files_to_delete = 0;
+
+char *fix_at_file(char const *in)
+{
+ char *tmpdir;
+ char name[2048];
+ char *atname;
+ char *buffer;
+ size_t buflen=65536;
+ size_t used=0;
+ size_t len;
+ int rc;
+ FILE *atout;
+ FILE *atin;
+ char block[2048];
+ size_t blocklen;
+ char *fixed;
+
+ atin = fopen(in+1, "r");
+ if (atin == NULL) {
+ fprintf(stderr, "Could not read at file %s\n", in+1);
+ exit(-1);
+ }
+
+ tmpdir = getenv("TEMP");
+ if (tmpdir == NULL) {
+#if _WIN64
+ tmpdir = "c:/cygwin64/tmp";
+#else
+ tmpdir = "c:/cygwin/tmp";
+#endif
+ }
+ _snprintf(name, sizeof(name), "%s\\atfile_XXXXXX", tmpdir);
+
+ rc = _mktemp_s(name, strlen(name)+1);
+ if (rc) {
+ fprintf(stderr, "Could not create temporary file name for at file!\n");
+ exit(-1);
+ }
+
+ atout = fopen(name, "w");
+ if (atout == NULL) {
+ fprintf(stderr, "Could not open temporary file for writing! %s\n", name);
+ exit(-1);
+ }
+
+ buffer = (char*) malloc(buflen);
+ while ((blocklen = fread(block, 1, sizeof(block), atin)) > 0) {
+ append(&buffer, &buflen, &used, block, blocklen);
+ }
+ buffer[used] = 0;
+ if (getenv("DEBUG_FIXPATH") != NULL) {
+ fprintf(stderr, "fixpath input from @-file %s: %s\n", &in[1], buffer);
+ }
+ fixed = replace_cygdrive(buffer);
+ if (getenv("DEBUG_FIXPATH") != NULL) {
+ fprintf(stderr, "fixpath converted to @-file %s is: %s\n", name, fixed);
+ }
+ fwrite(fixed, strlen(fixed), 1, atout);
+ fclose(atin);
+ fclose(atout);
+ free(fixed);
+ free(buffer);
+ files_to_delete[num_files_to_delete] = (char*) malloc(strlen(name)+1);
+ strcpy(files_to_delete[num_files_to_delete], name);
+ num_files_to_delete++;
+ atname = (char*) malloc(strlen(name)+2);
+ atname[0] = '@';
+ strcpy(atname+1, name);
+ return atname;
+}
+
+// given an argument, convert it to the windows command line safe quoted version
+// using rules from:
+// http://blogs.msdn.com/b/twistylittlepassagesallalike/archive/2011/04/23/everyone-quotes-arguments-the-wrong-way.aspx
+// caller is responsible for freeing both input and output.
+char * quote_arg(char const * in_arg) {
+ char *quoted = NULL;
+ char *current = quoted;
+ int pass;
+
+ if (strlen(in_arg) == 0) {
+ // empty string? explicitly quote it.
+ return _strdup("\"\"");
+ }
+
+ if (strpbrk(in_arg, " \t\n\v\r\\\"") == NULL) {
+ return _strdup(in_arg);
+ }
+
+ // process the arg twice. Once to calculate the size and then to copy it.
+ for (pass=1; pass<=2; pass++) {
+ char const *arg = in_arg;
+
+ // initial "
+ if (pass == 2) {
+ *current = '\"';
+ }
+ current++;
+
+ // process string to be quoted until NUL
+ do {
+ int escapes = 0;
+
+ while (*arg == '\\') {
+ // count escapes.
+ escapes++;
+ arg++;
+ }
+
+ if (*arg == '\0') {
+ // escape the escapes before final "
+ escapes *= 2;
+ } else if (*arg == '"') {
+ // escape the escapes and the "
+ escapes = escapes * 2 + 1;
+ } else {
+ // escapes aren't special, just echo them.
+ }
+
+ // emit some escapes
+ while (escapes > 0) {
+ if (pass == 2) {
+ *current = '\\';
+ }
+ current++;
+ escapes--;
+ }
+
+ // and the current char
+ if (pass == 2) {
+ *current = *arg;
+ }
+ current++;
+ } while (*arg++ != '\0');
+
+ // allocate the buffer
+ if (pass == 1) {
+ size_t alloc = (size_t) (current - quoted + (ptrdiff_t) 2);
+ current = quoted = (char*) calloc(alloc, sizeof(char));
+ }
+ }
+
+ // final " and \0
+ *(current - 1) = '"';
+ *current = '\0';
+
+ return quoted;
+}
+
+int main(int argc, char const ** argv)
+{
+ STARTUPINFO si;
+ PROCESS_INFORMATION pi;
+ unsigned short rc;
+
+ char *line;
+ char *current;
+ int i, cmd;
+ DWORD exitCode = 0;
+ DWORD processFlags = 0;
+ BOOL processInheritHandles = TRUE;
+ BOOL waitForChild = TRUE;
+
+ if (argc<2 || argv[1][0] != '-' || (argv[1][1] != 'c' && argv[1][1] != 'm')) {
+ fprintf(stderr, "Usage: fixpath -c|m<path@path@...> [--detach] /cygdrive/c/WINDOWS/notepad.exe [/cygdrive/c/x/test.txt|@/cygdrive/c/x/atfile]\n");
+ exit(0);
+ }
+
+ if (getenv("DEBUG_FIXPATH") != NULL) {
+ char const * cmdline = GetCommandLine();
+ fprintf(stderr, "fixpath input line >%s<\n", strstr(cmdline, argv[1]));
+ }
+
+ if (argv[1][1] == 'c' && argv[1][2] == '\0') {
+ if (getenv("DEBUG_FIXPATH") != NULL) {
+ fprintf(stderr, "fixpath using cygwin mode\n");
+ }
+ replace_cygdrive = replace_cygdrive_cygwin;
+ } else if (argv[1][1] == 'm') {
+ if (getenv("DEBUG_FIXPATH") != NULL) {
+ fprintf(stderr, "fixpath using msys mode, with path list: %s\n", &argv[1][2]);
+ }
+ setup_msys_path_list(argv[1]);
+ replace_cygdrive = replace_cygdrive_msys;
+ } else {
+ fprintf(stderr, "fixpath Unknown mode: %s\n", argv[1]);
+ exit(-1);
+ }
+
+ if (argv[2][0] == '-') {
+ if (strcmp(argv[2], "--detach") == 0) {
+ if (getenv("DEBUG_FIXPATH") != NULL) {
+ fprintf(stderr, "fixpath in detached mode\n");
+ }
+ processFlags |= DETACHED_PROCESS;
+ processInheritHandles = FALSE;
+ waitForChild = FALSE;
+ } else {
+ fprintf(stderr, "fixpath Unknown argument: %s\n", argv[2]);
+ exit(-1);
+ }
+ i = 3;
+ } else {
+ i = 2;
+ }
+
+ // handle assignments
+ while (i < argc) {
+ char const * assignment = strchr(argv[i], '=');
+ if (assignment != NULL && assignment != argv[i]) {
+ size_t var_len = (size_t) (assignment - argv[i] + (ptrdiff_t) 1);
+ char *var = (char *) calloc(var_len, sizeof(char));
+ char *val = replace_cygdrive(assignment + 1);
+ memmove(var, argv[i], var_len);
+ var[var_len - 1] = '\0';
+ strupr(var);
+
+ if (getenv("DEBUG_FIXPATH") != NULL) {
+ fprintf(stderr, "fixpath setting var >%s< to >%s<\n", var, val);
+ }
+
+ rc = SetEnvironmentVariable(var, val);
+ if (!rc) {
+ // Could not set var for some reason. Try to report why.
+ const int msg_len = 80 + var_len + strlen(val);
+ char * msg = (char *) alloca(msg_len);
+ _snprintf_s(msg, msg_len, _TRUNCATE, "Could not set environment variable [%s=%s]", var, val);
+ report_error(msg);
+ exit(1);
+ }
+ free(var);
+ free(val);
+ } else {
+ // no more assignments;
+ break;
+ }
+ i++;
+ }
+
+ // remember index of the command
+ cmd = i;
+
+ // handle command and it's args.
+ while (i < argc) {
+ char const *replaced = replace_cygdrive(argv[i]);
+ if (replaced[0] == '@') {
+ if (waitForChild == FALSE) {
+ fprintf(stderr, "fixpath Cannot use @-files in detached mode: %s\n", replaced);
+ exit(1);
+ }
+ // Found at-file! Fix it!
+ replaced = fix_at_file(replaced);
+ }
+ argv[i] = quote_arg(replaced);
+ i++;
+ }
+
+ // determine the length of the line
+ line = NULL;
+ // args
+ for (i = cmd; i < argc; i++) {
+ line += (ptrdiff_t) strlen(argv[i]);
+ }
+ // spaces and null
+ line += (ptrdiff_t) (argc - cmd + 1);
+ // allocate
+ line = (char*) calloc(line - (char*) NULL, sizeof(char));
+
+ // copy in args.
+ current = line;
+ for (i = cmd; i < argc; i++) {
+ ptrdiff_t len = strlen(argv[i]);
+ if (i != cmd) {
+ *current++ = ' ';
+ }
+ memmove(current, argv[i], len);
+ current += len;
+ }
+ *current = '\0';
+
+ if (getenv("DEBUG_FIXPATH") != NULL) {
+ fprintf(stderr, "fixpath converted line >%s<\n", line);
+ }
+
+ if (cmd == argc) {
+ if (getenv("DEBUG_FIXPATH") != NULL) {
+ fprintf(stderr, "fixpath no command provided!\n");
+ }
+ exit(0);
+ }
+
+ ZeroMemory(&si, sizeof(si));
+ si.cb=sizeof(si);
+ ZeroMemory(&pi, sizeof(pi));
+
+ fflush(stderr);
+ fflush(stdout);
+
+ rc = CreateProcess(NULL,
+ line,
+ 0,
+ 0,
+ processInheritHandles,
+ processFlags,
+ NULL,
+ NULL,
+ &si,
+ &pi);
+ if (!rc) {
+ // Could not start process for some reason. Try to report why:
+ report_error("Could not start process!");
+ exit(126);
+ }
+
+ if (waitForChild == TRUE) {
+ WaitForSingleObject(pi.hProcess, INFINITE);
+ GetExitCodeProcess(pi.hProcess, &exitCode);
+
+ if (getenv("DEBUG_FIXPATH") != NULL) {
+ for (i=0; i<num_files_to_delete; ++i) {
+ fprintf(stderr, "fixpath Not deleting temporary file %s\n",
+ files_to_delete[i]);
+ }
+ } else {
+ for (i=0; i<num_files_to_delete; ++i) {
+ remove(files_to_delete[i]);
+ }
+ }
+
+ if (exitCode != 0) {
+ if (getenv("DEBUG_FIXPATH") != NULL) {
+ fprintf(stderr, "fixpath exit code %d\n",
+ exitCode);
+ }
+ }
+ } else {
+ if (getenv("DEBUG_FIXPATH") != NULL) {
+ fprintf(stderr, "fixpath Not waiting for child process");
+ }
+ }
+
+ exit(exitCode);
+}
diff --git a/configure b/configure
new file mode 100644
index 0000000..af0b5b5
--- /dev/null
+++ b/configure
@@ -0,0 +1,35 @@
+#!/bin/bash
+#
+# Copyright (c) 2012, 2014, 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.
+#
+
+# This is a thin wrapper which will call the real configure script, and
+# make sure that is called using bash.
+
+# Get an absolute path to this script, since that determines the top-level directory.
+this_script_dir=`dirname $0`
+this_script_dir=`cd $this_script_dir > /dev/null && pwd`
+
+# Delegate to wrapper, forcing wrapper to believe $0 is this script by using -c.
+# This trick is needed to get autoconf to co-operate properly.
+# The ${-:+-$-} construction passes on bash options.
+bash ${-:+-$-} -c ". $this_script_dir/common/autoconf/configure" $this_script_dir/configure CHECKME $this_script_dir "$@"
diff --git a/get_source.sh b/get_source.sh
new file mode 100644
index 0000000..72049bd
--- /dev/null
+++ b/get_source.sh
@@ -0,0 +1,100 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2010, 2014, 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.
+#
+
+to_stderr() {
+ echo "$@" >&2
+}
+
+error() {
+ to_stderr "ERROR: $1"
+ exit ${2:-126}
+}
+
+warning() {
+ to_stderr "WARNING: $1"
+}
+
+version_field() {
+ # rev is typically omitted for minor and major releases
+ field=`echo ${1}.0 | cut -f ${2} -d .`
+ if expr 1 + $field >/dev/null 2> /dev/null; then
+ echo $field
+ else
+ echo -1
+ fi
+}
+
+# Version check
+
+# required
+reqdmajor=1
+reqdminor=4
+reqdrev=0
+
+# requested
+rqstmajor=2
+rqstminor=6
+rqstrev=3
+
+
+# installed
+hgwhere="`command -v hg`"
+if [ "x$hgwhere" = "x" ]; then
+ error "Could not locate Mercurial command"
+fi
+
+hgversion="`LANGUAGE=en hg --version 2> /dev/null | sed -n -e 's@^Mercurial Distributed SCM (version \([^+]*\).*)\$@\1@p'`"
+if [ "x${hgversion}" = "x" ] ; then
+ error "Could not determine Mercurial version of $hgwhere"
+fi
+
+hgmajor="`version_field $hgversion 1`"
+hgminor="`version_field $hgversion 2`"
+hgrev="`version_field $hgversion 3`"
+
+if [ $hgmajor -eq -1 -o $hgminor -eq -1 -o $hgrev -eq -1 ] ; then
+ error "Could not determine Mercurial version of $hgwhere from \"$hgversion\""
+fi
+
+
+# Require
+if [ $hgmajor -lt $reqdmajor -o \( $hgmajor -eq $reqdmajor -a $hgminor -lt $reqdminor \) -o \( $hgmajor -eq $reqdmajor -a $hgminor -eq $reqdminor -a $hgrev -lt $reqdrev \) ] ; then
+ error "Mercurial version $reqdmajor.$reqdminor.$reqdrev or later is required. $hgwhere is version $hgversion"
+fi
+
+
+# Request
+if [ $hgmajor -lt $rqstmajor -o \( $hgmajor -eq $rqstmajor -a $hgminor -lt $rqstminor \) -o \( $hgmajor -eq $rqstmajor -a $hgminor -eq $rqstminor -a $hgrev -lt $rqstrev \) ] ; then
+ warning "Mercurial version $rqstmajor.$rqstminor.$rqstrev or later is recommended. $hgwhere is version $hgversion"
+fi
+
+
+# Get clones of all absent nested repositories (harmless if already exist)
+sh ./common/bin/hgforest.sh clone "$@" || exit $?
+
+# Update all existing repositories to the latest sources
+sh ./common/bin/hgforest.sh pull -u
diff --git a/make/BuildStatic.gmk b/make/BuildStatic.gmk
new file mode 100644
index 0000000..b8dceeb
--- /dev/null
+++ b/make/BuildStatic.gmk
@@ -0,0 +1,54 @@
+#
+# Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+
+################################################################################
+#
+# Concatenate exported.symbols files for modules into a single global file.
+#
+
+GLOBAL_SYMBOLS_FILE := $(SUPPORT_OUTPUTDIR)/build-static/exported.symbols
+
+EXPORTED_SYMBOLS_MODULES := java.base jdk.jdwp.agent
+
+MODULES_SYMBOLS_FILES := $(foreach module, $(EXPORTED_SYMBOLS_MODULES), \
+ $(SUPPORT_OUTPUTDIR)/modules_libs/$(module)/$(module).symbols)
+
+$(GLOBAL_SYMBOLS_FILE): $(MODULES_SYMBOLS_FILES)
+ $(call LogInfo, Generating global exported.symbols file)
+ $(MKDIR) -p $(@D)
+ $(CAT) $^ > $@
+
+TARGETS += $(GLOBAL_SYMBOLS_FILE)
+
+################################################################################
+
+all: $(TARGETS)
+
+.PHONY: default all
diff --git a/make/Bundles.gmk b/make/Bundles.gmk
new file mode 100644
index 0000000..8132155
--- /dev/null
+++ b/make/Bundles.gmk
@@ -0,0 +1,334 @@
+#
+# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+
+PRODUCT_TARGETS :=
+TEST_TARGETS :=
+DOCS_TARGETS :=
+
+# On Windows tar frequently complains that "file changed as we read it" for
+# some random source files. This seems to be cause by anti virus scanners and
+# is most likely safe to ignore. When it happens, tar returns '1'.
+ifeq ($(OPENJDK_BUILD_OS), windows)
+ TAR_IGNORE_EXIT_VALUE := || test "$$$$?" = "1"
+endif
+
+# Hook to include the corresponding custom file, if present.
+$(eval $(call IncludeCustomExtension, , Bundles-pre.gmk))
+################################################################################
+# BUNDLE : Name of bundle to create
+# FILES : Files in BASE_DIRS to add to bundle
+# SPECIAL_INCLUDES : List of directories inside BASE_DIRS to look for additional
+# files in. These files will not get proper dependency handling. Use when
+# files or directories may contain spaces.
+# BASE_DIRS : Base directories for the root dir in the bundle.
+# SUBDIR : Optional name of root dir in bundle.
+SetupBundleFile = $(NamedParamsMacroTemplate)
+define SetupBundleFileBody
+
+ $$(foreach d, $$($1_BASE_DIRS), \
+ $$(eval $1_$$d_RELATIVE_FILES := $$$$(patsubst $$d/%, %, \
+ $$$$(filter $$d/%, $$$$($1_FILES)))) \
+ $$(eval $1_$$d_LIST_FILE := \
+ $(SUPPORT_OUTPUTDIR)/bundles/_$1_$$$$(subst /,_,$$$$(patsubst $(TOPDIR)/%,%,$$d)_files)) \
+ )
+
+ ifneq ($$(filter %.tar.gz, $$($1_BUNDLE_NAME)), )
+ $1_TYPE := tar.gz
+ else ifneq ($$(filter %.zip, $$($1_BUNDLE_NAME)), )
+ $1_TYPE := zip
+ else
+ $$(error Unknown bundle type $$($1_BUNDLE_NAME))
+ endif
+
+ $$(call SetIfEmpty, $1_UNZIP_DEBUGINFO, false)
+
+ $(BUNDLES_OUTPUTDIR)/$$($1_BUNDLE_NAME): $$($1_FILES)
+ $$(foreach d, $$($1_BASE_DIRS), \
+ $$(eval $$(call ListPathsSafely, \
+ $1_$$d_RELATIVE_FILES, $$($1_$$d_LIST_FILE))) \
+ )
+ $$(call MakeDir, $$(@D))
+ ifneq ($$($1_SPECIAL_INCLUDES), )
+ $$(foreach i, $$($1_SPECIAL_INCLUDES), \
+ $$(foreach d, $$($1_BASE_DIRS), \
+ ($(CD) $$d && $(FIND) $$i >> $$($1_$$d_LIST_FILE)) ; ))
+ endif
+ ifeq ($$($1_SUBDIR)-$$($1_TYPE)-$$($1_UNZIP_DEBUGINFO), .-zip-false)
+ # If no subdir is specified, zip can be done directly from BASE_DIRS.
+ $$(foreach d, $$($1_BASE_DIRS), \
+ ( $(CD) $$d \
+ && $(ZIPEXE) -qru $$@ . -i@$$($1_$$d_LIST_FILE) \
+ || test "$$$$?" = "12" )$$(NEWLINE))
+ else ifeq ($$($1_SUBDIR)-$$($1_TYPE)-$$($1_UNZIP_DEBUGINFO)-$$(words $$($1_BASE_DIRS)), \
+ .-tar.gz-false-1)
+ # If no subdir is specified and only one BASE_DIR, tar.gz can be done
+ # directly from BASE_DIR.
+ $(CD) $$($1_BASE_DIRS) \
+ && ( $(TAR) cf - $(TAR_CREATE_EXTRA_PARAM) \
+ -$(TAR_INCLUDE_PARAM) $$($1_$$($1_BASE_DIRS)_LIST_FILE) \
+ $(TAR_IGNORE_EXIT_VALUE) ) \
+ | $(GZIP) > $$@
+ else ifeq ($$($1_TYPE)-$(TAR_SUPPORTS_TRANSFORM)-$$($1_UNZIP_DEBUGINFO)-$$(words $$($1_BASE_DIRS)), \
+ tar.gz-true-false-1)
+ # If only one BASE_DIR, but with a SUBDIR set, tar.gz can use the
+ # transform option to create bundle directly from the BASE_DIR.
+ $(CD) $$($1_BASE_DIRS) \
+ && ( $(TAR) cf - $(TAR_CREATE_EXTRA_PARAM) \
+ -$(TAR_INCLUDE_PARAM) $$($1_$$($1_BASE_DIRS)_LIST_FILE) \
+ $$(if $$($1_SUBDIR), --transform 's|^|$$($1_SUBDIR)/|S') \
+ $(TAR_IGNORE_EXIT_VALUE) ) \
+ | $(GZIP) > $$@
+ else
+ # In all other cases, need to copy all files into a temporary location
+ # before creation bundle.
+ $(RM) -r $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR)
+ $(MKDIR) -p $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR)
+ $$(foreach d, $$($1_BASE_DIRS), \
+ ( $(CD) $$d \
+ && $(TAR) cf - -$(TAR_INCLUDE_PARAM) $$($1_$$d_LIST_FILE) \
+ $(TAR_IGNORE_EXIT_VALUE) ) \
+ | ( $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) && $(TAR) xf - )$$(NEWLINE) )
+ # Unzip any zipped debuginfo files
+ ifeq ($$($1_UNZIP_DEBUGINFO), true)
+ for f in `$(FIND) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) -name "*.diz"`; do \
+ $(CD) $$$${f%/*} && $(UNZIP) -q $$$${f} && $(RM) $$$${f}; \
+ done
+ endif
+ ifeq ($$($1_TYPE), tar.gz)
+ $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1 && \
+ ( $(TAR) cf - $(TAR_CREATE_EXTRA_PARAM) \
+ $$(if $$($1_SUBDIR), $$($1_SUBDIR), .) $(TAR_IGNORE_EXIT_VALUE) ) \
+ | $(GZIP) > $$@
+ else ifeq ($$($1_TYPE), zip)
+ $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1 && $(ZIPEXE) -qr $$@ .
+ endif
+ endif
+
+ $1 += $(BUNDLES_OUTPUTDIR)/$$($1_BUNDLE_NAME)
+
+endef
+
+################################################################################
+
+# On Macosx, we bundle up the macosx specific images which already have the
+# correct base directories.
+ifeq ($(OPENJDK_TARGET_OS)-$(DEBUG_LEVEL), macosx-release)
+ JDK_IMAGE_DIR := $(JDK_MACOSX_BUNDLE_DIR)
+ JRE_IMAGE_DIR := $(JRE_MACOSX_BUNDLE_DIR)
+ JDK_IMAGE_HOMEDIR := $(JDK_MACOSX_CONTENTS_DIR)/Home
+ JRE_IMAGE_HOMEDIR := $(JRE_MACOSX_CONTENTS_DIR)/Home
+ JDK_BUNDLE_SUBDIR :=
+ JRE_BUNDLE_SUBDIR :=
+else
+ JDK_IMAGE_HOMEDIR := $(JDK_IMAGE_DIR)
+ JRE_IMAGE_HOMEDIR := $(JRE_IMAGE_DIR)
+ JDK_BUNDLE_SUBDIR := jdk-$(VERSION_NUMBER)
+ JRE_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER)
+ JRE_COMPACT1_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER)-compact1
+ JRE_COMPACT2_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER)-compact2
+ JRE_COMPACT3_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER)-compact3
+ ifneq ($(DEBUG_LEVEL), release)
+ JDK_BUNDLE_SUBDIR := $(JDK_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
+ JRE_BUNDLE_SUBDIR := $(JRE_BUNDLE_SUBDIR)/$(DEBUG_LEVEL)
+ endif
+endif
+
+################################################################################
+
+ifneq ($(filter product-bundles, $(MAKECMDGOALS)), )
+ $(eval $(call FillCacheFind, $(IMAGES_OUTPUTDIR)))
+
+ SYMBOLS_EXCLUDE_PATTERN := %.debuginfo %.diz %.pdb %.map
+
+ ALL_JDK_FILES := $(call CacheFind, $(JDK_IMAGE_DIR))
+
+ # Create special filter rules when dealing with unzipped .dSYM directories on
+ # macosx
+ ifeq ($(OPENJDK_TARGET_OS), macosx)
+ ifeq ($(ZIP_DEBUGINFO_FILES), false)
+ JDK_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \
+ $(call containing, .dSYM/, $(patsubst $(JDK_IMAGE_DIR)/%, %, $(ALL_JDK_FILES))))
+ endif
+ endif
+
+ JDK_BUNDLE_FILES := \
+ $(filter-out \
+ $(JDK_SYMBOLS_EXCLUDE_PATTERN) \
+ $(JDK_EXTRA_EXCLUDES) \
+ $(SYMBOLS_EXCLUDE_PATTERN) \
+ $(JDK_IMAGE_HOMEDIR)/demo/% \
+ , \
+ $(ALL_JDK_FILES) \
+ )
+ JDK_SYMBOLS_BUNDLE_FILES := \
+ $(filter \
+ $(JDK_SYMBOLS_EXCLUDE_PATTERN) \
+ $(SYMBOLS_EXCLUDE_PATTERN) \
+ , \
+ $(filter-out \
+ $(JDK_IMAGE_HOMEDIR)/demo/% \
+ , \
+ $(ALL_JDK_FILES) \
+ ) \
+ ) \
+ $(call CacheFind, $(SYMBOLS_IMAGE_DIR))
+
+ ALL_JRE_FILES := $(call CacheFind, $(JRE_IMAGE_DIR))
+
+ # Create special filter rules when dealing with unzipped .dSYM directories on
+ # macosx
+ ifeq ($(OPENJDK_TARGET_OS), macosx)
+ ifeq ($(ZIP_DEBUGINFO_FILES), false)
+ JRE_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \
+ $(call containing, .dSYM/, $(patsubst $(JRE_IMAGE_DIR)/%, %, $(ALL_JRE_FILES))))
+ endif
+ endif
+
+ JRE_BUNDLE_FILES := $(filter-out \
+ $(JRE_SYMBOLS_EXCLUDE_PATTERN) \
+ $(SYMBOLS_EXCLUDE_PATTERN), \
+ $(ALL_JRE_FILES))
+ JRE_SYMBOLS_BUNDLE_FILES := $(filter \
+ $(JRE_SYMBOLS_EXCLUDE_PATTERN) \
+ $(SYMBOLS_EXCLUDE_PATTERN), \
+ $(ALL_JRE_FILES))
+
+ $(eval $(call SetupBundleFile, BUILD_JDK_BUNDLE, \
+ BUNDLE_NAME := $(JDK_BUNDLE_NAME), \
+ FILES := $(JDK_BUNDLE_FILES), \
+ SPECIAL_INCLUDES := $(JDK_SPECIAL_INCLUDES), \
+ BASE_DIRS := $(JDK_IMAGE_DIR), \
+ SUBDIR := $(JDK_BUNDLE_SUBDIR), \
+ ))
+
+ PRODUCT_TARGETS += $(BUILD_JDK_BUNDLE)
+
+ $(eval $(call SetupBundleFile, BUILD_JRE_BUNDLE, \
+ BUNDLE_NAME := $(JRE_BUNDLE_NAME), \
+ FILES := $(JRE_BUNDLE_FILES), \
+ BASE_DIRS := $(JRE_IMAGE_DIR), \
+ SUBDIR := $(JRE_BUNDLE_SUBDIR), \
+ ))
+
+ PRODUCT_TARGETS += $(BUILD_JRE_BUNDLE)
+
+ $(eval $(call SetupBundleFile, BUILD_JDK_SYMBOLS_BUNDLE, \
+ BUNDLE_NAME := $(JDK_SYMBOLS_BUNDLE_NAME), \
+ FILES := $(JDK_SYMBOLS_BUNDLE_FILES), \
+ BASE_DIRS := $(JDK_IMAGE_DIR) $(wildcard $(SYMBOLS_IMAGE_DIR)), \
+ SUBDIR := $(JDK_BUNDLE_SUBDIR), \
+ UNZIP_DEBUGINFO := true, \
+ ))
+
+ PRODUCT_TARGETS += $(BUILD_JDK_SYMBOLS_BUNDLE)
+
+ $(eval $(call SetupBundleFile, BUILD_JRE_SYMBOLS_BUNDLE, \
+ BUNDLE_NAME := $(JRE_SYMBOLS_BUNDLE_NAME), \
+ FILES := $(JRE_SYMBOLS_BUNDLE_FILES), \
+ BASE_DIRS := $(JRE_IMAGE_DIR), \
+ SUBDIR := $(JRE_BUNDLE_SUBDIR), \
+ UNZIP_DEBUGINFO := true, \
+ ))
+
+ PRODUCT_TARGETS += $(BUILD_JRE_SYMBOLS_BUNDLE)
+
+endif
+
+################################################################################
+
+ifneq ($(filter profiles-bundles, $(MAKECMDGOALS)), )
+ ifeq ($(OPENJDK_TARGET_OS), macosx)
+ $(error Creating compact profiles bundles on macosx is unsupported)
+ endif
+
+ define GenerateCompactProfilesBundles
+ ALL_JRE_COMPACT$1_FILES := $$(call CacheFind, $$(JRE_COMPACT$1_IMAGE_DIR))
+
+ JRE_COMPACT$1_BUNDLE_FILES := $$(filter-out \
+ $$(SYMBOLS_EXCLUDE_PATTERN), \
+ $$(ALL_JRE_COMPACT$1_FILES))
+
+ $$(eval $$(call SetupBundleFile, BUILD_JRE_COMPACT$1_BUNDLE, \
+ BUNDLE_NAME := $$(JRE_COMPACT$1_BUNDLE_NAME), \
+ FILES := $$(JRE_COMPACT$1_BUNDLE_FILES), \
+ BASE_DIRS := $$(JRE_COMPACT$1_IMAGE_DIR), \
+ SUBDIR := $$(JRE_COMPACT$1_BUNDLE_SUBDIR), \
+ ))
+
+ PROFILES_TARGETS += $$(BUILD_JRE_COMPACT$1_BUNDLE)
+ endef
+
+ $(eval $(call GenerateCompactProfilesBundles,1))
+ $(eval $(call GenerateCompactProfilesBundles,2))
+ $(eval $(call GenerateCompactProfilesBundles,3))
+endif
+
+################################################################################
+
+ifneq ($(filter test-bundles, $(MAKECMDGOALS)), )
+ TEST_BUNDLE_FILES := $(call CacheFind, $(TEST_IMAGE_DIR))
+
+ $(eval $(call SetupBundleFile, BUILD_TEST_BUNDLE, \
+ BUNDLE_NAME := $(TEST_BUNDLE_NAME), \
+ FILES := $(TEST_BUNDLE_FILES), \
+ BASE_DIRS := $(TEST_IMAGE_DIR), \
+ ))
+
+ TEST_TARGETS += $(BUILD_TEST_BUNDLE)
+endif
+
+################################################################################
+
+ifneq ($(filter docs-bundles, $(MAKECMDGOALS)), )
+ DOCS_BUNDLE_FILES := $(call CacheFind, $(DOCS_IMAGE_DIR))
+
+ $(eval $(call SetupBundleFile, BUILD_DOCS_BUNDLE, \
+ BUNDLE_NAME := $(DOCS_BUNDLE_NAME), \
+ FILES := $(DOCS_BUNDLE_FILES), \
+ BASE_DIRS := $(DOCS_IMAGE_DIR), \
+ SUBDIR := docs, \
+ ))
+
+ DOCS_TARGETS += $(BUILD_DOCS_BUNDLE)
+endif
+
+################################################################################
+
+# Hook to include the corresponding custom file, if present.
+$(eval $(call IncludeCustomExtension, , Bundles.gmk))
+
+################################################################################
+
+product-bundles: $(PRODUCT_TARGETS)
+profiles-bundles: $(PROFILES_TARGETS)
+test-bundles: $(TEST_TARGETS)
+docs-bundles: $(DOCS_TARGETS)
+
+.PHONY: all default product-bundles profiles-bundles test-bundles docs-bundles
diff --git a/make/CompileJavaModules.gmk b/make/CompileJavaModules.gmk
new file mode 100644
index 0000000..090434a
--- /dev/null
+++ b/make/CompileJavaModules.gmk
@@ -0,0 +1,694 @@
+#
+# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+# This must be the first rule
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include Modules.gmk
+include JavaCompilation.gmk
+include SetupJavaCompilers.gmk
+
+# Hook to include the corresponding custom file, if present.
+$(eval $(call IncludeCustomExtension, , CompileJavaModules.gmk))
+
+################################################################################
+# Module specific build settings
+
+java.activation_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
+
+################################################################################
+
+java.base_ADD_JAVAC_FLAGS := -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*' -XDstringConcat=inline
+java.base_COPY := .icu .dat .spp content-types.properties hijrah-config-islamic-umalqura.properties
+java.base_CLEAN := intrinsic.properties
+
+java.base_EXCLUDE_FILES += \
+ $(JDK_TOPDIR)/src/java.base/share/classes/jdk/internal/module/ModuleLoaderMap.java
+
+java.base_EXCLUDES += java/lang/doc-files
+
+# Exclude BreakIterator classes that are just used in compile process to generate
+# data files and shouldn't go in the product
+java.base_EXCLUDE_FILES += sun/text/resources/BreakIteratorRules.java
+
+ifneq ($(filter solaris macosx linux windows,$(OPENJDK_TARGET_OS)), )
+ java.base_EXCLUDE_FILES += \
+ sun/nio/ch/AbstractPollSelectorImpl.java \
+ sun/nio/ch/PollSelectorImpl.java \
+ sun/nio/ch/PollSelectorProvider.java \
+ #
+endif
+
+ifneq ($(OPENJDK_TARGET_OS), solaris)
+ java.base_EXCLUDE_FILES += \
+ SolarisLoginModule.java \
+ SolarisSystem.java \
+ #
+endif
+
+ifeq ($(filter $(OPENJDK_TARGET_OS), solaris macosx aix), )
+ #
+ # only solaris, macosx and aix
+ #
+ java.base_EXCLUDE_FILES += sun/nio/fs/PollingWatchService.java
+endif
+
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ java.base_EXCLUDE_FILES += \
+ sun/nio/ch/SimpleAsynchronousFileChannelImpl.java \
+ #
+endif
+
+################################################################################
+
+java.compiler_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
+
+################################################################################
+
+java.datatransfer_ADD_JAVAC_FLAGS := -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*'
+java.datatransfer_COPY := flavormap.properties
+
+################################################################################
+
+java.desktop_ADD_JAVAC_FLAGS := -Xdoclint:all/protected,-reference \
+ '-Xdoclint/package:java.*,javax.*' -Xlint:exports \
+ --doclint-format html4
+java.desktop_COPY := .gif .png .wav .txt .xml .css .pf
+java.desktop_CLEAN := iio-plugin.properties cursors.properties
+
+java.desktop_EXCLUDES += \
+ java/awt/doc-files \
+ javax/swing/doc-files \
+ javax/swing/text/doc-files \
+ javax/swing/plaf/synth/doc-files \
+ javax/swing/undo/doc-files \
+ sun/awt/X11/doc-files \
+ #
+
+java.desktop_EXCLUDE_FILES += \
+ javax/swing/plaf/nimbus/InternalFrameTitlePanePainter.java \
+ javax/swing/plaf/nimbus/OptionPaneMessageAreaPainter.java \
+ javax/swing/plaf/nimbus/ScrollBarPainter.java \
+ javax/swing/plaf/nimbus/SliderPainter.java \
+ javax/swing/plaf/nimbus/SpinnerPainter.java \
+ javax/swing/plaf/nimbus/SplitPanePainter.java \
+ javax/swing/plaf/nimbus/TabbedPanePainter.java \
+ sun/awt/resources/security-icon-bw16.png \
+ sun/awt/resources/security-icon-bw24.png \
+ sun/awt/resources/security-icon-bw32.png \
+ sun/awt/resources/security-icon-bw48.png \
+ sun/awt/resources/security-icon-interim16.png \
+ sun/awt/resources/security-icon-interim24.png \
+ sun/awt/resources/security-icon-interim32.png \
+ sun/awt/resources/security-icon-interim48.png \
+ sun/awt/resources/security-icon-yellow16.png \
+ sun/awt/resources/security-icon-yellow24.png \
+ sun/awt/resources/security-icon-yellow32.png \
+ sun/awt/resources/security-icon-yellow48.png \
+ sun/awt/X11/java-icon16.png \
+ sun/awt/X11/java-icon24.png \
+ sun/awt/X11/java-icon32.png \
+ sun/awt/X11/java-icon48.png \
+ .template \
+ #
+
+ifeq ($(OPENJDK_TARGET_OS), macosx)
+ # exclude all X11 on Mac.
+ java.desktop_EXCLUDES += \
+ sun/awt/X11 \
+ sun/java2d/x11 \
+ sun/java2d/jules \
+ sun/java2d/xr \
+ com/sun/java/swing/plaf/gtk \
+ #
+ java.desktop_EXCLUDE_FILES += \
+ $(wildcard $(JDK_TOPDIR)/src/java.desktop/unix/classes/sun/java2d/*.java) \
+ $(wildcard $(JDK_TOPDIR)/src/java.desktop/unix/classes/sun/java2d/opengl/*.java) \
+ $(wildcard $(JDK_TOPDIR)/src/java.desktop/unix/classes/sun/awt/*.java) \
+ $(wildcard $(JDK_TOPDIR)/src/java.desktop/unix/classes/sun/font/*.java) \
+ #
+else
+ # TBD: figure out how to eliminate this long list
+ java.desktop_EXCLUDE_FILES += \
+ sun/awt/X11/ScreenFormat.java \
+ sun/awt/X11/XArc.java \
+ sun/awt/X11/XChar2b.java \
+ sun/awt/X11/XCharStruct.java \
+ sun/awt/X11/XClassHint.java \
+ sun/awt/X11/XComposeStatus.java \
+ sun/awt/X11/XExtCodes.java \
+ sun/awt/X11/XFontProp.java \
+ sun/awt/X11/XFontSetExtents.java \
+ sun/awt/X11/XFontStruct.java \
+ sun/awt/X11/XGCValues.java \
+ sun/awt/X11/XHostAddress.java \
+ sun/awt/X11/XIMCallback.java \
+ sun/awt/X11/XIMHotKeyTrigger.java \
+ sun/awt/X11/XIMHotKeyTriggers.java \
+ sun/awt/X11/XIMPreeditCaretCallbackStruct.java \
+ sun/awt/X11/XIMPreeditDrawCallbackStruct.java \
+ sun/awt/X11/XIMPreeditStateNotifyCallbackStruct.java \
+ sun/awt/X11/XIMStatusDrawCallbackStruct.java \
+ sun/awt/X11/XIMStringConversionCallbackStruct.java \
+ sun/awt/X11/XIMStringConversionText.java \
+ sun/awt/X11/XIMStyles.java \
+ sun/awt/X11/XIMText.java \
+ sun/awt/X11/XIMValuesList.java \
+ sun/awt/X11/XImage.java \
+ sun/awt/X11/XKeyboardControl.java \
+ sun/awt/X11/XKeyboardState.java \
+ sun/awt/X11/XOMCharSetList.java \
+ sun/awt/X11/XOMFontInfo.java \
+ sun/awt/X11/XOMOrientation.java \
+ sun/awt/X11/XPoint.java \
+ sun/awt/X11/XRectangle.java \
+ sun/awt/X11/XSegment.java \
+ sun/awt/X11/XStandardColormap.java \
+ sun/awt/X11/XTextItem.java \
+ sun/awt/X11/XTextItem16.java \
+ sun/awt/X11/XTextProperty.java \
+ sun/awt/X11/XTimeCoord.java \
+ sun/awt/X11/XWindowChanges.java \
+ sun/awt/X11/XdbeSwapInfo.java \
+ sun/awt/X11/XmbTextItem.java \
+ sun/awt/X11/XwcTextItem.java
+endif
+
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ java.desktop_EXCLUDES += com/sun/java/swing/plaf/gtk
+endif
+
+ifdef BUILD_HEADLESS_ONLY
+ java.desktop_EXCLUDES += sun/applet
+endif
+
+# Used on windows and macosx
+ifeq ($(filter $(OPENJDK_TARGET_OS), windows macosx), )
+ java.desktop_EXCLUDE_FILES += sun/awt/AWTCharset.java
+endif
+
+# These files do not appear in the build result of the old build. This
+# is because they are generated sources, but the AUTO_JAVA_FILES won't
+# pick them up since they aren't generated when the source dirs are
+# searched and they aren't referenced by any other classes so they won't
+# be picked up by implicit compilation. On a rebuild, they are picked up
+# and compiled. Exclude them here to produce the same rt.jar as the old
+# build does when building just once.
+java.desktop_EXCLUDE_FILES += \
+ javax/swing/plaf/nimbus/InternalFrameTitlePanePainter.java \
+ javax/swing/plaf/nimbus/OptionPaneMessageAreaPainter.java \
+ javax/swing/plaf/nimbus/ScrollBarPainter.java \
+ javax/swing/plaf/nimbus/SliderPainter.java \
+ javax/swing/plaf/nimbus/SpinnerPainter.java \
+ javax/swing/plaf/nimbus/SplitPanePainter.java \
+ javax/swing/plaf/nimbus/TabbedPanePainter.java \
+ #
+
+################################################################################
+
+java.scripting_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
+java.scripting_COPY := .js
+java.scripting_CLEAN := .properties
+
+################################################################################
+
+java.instrument_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
+
+################################################################################
+
+java.logging_ADD_JAVAC_FLAGS := -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*'
+
+################################################################################
+
+java.management_ADD_JAVAC_FLAGS := -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*'
+
+################################################################################
+
+java.management.rmi_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:javax.*'
+
+################################################################################
+
+java.prefs_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
+
+################################################################################
+
+java.transaction_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
+
+################################################################################
+
+java.sql_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
+java.sql_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
+
+################################################################################
+
+java.sql.rowset_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
+java.sql.rowset_CLEAN_FILES := $(wildcard \
+ $(JDK_TOPDIR)/src/java.sql.rowset/share/classes/com/sun/rowset/*.properties \
+ $(JDK_TOPDIR)/src/java.sql.rowset/share/classes/javax/sql/rowset/*.properties)
+
+################################################################################
+
+java.rmi_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
+java.rmi_CLEAN_FILES := $(wildcard \
+ $(JDK_TOPDIR)/src/java.rmi/share/classes/sun/rmi/registry/resources/*.properties \
+ $(JDK_TOPDIR)/src/java.rmi/share/classes/sun/rmi/server/resources/*.properties)
+
+################################################################################
+
+java.corba_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
+
+java.corba_COPY := .prp
+java.corba_CLEAN := .properties
+
+java.corba_EXCLUDES += \
+ com/sun/corba/se/PortableActivationIDL \
+ com/sun/tools/corba/se/logutil \
+ #
+java.corba_EXCLUDE_FILES += \
+ com/sun/corba/se/impl/presentation/rmi/JNDIStateFactoryImpl.java \
+ com/sun/corba/se/spi/presentation/rmi/StubWrapper.java \
+ com/sun/org/omg/CORBA/IDLTypeOperations.java \
+ com/sun/org/omg/CORBA/IRObjectOperations.java \
+ org/omg/PortableInterceptor/UNKNOWN.java \
+ com/sun/tools/corba/se/idl/ResourceBundleUtil.java \
+ com/sun/corba/se/impl/presentation/rmi/jndi.properties \
+ #
+
+################################################################################
+
+java.xml_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
+java.xml_CLEAN := .properties
+
+################################################################################
+
+java.xml.bind_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
+java.xml.bind_CLEAN := .properties
+
+################################################################################
+
+java.xml.soap_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
+java.xml.soap_CLEAN := .properties
+
+################################################################################
+
+java.xml.ws_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
+java.xml.ws_COPY := .xml
+java.xml.ws_CLEAN := .properties
+
+################################################################################
+
+java.naming_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*' -Xlint:-exports
+java.naming_CLEAN := jndiprovider.properties
+
+################################################################################
+
+java.security.saaj_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
+java.security.saaj_CLEAN := .properties
+
+################################################################################
+
+java.security.jgss_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
+
+################################################################################
+
+java.smartcardio_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
+
+################################################################################
+
+java.xml.crypto_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
+java.xml.crypto_COPY := .dtd .xml
+java.xml.crypto_CLEAN := .properties
+
+################################################################################
+
+jdk.charsets_COPY := .dat
+
+################################################################################
+
+################################################################################
+
+jdk.compiler_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:-com.sun.tools.*,-jdk.internal.*' \
+ -XDstringConcat=inline
+jdk.compiler_CLEAN_FILES := $(wildcard \
+ $(patsubst %, $(JDK_TOPDIR)/src/jdk.compiler/share/classes/%/*.properties, \
+ sun/tools/serialver/resources))
+
+################################################################################
+
+jdk.hotspot.agent_ADD_JAVAC_FLAGS := $(DISABLE_WARNINGS),-overrides
+jdk.hotspot.agent_COPY := .gif .png sa.js .properties
+
+################################################################################
+
+jdk.editpad_COPY := .properties
+
+################################################################################
+
+jdk.jshell_COPY := .jsh .properties
+
+################################################################################
+
+jdk.internal.le_COPY := .properties
+
+################################################################################
+
+jdk.jcmd_COPY := _options
+
+################################################################################
+
+jdk.dynalink_CLEAN := .properties
+
+################################################################################
+
+jdk.javadoc_COPY := .xml .css .js .png
+
+################################################################################
+
+jdk.jartool_ADD_JAVAC_FLAGS := -XDstringConcat=inline
+
+################################################################################
+
+jdk.rmic_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
+jdk.rmic_CLEAN := .properties
+
+################################################################################
+
+# No SCTP implementation on Mac OS X or AIX. These classes should be excluded.
+SCTP_IMPL_CLASSES = \
+ $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/AssociationChange.java \
+ $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/AssociationImpl.java \
+ $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/PeerAddrChange.java \
+ $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/ResultContainer.java \
+ $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpChannelImpl.java \
+ $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java \
+ $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpNet.java \
+ $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpNotification.java \
+ $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java \
+ $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SendFailed.java \
+ $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/Shutdown.java
+
+ifeq ($(OPENJDK_TARGET_OS), macosx)
+ jdk.sctp_EXCLUDE_FILES += $(SCTP_IMPL_CLASSES)
+endif
+
+ifeq ($(OPENJDK_TARGET_OS),aix)
+ jdk.sctp_EXCLUDE_FILES += $(SCTP_IMPL_CLASSES)
+endif
+
+################################################################################
+
+jdk.jconsole_COPY := .gif .png
+
+jdk.jconsole_CLEAN_FILES := $(wildcard \
+ $(JDK_TOPDIR)/src/jdk.jconsole/share/classes/sun/tools/jconsole/resources/*.properties)
+
+################################################################################
+
+jdk.jdeps_COPY := .txt
+
+jdk.jdeps_CLEAN_FILES := $(wildcard \
+ $(JDK_TOPDIR)/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/*.properties \
+ $(JDK_TOPDIR)/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/*.properties)
+
+################################################################################
+
+jdk.jdi_EXCLUDES += \
+ com/sun/tools/example/debug/bdi \
+ com/sun/tools/example/debug/event \
+ com/sun/tools/example/debug/gui \
+ com/sun/jdi/doc-files \
+ #
+
+jdk.jdi_EXCLUDE_FILES += jdi-overview.html
+
+################################################################################
+
+jdk.dev_CLEAN_FILES := $(wildcard \
+ $(patsubst %, $(JDK_TOPDIR)/src/jdk.dev/share/classes/%/*.properties, \
+ com/sun/tools/script/shell))
+
+jdk.dev_COPY := .js oqlhelp.html .txt
+
+################################################################################
+
+jdk.internal.jvmstat_COPY := aliasmap
+
+################################################################################
+
+# -parameters provides method's parameters information in class file,
+# JVMCI compilers make use of that information for various sanity checks.
+# Don't use Indy strings concatenation to have good JVMCI startup performance.
+# The exports are needed since JVMCI is dynamically exported (see
+# jdk.vm.ci.services.internal.ReflectionAccessJDK::openJVMCITo).
+
+jdk.internal.vm.ci_ADD_JAVAC_FLAGS := -parameters -Xlint:-exports -XDstringConcat=inline
+
+################################################################################
+
+jdk.internal.vm.compiler_ADD_JAVAC_FLAGS := -parameters -XDstringConcat=inline \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.aarch64=jdk.internal.vm.compiler \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.amd64=jdk.internal.vm.compiler \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.code=jdk.internal.vm.compiler \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.code.site=jdk.internal.vm.compiler \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.code.stack=jdk.internal.vm.compiler \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.common=jdk.internal.vm.compiler \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot=jdk.internal.vm.compiler \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=jdk.internal.vm.compiler \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=jdk.internal.vm.compiler \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot.sparc=jdk.internal.vm.compiler \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.meta=jdk.internal.vm.compiler \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.runtime=jdk.internal.vm.compiler \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.sparc=jdk.internal.vm.compiler \
+ #
+
+jdk.internal.vm.compiler_EXCLUDES += \
+ org.graalvm.compiler.core.match.processor \
+ org.graalvm.compiler.nodeinfo.processor \
+ org.graalvm.compiler.options.processor \
+ org.graalvm.compiler.serviceprovider.processor \
+ org.graalvm.compiler.replacements.verifier \
+ org.graalvm.compiler.api.directives.test \
+ org.graalvm.compiler.api.test \
+ org.graalvm.compiler.asm.aarch64.test \
+ org.graalvm.compiler.asm.amd64.test \
+ org.graalvm.compiler.asm.sparc.test \
+ org.graalvm.compiler.asm.test \
+ org.graalvm.compiler.core.amd64.test \
+ org.graalvm.compiler.core.sparc.test \
+ org.graalvm.compiler.core.test \
+ org.graalvm.compiler.debug.test \
+ org.graalvm.compiler.graph.test \
+ org.graalvm.compiler.hotspot.amd64.test \
+ org.graalvm.compiler.hotspot.lir.test \
+ org.graalvm.compiler.hotspot.test \
+ org.graalvm.compiler.jtt \
+ org.graalvm.compiler.lir.jtt \
+ org.graalvm.compiler.lir.test \
+ org.graalvm.compiler.microbenchmarks \
+ org.graalvm.compiler.nodes.test \
+ org.graalvm.compiler.options.test \
+ org.graalvm.compiler.phases.common.test \
+ org.graalvm.compiler.replacements.test \
+ org.graalvm.compiler.test \
+ org.graalvm.compiler.virtual.bench \
+ #
+
+################################################################################
+
+# -parameters provides method's parameters information in class file,
+# JVMCI compilers make use of that information for various sanity checks.
+# Don't use Indy strings concatenation to have good JAOTC startup performance.
+# The exports are needed since JVMCI is dynamically exported (see
+# jdk.vm.ci.services.internal.ReflectionAccessJDK::openJVMCITo).
+
+jdk.aot_ADD_JAVAC_FLAGS := -parameters -XDstringConcat=inline \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.aarch64=jdk.internal.vm.compiler,jdk.aot \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.amd64=jdk.internal.vm.compiler,jdk.aot \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.code=jdk.internal.vm.compiler,jdk.aot \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.code.site=jdk.internal.vm.compiler,jdk.aot \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.code.stack=jdk.internal.vm.compiler,jdk.aot \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.common=jdk.internal.vm.compiler,jdk.aot \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot=jdk.internal.vm.compiler,jdk.aot \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=jdk.internal.vm.compiler,jdk.aot \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=jdk.internal.vm.compiler,jdk.aot \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot.sparc=jdk.internal.vm.compiler,jdk.aot \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.meta=jdk.internal.vm.compiler,jdk.aot \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.runtime=jdk.internal.vm.compiler,jdk.aot \
+ --add-exports jdk.internal.vm.ci/jdk.vm.ci.sparc=jdk.internal.vm.compiler,jdk.aot \
+ #
+
+################################################################################
+
+jdk.xml.bind_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
+jdk.xml.bind_CLEAN := .properties
+jdk.xml.bind_COPY := .xsd JAXBContextFactory.java ZeroOneBooleanAdapter.java
+
+################################################################################
+
+jdk.xml.ws_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
+jdk.xml.ws_CLEAN := .properties
+
+################################################################################
+
+sun.charsets_COPY := .dat
+
+################################################################################
+
+jdk.localedata_COPY := _dict _th
+# Exclude BreakIterator classes that are just used in compile process to generate
+# data files and shouldn't go in the product
+jdk.localedata_EXCLUDE_FILES += sun/text/resources/ext/BreakIteratorRules_th.java
+
+################################################################################
+# If this is an imported module that has prebuilt classes, only compile
+# module-info.java.
+ifneq ($(wildcard $(IMPORT_MODULES_CLASSES)/$(MODULE)), )
+ $(MODULE)_INCLUDE_FILES := module-info.java
+endif
+
+################################################################################
+# Setup the compilation for the module
+#
+MODULE_SRC_DIRS := $(call FindModuleSrcDirs, $(MODULE))
+
+# The JDK_USER_DEFINED_FILTER is a poor man's incremental build: by specifying
+# JDK_FILTER at the make command line, only a subset of the JDK java files will
+# be recompiled. If multiple paths are separated by comma, convert that into a
+# space separated list.
+JDK_USER_DEFINED_FILTER := $(strip $(subst $(COMMA),$(SPACE), $(JDK_FILTER)))
+ifeq ($(JDK_FILTER), )
+ FAIL_NO_SRC := true
+else
+ # When using JDK_FILTER, most module java compilations will end up finding
+ # no source files. Don't let that fail the build.
+ FAIL_NO_SRC := false
+endif
+
+# Get the complete module source path.
+MODULESOURCEPATH := $(call GetModuleSrcPath)
+
+# Add imported modules to the modulepath
+MODULEPATH := $(call PathList, $(IMPORT_MODULES_CLASSES))
+
+ifeq ($(MODULE), jdk.internal.vm.ci)
+ ## WORKAROUND jdk.internal.vm.ci source structure issue
+ JVMCI_MODULESOURCEPATH := $(MODULESOURCEPATH) \
+ $(subst /$(MODULE)/,/*/, $(filter-out %processor/src, \
+ $(wildcard $(HOTSPOT_TOPDIR)/src/$(MODULE)/share/classes/*/src)))
+ MODULESOURCEPATH := $(call PathList, $(JVMCI_MODULESOURCEPATH))
+endif
+
+ifeq ($(MODULE), jdk.internal.vm.compiler)
+ ## WORKAROUND jdk.internal.vm.compiler source structure issue
+ VM_COMPILER_MODULESOURCEPATH := $(MODULESOURCEPATH) \
+ $(subst /$(MODULE)/,/*/, $(filter-out %processor/src %test/src %jtt/src %bench/src %microbenchmarks/src, \
+ $(wildcard $(HOTSPOT_TOPDIR)/src/$(MODULE)/share/classes/*/src)))
+ MODULESOURCEPATH := $(call PathList, $(VM_COMPILER_MODULESOURCEPATH))
+endif
+
+ifeq ($(MODULE), jdk.aot)
+ ## WORKAROUND jdk.aot source structure issue
+ AOT_MODULESOURCEPATH := $(MODULESOURCEPATH) \
+ $(subst /$(MODULE)/,/*/, $(filter-out %processor/src, \
+ $(wildcard $(HOTSPOT_TOPDIR)/src/$(MODULE)/share/classes/*/src)))
+ MODULESOURCEPATH := $(call PathList, $(AOT_MODULESOURCEPATH))
+endif
+
+$(eval $(call SetupJavaCompilation, $(MODULE), \
+ SETUP := $(if $($(MODULE)_SETUP), $($(MODULE)_SETUP), GENERATE_JDKBYTECODE), \
+ MODULE := $(MODULE), \
+ SRC := $(wildcard $(MODULE_SRC_DIRS)), \
+ INCLUDES := $(JDK_USER_DEFINED_FILTER), \
+ FAIL_NO_SRC := $(FAIL_NO_SRC), \
+ BIN := $(if $($(MODULE)_BIN), $($(MODULE)_BIN), $(JDK_OUTPUTDIR)/modules), \
+ HEADERS := $(SUPPORT_OUTPUTDIR)/headers, \
+ ADD_JAVAC_FLAGS := \
+ $($(MODULE)_ADD_JAVAC_FLAGS) \
+ --module-source-path $(MODULESOURCEPATH) \
+ --module-path $(MODULEPATH) \
+ --system none, \
+))
+
+TARGETS += $($(MODULE)) $($(MODULE)_COPY_EXTRA)
+
+# Declare dependencies between java compilations of different modules.
+# Since the other modules are declared in different invocations of this file,
+# use the macro to find the correct target file to depend on.
+# Only the javac compilation actually depends on other modules so limit
+# dependency declaration to that by using the *_COMPILE_TARGET variable.
+$($(MODULE)_COMPILE_TARGET): $(foreach d, $(call FindDepsForModule, $(MODULE)), \
+ $(call SetupJavaCompilationCompileTarget, $d, \
+ $(if $($d_BIN), $($d_BIN), $(JDK_OUTPUTDIR)/modules/$d)))
+
+################################################################################
+# Copy zh_HK properties files from zh_TW
+
+$(JDK_OUTPUTDIR)/modules/%_zh_HK.properties: $(JDK_OUTPUTDIR)/modules/%_zh_TW.properties
+ $(install-file)
+
+CreateHkTargets = \
+ $(patsubst $(JDK_TOPDIR)/src/%, $(JDK_OUTPUTDIR)/modules/%, \
+ $(subst /share/classes,, \
+ $(subst _zh_TW,_zh_HK, $(filter %_zh_TW.properties, $1))))
+
+ifeq ($(MODULE), java.sql.rowset)
+ TARGETS += $(call CreateHkTargets, $(java.sql.rowset_CLEAN_FILES))
+endif
+
+ifeq ($(MODULE), java.rmi)
+ TARGETS += $(call CreateHkTargets, $(java.rmi_CLEAN_FILES))
+endif
+
+################################################################################
+# If this is an imported module, copy the pre built classes and resources into
+# the modules output dir
+
+ifneq ($(wildcard $(IMPORT_MODULES_CLASSES)/$(MODULE)), )
+ $(JDK_OUTPUTDIR)/modules/$(MODULE)/_imported.marker: \
+ $(call CacheFind, $(IMPORT_MODULES_CLASSES)/$(MODULE))
+ $(call MakeDir, $(@D))
+ # Do not delete marker and build meta data files
+ $(RM) -r $(filter-out $(@D)/_%, $(wildcard $(@D)/*))
+ $(CP) -R $(IMPORT_MODULES_CLASSES)/$(MODULE)/* $(@D)/
+ $(TOUCH) $@
+
+ TARGETS += $(JDK_OUTPUTDIR)/modules/$(MODULE)/_imported.marker
+
+ # Add this dependency to avoid a race between compiling module-info.java and
+ # importing the classes.
+ $($(MODULE)_COMPILE_TARGET): $(JDK_OUTPUTDIR)/modules/$(MODULE)/_imported.marker
+endif
+
+################################################################################
+
+$(eval $(call IncludeCustomExtension, , CompileJavaModules-post.gmk))
+
+################################################################################
+
+all: $(TARGETS)
+
+.PHONY: all
diff --git a/make/CopyImportModules.gmk b/make/CopyImportModules.gmk
new file mode 100644
index 0000000..5b38601
--- /dev/null
+++ b/make/CopyImportModules.gmk
@@ -0,0 +1,104 @@
+#
+# Copyright (c) 2015, 2016, 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 makefile is called for every imported module to copy the non class
+# contents into the exploded jdk image.
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+
+LIBS_DIR := $(wildcard $(addsuffix /$(MODULE), $(IMPORT_MODULES_LIBS)))
+CMDS_DIR := $(wildcard $(addsuffix /$(MODULE), $(IMPORT_MODULES_CMDS)))
+CONF_DIR := $(wildcard $(addsuffix /$(MODULE), $(IMPORT_MODULES_CONF)))
+
+$(eval $(call FillCacheFind, $(LIBS_DIR) $(CMDS_DIR) $(CONF_DIR)))
+
+ifneq ($(LIBS_DIR), )
+ ifeq ($(OPENJDK_TARGET_OS), windows)
+ TO_BIN_FILTER := %$(SHARED_LIBRARY_SUFFIX) %.diz %.pdb %.map
+
+ $(eval $(call SetupCopyFiles, COPY_LIBS_TO_BIN, \
+ SRC := $(LIBS_DIR), \
+ DEST := $(JDK_OUTPUTDIR)/bin, \
+ FILES := $(filter $(TO_BIN_FILTER), \
+ $(call CacheFind, $(LIBS_DIR))) \
+ ))
+
+ $(eval $(call SetupCopyFiles, COPY_LIBS_TO_LIB, \
+ SRC := $(LIBS_DIR), \
+ DEST := $(JDK_OUTPUTDIR)/lib, \
+ FILES := $(filter-out $(TO_BIN_FILTER), \
+ $(call CacheFind, $(LIBS_DIR))) \
+ ))
+ TARGETS += $(COPY_LIBS_TO_BIN) $(COPY_LIBS_TO_LIB)
+ else
+ $(eval $(call SetupCopyFiles, COPY_LIBS, \
+ SRC := $(LIBS_DIR), \
+ DEST := $(JDK_OUTPUTDIR)/lib, \
+ FILES := $(filter %$(SHARED_LIBRARY_SUFFIX), $(call CacheFind, $(LIBS_DIR))), \
+ ))
+
+ # Use relative links if the import dir is inside the OUTPUT_ROOT, otherwise
+ # copy to avoid having automated systems following symlinks when deleting files,
+ # or risk invalidating the build output from external changes.
+ ifeq ($(filter $(OUTPUT_ROOT)/%, $(LIBS_DIR)), )
+ LINK_MACRO := install-file
+ LOG_ACTION := Copying
+ else
+ LINK_MACRO := link-file-relative
+ LOG_ACTION := Creating symlink
+ endif
+ $(eval $(call SetupCopyFiles, LINK_LIBS, \
+ SRC := $(LIBS_DIR), \
+ DEST := $(JDK_OUTPUTDIR)/lib, \
+ FILES := $(filter-out %$(SHARED_LIBRARY_SUFFIX), $(call CacheFind, $(LIBS_DIR))), \
+ MACRO := $(LINK_MACRO), \
+ LOG_ACTION := $(LOG_ACTION), \
+ ))
+ TARGETS += $(COPY_LIBS) $(LINK_LIBS)
+ endif
+endif
+
+ifneq ($(CMDS_DIR), )
+ $(eval $(call SetupCopyFiles, COPY_CMDS, \
+ SRC := $(CMDS_DIR), \
+ DEST := $(JDK_OUTPUTDIR)/bin, \
+ FILES := $(call CacheFind, $(CMDS_DIR)), \
+ ))
+ TARGETS += $(COPY_CMDS)
+endif
+
+ifneq ($(CONF_DIR), )
+ $(eval $(call SetupCopyFiles, COPY_CONF, \
+ SRC := $(CONF_DIR), \
+ DEST := $(JDK_OUTPUTDIR)/lib, \
+ FILES := $(call CacheFind, $(CONF_DIR)), \
+ ))
+ TARGETS += $(COPY_CONF)
+endif
+
+all: $(TARGETS)
diff --git a/make/CreateBuildJdkCopy.gmk b/make/CreateBuildJdkCopy.gmk
new file mode 100644
index 0000000..6e28a2d
--- /dev/null
+++ b/make/CreateBuildJdkCopy.gmk
@@ -0,0 +1,79 @@
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include Modules.gmk
+
+MODULES_TO_COPY := $(sort \
+ $(foreach m, jdk.jlink $(INTERIM_IMAGE_MODULES), \
+ $(call FindTransitiveDepsForModule, $m) $m))
+
+################################################################################
+# Copy the modules needed to run jlink and jmod. Use bulk copy instead of
+# SetupCopyFiles since there are so many files.
+
+COPY_CLASSES_TARGET := $(BUILDJDK_OUTPUTDIR)/jdk/modules/java.base/_the.buildjdk-copy-marker
+
+$(COPY_CLASSES_TARGET): $(call CacheFind, $(wildcard \
+ $(addprefix $(JDK_OUTPUTDIR)/modules/, $(MODULES_TO_COPY))))
+ $(ECHO) $(LOG_INFO) "Copying java modules to buildjdk: $(MODULES_TO_COPY)"
+ $(RM) -r $(BUILDJDK_OUTPUTDIR)/jdk/modules
+ $(MKDIR) -p $(BUILDJDK_OUTPUTDIR)/jdk/modules
+ $(foreach m, $(MODULES_TO_COPY), \
+ $(CP) -R $(JDK_OUTPUTDIR)/modules/$m \
+ $(BUILDJDK_OUTPUTDIR)/jdk/modules/ $(NEWLINE))
+ $(TOUCH) $@
+
+TARGETS += $(COPY_CLASSES_TARGET)
+
+################################################################################
+
+$(eval $(call SetupCopyFiles, COPY_SUPPORT_HEADERS, \
+ SRC := $(BUILD_OUTPUT), \
+ DEST := $(BUILDJDK_OUTPUTDIR), \
+ FILES := $(call CacheFind, $(wildcard \
+ $(addprefix $(SUPPORT_OUTPUTDIR)/headers/, $(MODULES_TO_COPY)))), \
+))
+
+TARGETS += $(COPY_SUPPORT_HEADERS)
+
+################################################################################
+
+$(eval $(call SetupCopyFiles, COPY_JDK_LIB_FILES, \
+ SRC := $(BUILD_OUTPUT), \
+ DEST := $(BUILDJDK_OUTPUTDIR), \
+ FILES := $(JDK_OUTPUTDIR)/lib/tzdb.dat, \
+))
+
+TARGETS += $(COPY_JDK_LIB_FILES)
+
+################################################################################
+
+all: $(TARGETS)
+
+.PHONY: default all
diff --git a/make/CreateJmods.gmk b/make/CreateJmods.gmk
new file mode 100644
index 0000000..299198b
--- /dev/null
+++ b/make/CreateJmods.gmk
@@ -0,0 +1,150 @@
+
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include Modules.gmk
+
+ifeq ($(MODULE), )
+ $(error MODULE must be set when calling CreateJmods.gmk)
+endif
+
+################################################################################
+
+JMODS_DIR := $(IMAGES_OUTPUTDIR)/jmods
+JMODS_TEMPDIR := $(SUPPORT_OUTPUTDIR)/jmods
+
+LIBS_DIR := $(firstword $(wildcard $(addsuffix /$(MODULE), \
+ $(SUPPORT_OUTPUTDIR)/modules_libs $(IMPORT_MODULES_LIBS))))
+CMDS_DIR := $(firstword $(wildcard $(addsuffix /$(MODULE), \
+ $(SUPPORT_OUTPUTDIR)/modules_cmds $(IMPORT_MODULES_CMDS))))
+CONF_DIR := $(firstword $(wildcard $(addsuffix /$(MODULE), \
+ $(SUPPORT_OUTPUTDIR)/modules_conf $(IMPORT_MODULES_CONF))))
+CLASSES_DIR := $(wildcard $(JDK_OUTPUTDIR)/modules/$(MODULE))
+INCLUDE_HEADERS_DIR := $(firstword $(wildcard $(addsuffix /$(MODULE), \
+ $(SUPPORT_OUTPUTDIR)/modules_include $(IMPORT_MODULES_INCLUDE_HEADERS))))
+MAN_DIR := $(firstword $(wildcard $(addsuffix /$(MODULE), \
+ $(SUPPORT_OUTPUTDIR)/modules_man $(IMPORT_MODULES_MAN))))
+
+$(eval $(call FillCacheFind, \
+ $(LIBS_DIR) $(CMDS_DIR) $(CONF_DIR) $(CLASSES_DIR) \
+))
+
+ifneq ($(LIBS_DIR), )
+ JMOD_FLAGS += --libs $(LIBS_DIR)
+ DEPS += $(call CacheFind, $(LIBS_DIR))
+endif
+ifneq ($(CMDS_DIR), )
+ JMOD_FLAGS += --cmds $(CMDS_DIR)
+ DEPS += $(call CacheFind, $(CMDS_DIR))
+endif
+ifneq ($(CONF_DIR), )
+ JMOD_FLAGS += --config $(CONF_DIR)
+ DEPS += $(call CacheFind, $(CONF_DIR))
+endif
+ifneq ($(CLASSES_DIR), )
+ JMOD_FLAGS += --class-path $(CLASSES_DIR)
+ DEPS += $(call CacheFind, $(CLASSES_DIR))
+endif
+ifneq ($(INCLUDE_HEADERS_DIR), )
+ JMOD_FLAGS += --header-files $(INCLUDE_HEADERS_DIR)
+ DEPS += $(call CacheFind, $(INCLUDE_HEADERS_DIR))
+endif
+ifneq ($(MAN_DIR), )
+ JMOD_FLAGS += --man-pages $(MAN_DIR)
+ DEPS += $(call CacheFind, $(MAN_DIR))
+endif
+
+LEGAL_NOTICES := \
+ $(SUPPORT_OUTPUTDIR)/modules_legal/java.base \
+ $(call FindModuleLegalDirs, $(MODULE)) \
+ #
+
+LEGAL_NOTICES_PATH := $(call PathList, $(LEGAL_NOTICES))
+DEPS += $(call CacheFind, $(LEGAL_NOTICES))
+
+JMOD_FLAGS += --legal-notices $(LEGAL_NOTICES_PATH)
+
+ifeq ($(filter-out jdk.incubator.%, $(MODULE)), )
+ JMOD_FLAGS += --do-not-resolve-by-default
+ JMOD_FLAGS += --warn-if-resolved=incubating
+endif
+
+# Add dependencies on other jmod files. Only java.base needs access to other
+# jmods.
+ifeq ($(MODULE), java.base)
+ # When creating a BUILDJDK, we don't need to add hashes to java.base
+ ifneq ($(CREATING_BUILDJDK), true)
+ # When creating interim versions of jmods, skip hashes
+ ifneq ($(INTERIM_JMOD), true)
+ ALL_UPGRADEABLE_MODULES := $(call FindAllUpgradeableModules)
+ DEPS += $(patsubst %, $(JMODS_DIR)/%.jmod, \
+ $(filter-out java.base $(ALL_UPGRADEABLE_MODULES), $(call FindAllModules)))
+
+ EXCLUDE_PATTERN := $(strip $(subst $(SPACE),$$|,$(strip $(ALL_UPGRADEABLE_MODULES))))
+
+ JMOD_FLAGS += --module-path $(JMODS_DIR) \
+ --hash-modules '^(?!$(EXCLUDE_PATTERN)$$)'
+ endif
+ endif
+endif
+
+# Changes to the jmod tool itself should also trigger a rebuild of all jmods.
+# The variable JMOD_CMD could contain an environment variable assignment before
+# the actual command. Filter that out using wildcard before adding to DEPS.
+DEPS += $(wildcard $(JMOD_CMD))
+ifeq ($(EXTERNAL_BUILDJDK), false)
+ DEPS += $(call CacheFind, $(JDK_OUTPUTDIR)/modules/jdk.jlink/jdk/tools/jmod)
+endif
+
+# If creating interim versions of jmods, certain files need to be filtered out
+# to avoid false incremental rebuilds.
+ifeq ($(INTERIM_JMOD), true)
+ DEPS := $(filter-out $(SUPPORT_OUTPUTDIR)/modules_libs/java.base/classlist, $(DEPS))
+endif
+
+# Create jmods in a temp dir and then move them into place to keep the
+# module path in $(IMAGES_OUTPUTDIR)/jmods valid at all times.
+$(JMODS_DIR)/$(MODULE).jmod: $(DEPS)
+ $(call LogWarn, Creating $(patsubst $(OUTPUT_ROOT)/%, %, $@))
+ $(call MakeDir, $(JMODS_DIR) $(JMODS_TEMPDIR))
+ $(RM) $@ $(JMODS_TEMPDIR)/$(notdir $@)
+ $(JMOD) create \
+ --module-version $(VERSION_SHORT) \
+ --target-platform '$(OPENJDK_MODULE_TARGET_PLATFORM)' \
+ --module-path $(JMODS_DIR) \
+ --exclude '**{_the.*,_*.marker,*.diz,*.debuginfo,*.dSYM/**,*.dSYM,*.pdb,*.map}' \
+ $(JMOD_FLAGS) $(JMODS_TEMPDIR)/$(notdir $@)
+ $(MV) $(JMODS_TEMPDIR)/$(notdir $@) $@
+
+TARGETS += $(JMODS_DIR)/$(MODULE).jmod
+
+################################################################################
+
+all: $(TARGETS)
+
+################################################################################
diff --git a/make/Docs.gmk b/make/Docs.gmk
new file mode 100644
index 0000000..b997881
--- /dev/null
+++ b/make/Docs.gmk
@@ -0,0 +1,566 @@
+# Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include Modules.gmk
+include ProcessMarkdown.gmk
+include ZipArchive.gmk
+include $(JDK_TOPDIR)/make/Tools.gmk
+include $(JDK_TOPDIR)/make/ModuleTools.gmk
+
+# This is needed to properly setup DOCS_MODULES.
+$(eval $(call ReadImportMetaData))
+
+################################################################################
+# Hook to include the corresponding custom file, if present.
+$(eval $(call IncludeCustomExtension, , Docs.gmk))
+
+################################################################################
+# This file generates all documentation for OpenJDK.
+#
+# We will generate API documentation for two different selections of the source
+# code: "Java SE", which contains just the modules covered by the top-level
+# module java.se.ee, and "JDK", which covers all of Java SE and also all
+# other available modules that should be documented, including imported modules,
+# if any.
+#
+# We will also generate separate, free-standing specifications from either
+# markdown or existing html files.
+#
+
+################################################################################
+# Javadoc settings
+
+# On top of the sources that was used to compile the JDK, we need some
+# extra java.rmi sources that are used just for javadoc.
+MODULES_SOURCE_PATH := $(call PathList, $(call GetModuleSrcPath) \
+ $(SUPPORT_OUTPUTDIR)/rmic/* $(JDK_TOPDIR)/src/*/share/doc/stub)
+
+# URLs
+JAVADOC_BASE_URL := http://www.oracle.com/pls/topic/lookup?ctx=javase9&amp;id=homepage
+BUG_SUBMIT_URL := http://bugreport.java.com/bugreport/
+COPYRIGHT_URL := {@docroot}/../legal/copyright.html
+LICENSE_URL := http://www.oracle.com/technetwork/java/javase/terms/license/java9speclicense.html
+REDISTRIBUTION_URL := http://www.oracle.com/technetwork/java/redist-137594.html
+
+# In order to get a specific ordering it's necessary to specify the total
+# ordering of tags as the tags are otherwise ordered in order of definition.
+JAVADOC_TAGS := \
+ -tag beaninfo:X \
+ -tag revised:X \
+ -tag since.unbundled:X \
+ -tag spec:X \
+ -tag specdefault:X \
+ -tag Note:X \
+ -tag ToDo:X \
+ -tag 'apiNote:a:API Note:' \
+ -tag 'implSpec:a:Implementation Requirements:' \
+ -tag 'implNote:a:Implementation Note:' \
+ -tag param \
+ -tag return \
+ -tag throws \
+ -taglet build.tools.taglet.ModuleGraph \
+ -tag since \
+ -tag version \
+ -tag serialData \
+ -tag factory \
+ -tag see \
+ -tag 'jvms:a:See <cite>The Java&trade; Virtual Machine Specification</cite>:' \
+ -tag 'jls:a:See <cite>The Java&trade; Language Specification</cite>:' \
+ -taglet build.tools.taglet.ExtLink \
+ -taglet build.tools.taglet.Incubating \
+ -tagletpath $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
+ $(CUSTOM_JAVADOC_TAGS) \
+ #
+
+# Which doclint checks to ignore
+JAVADOC_DISABLED_DOCLINT := accessibility html missing syntax reference
+
+# The initial set of options for javadoc
+JAVADOC_OPTIONS := -XDignore.symbol.file=true -use -keywords -notimestamp \
+ -serialwarn -encoding ISO-8859-1 -breakiterator -splitIndex --system none \
+ -html5 -javafx --expand-requires transitive
+
+# Should we add DRAFT stamps to the generated javadoc?
+ifeq ($(VERSION_IS_GA), true)
+ IS_DRAFT := false
+else
+ IS_DRAFT := true
+endif
+
+################################################################################
+# General text snippets
+
+FULL_COMPANY_NAME := Oracle and/or its affiliates
+COMPANY_ADDRESS := 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+
+JAVA_PLATFORM := Java Platform
+
+ifeq ($(IS_DRAFT), true)
+ DRAFT_MARKER_STR := <br><strong>DRAFT $(VERSION_STRING)</strong>
+ ifeq ($(VERSION_BUILD), 0)
+ DRAFT_MARKER_TITLE := [ad-hoc build]
+ else
+ DRAFT_MARKER_TITLE := [build $(VERSION_BUILD)]
+ endif
+ DRAFT_TEXT := This specification is not final and is subject to change. \
+ Use is subject to <a href="$(LICENSE_URL)">license terms</a>.
+endif
+
+JAVADOC_BOTTOM := \
+ <a href="$(BUG_SUBMIT_URL)">Report a bug or suggest an enhancement</a><br> \
+ For further API reference and developer documentation see the \
+ <a href="$(JAVADOC_BASE_URL)" target="_blank">Java SE \
+ Documentation</a>, which contains more detailed, \
+ developer-targeted descriptions with conceptual overviews, definitions \
+ of terms, workarounds, and working code examples.<br> \
+ Java is a trademark or registered trademark of $(FULL_COMPANY_NAME) in \
+ the US and other countries.<br> \
+ <a href="$(COPYRIGHT_URL)">Copyright</a> \
+ &copy; 1993, $(COPYRIGHT_YEAR), $(FULL_COMPANY_NAME), \
+ $(COMPANY_ADDRESS).<br>All rights reserved. \
+ Use is subject to <a href="$(LICENSE_URL)">license terms</a> and the \
+ <a href="$(REDISTRIBUTION_URL)">documentation redistribution policy</a>. \
+ $(DRAFT_MARKER_STR) <!-- Version $(VERSION_STRING) -->
+
+
+JAVADOC_TOP := \
+ <div style="padding: 6px; text-align: center; font-size: 80%; \
+ font-family: DejaVu Sans, Arial, Helvetica, sans-serif; \
+ font-weight: normal;">$(DRAFT_TEXT)</div>
+
+################################################################################
+# JDK javadoc titles/text snippets
+
+JDK_SHORT_NAME := Java SE $(VERSION_SPECIFICATION) &amp; JDK $(VERSION_SPECIFICATION)
+JDK_LONG_NAME := Java<sup>&reg;</sup> Platform, Standard Edition \
+ &amp;&nbsp;Java&nbsp;Development&nbsp;Kit
+
+################################################################################
+# Java SE javadoc titles/text snippets
+
+JAVASE_SHORT_NAME := Java SE $(VERSION_SPECIFICATION)
+JAVASE_LONG_NAME := Java<sup>&reg;</sup> Platform, Standard Edition
+
+################################################################################
+# Functions
+
+# Helper function for creating a png file from a dot file generated by the
+# GenGraphs tool.
+# param 1: SetupJavadocGeneration namespace ($1)
+# param 2: module name
+#
+define setup_gengraph_dot_to_png
+ $1_$2_DOT_SRC := $$($1_GENGRAPHS_DIR)/$2.dot
+ $1_$2_PNG_TARGET := $$($1_TARGET_DIR)/$2-graph.png
+
+ # For each module needing a graph, create a png file from the dot file
+ # generated by the GenGraphs tool and store it in the target dir.
+ $$($1_$2_PNG_TARGET): $$($1_GENGRAPHS_MARKER)
+ $$(call MakeDir, $$(@D))
+ $$(call ExecuteWithLog, $$($1_$2_DOT_SRC), \
+ $$(DOT) -Tpng -o $$($1_$2_PNG_TARGET) $$($1_$2_DOT_SRC))
+
+ $1_MODULEGRAPH_TARGETS += $$($1_$2_PNG_TARGET)
+endef
+
+# Helper function to create the overview.html file to use with the -overview
+# javadoc option.
+# Returns the filename as $1_OVERVIEW.
+#
+# param 1: SetupJavadocGeneration namespace ($1)
+define create_overview_file
+ $1_OVERVIEW_TEXT := \
+ <!DOCTYPE html> \
+ <html><head></head><body> \
+ #
+ ifneq ($$($1_GROUPS),)
+ $1_OVERVIEW_TEXT += \
+ <p>This document is divided into \
+ $$(subst 2,two,$$(subst 3,three,$$(words $$($1_GROUPS)))) sections:</p> \
+ <blockquote><dl> \
+ #
+ $1_OVERVIEW_TEXT += $$(foreach g, $$($1_GROUPS), \
+ <dt style="margin-top: 8px;"><a href="\#$$g">$$($$g_GROUP_NAME)</a></dt> \
+ <dd style="margin-top: 8px;">$$($$g_GROUP_DESCRIPTION)</dd> \
+ )
+ $1_OVERVIEW_TEXT += \
+ </dl></blockquote> \
+ #
+ endif
+ $1_OVERVIEW_TEXT += \
+ </body></html> \
+ #
+
+ $1_OVERVIEW := $$(SUPPORT_OUTPUTDIR)/docs/$1-overview.html
+
+ $1_OVERVIEW_VARDEPS_FILE := $$(call DependOnVariable, $1_OVERVIEW_TEXT, \
+ $$($1_OVERVIEW).vardeps)
+
+ $$($1_OVERVIEW): $$($1_OVERVIEW_VARDEPS_FILE)
+ $$(call LogInfo, Creating overview.html for $1)
+ $$(call MakeDir, $$(@D))
+ $$(PRINTF) > $$@ '$$($1_OVERVIEW_TEXT)'
+endef
+
+################################################################################
+# Setup make rules to create an API documentation collection, using javadoc and
+# other tools if needed.
+#
+# Parameter 1 is the name of the rule. This name is used as variable prefix.
+# Targets generated are returned as $1_JAVADOC_TARGETS and
+# $1_MODULEGRAPH_TARGETS. Note that the index.html file will work as a "touch
+# file" for all the magnitude of files that are generated by javadoc.
+#
+# Remaining parameters are named arguments. These include:
+# MODULES - Modules to generate javadoc for
+# GROUPS - Name of the groups to divide the modules into, if any
+# SHORT_NAME - The short name of this documentation collection
+# LONG_NAME - The long name of this documentation collection
+# TARGET_DIR - Where to store the output
+#
+SetupApiDocsGeneration = $(NamedParamsMacroTemplate)
+define SetupApiDocsGenerationBody
+
+ # Figure out all modules, both specified and transitive indirect exports, that
+ # will be processed by javadoc.
+ $1_INDIRECT_EXPORTS := $$(call FindTransitiveIndirectDepsForModules, $$($1_MODULES))
+ $1_ALL_MODULES := $$(sort $$($1_MODULES) $$($1_INDIRECT_EXPORTS))
+
+ ifeq ($$(ENABLE_FULL_DOCS), true)
+ # Tell the ModuleGraph taglet to generate html links to soon-to-be-created
+ # png files with module graphs.
+ $1_JAVA_ARGS += -DenableModuleGraph=true
+ endif
+
+ # Always include tags and basic options
+ $1_OPTIONS := $$(JAVADOC_TAGS) $$(JAVADOC_OPTIONS)
+
+ $1_OPTIONS += --module-source-path $$(MODULES_SOURCE_PATH)
+ $1_OPTIONS += --module $$(call CommaList, $$($1_MODULES))
+
+ # Create a string like "-Xdoclint:all,-syntax,-html,..."
+ $1_OPTIONS += -Xdoclint:all,$$(call CommaList, $$(addprefix -, \
+ $$(JAVADOC_DISABLED_DOCLINT)))
+
+ $1_DOC_TITLE := $$($1_LONG_NAME)<br>Version $$(VERSION_SPECIFICATION) API Specification
+ $1_WINDOW_TITLE := $$(subst &amp;,&,$$($1_SHORT_NAME)) \
+ $$(DRAFT_MARKER_TITLE)
+ ifeq ($(VERSION_IS_GA), true) # Workaround stylesheet bug
+ $1_HEADER_PAD := 14
+ else
+ $1_HEADER_PAD := 9
+ endif
+ $1_HEADER_TITLE := <div style="margin-top: $$($1_HEADER_PAD)px;"><strong>$$($1_SHORT_NAME)</strong> \
+ $$(DRAFT_MARKER_STR)</div>
+
+ $1_OPTIONS += -doctitle '$$($1_DOC_TITLE)'
+ $1_OPTIONS += -windowtitle '$$($1_WINDOW_TITLE)'
+ $1_OPTIONS += -header '$$($1_HEADER_TITLE)'
+ $1_OPTIONS += -bottom '$$(JAVADOC_BOTTOM)'
+ ifeq ($$(IS_DRAFT), true)
+ $1_OPTIONS += -top '$$(JAVADOC_TOP)'
+ endif
+
+ # Do not store debug level options in VARDEPS.
+ ifneq ($$(LOG_LEVEL), trace)
+ $1_LOG_OPTION += -quiet
+ else
+ $1_LOG_OPTION += -verbose
+ endif
+
+ # Generate the overview.html file. This will return the filename in
+ # $1_OVERVIEW.
+ $$(eval $$(call create_overview_file,$1))
+ $1_OPTIONS += -overview $$($1_OVERVIEW)
+
+ $$(foreach g, $$($1_GROUPS), \
+ $$(eval $1_OPTIONS += -group "$$($$g_GROUP_NAME)" "$$($$g_GROUP_MODULES)") \
+ )
+
+ $1_VARDEPS := $$($1_JAVA_ARGS) $$($1_OPTIONS) $$(MODULES_SOURCE_PATH) \
+ $$($1_ALL_MODULES)
+ $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \
+ $$(SUPPORT_OUTPUTDIR)/docs/$1.vardeps)
+
+ # Get a list of all files in all the source dirs for all included modules
+ $1_SOURCE_DEPS := $$(call CacheFind, $$(wildcard $$(foreach module, \
+ $$($1_ALL_MODULES), $$(call FindModuleSrcDirs, $$(module)))))
+
+ # Javadoc creates a lot of files but use index.html as a marker
+ $$($1_TARGET_DIR)/index.html: $$(BUILD_TOOLS_JDK) $$($1_VARDEPS_FILE) \
+ $$($1_SOURCE_DEPS) $$($1_OVERVIEW)
+ $$(call LogWarn, Generating $1 javadoc for \
+ $$(words $$($1_ALL_MODULES)) modules)
+ $$(call LogInfo, Javadoc modules: $$($1_ALL_MODULES))
+ $$(call MakeDir, $$($1_TARGET_DIR))
+ $$(call ExecuteWithLog, $$(SUPPORT_OUTPUTDIR)/docs/$1, \
+ $$(JAVA) -Djava.awt.headless=true $$($1_JAVA_ARGS) \
+ $$(NEW_JAVADOC) -d $$($1_TARGET_DIR) \
+ $$(JAVADOC_TAGS) $$($1_OPTIONS) $$($1_LOG_OPTION))
+
+ $1_JAVADOC_TARGETS := $$($1_TARGET_DIR)/index.html
+
+ ifeq ($$(ENABLE_FULL_DOCS), true)
+ # We have asked ModuleGraph to generate links to png files. Now we must
+ # produce the png files.
+
+ # Locate which modules has the @moduleGraph tag in their module-info.java
+ $1_MODULES_NEEDING_GRAPH := $$(strip $$(foreach m, $$($1_ALL_MODULES), \
+ $$(if $$(shell $$(GREP) -e @moduleGraph \
+ $$(wildcard $$(addsuffix /module-info.java, \
+ $$(call FindModuleSrcDirs, $$m)))), \
+ $$m) \
+ ))
+
+ # First we run the GenGraph tool. It will query the module structure of the
+ # running JVM and output .dot files for all existing modules.
+ GENGRAPHS_PROPS := \
+ $$(JDK_TOPDIR)/make/src/classes/build/tools/jigsaw/javadoc-graphs.properties
+
+ $1_GENGRAPHS_DIR := $$(SUPPORT_OUTPUTDIR)/docs/$1-gengraphs
+ $1_GENGRAPHS_MARKER := $$($1_GENGRAPHS_DIR)/_gengraphs_run.marker
+
+ $$($1_GENGRAPHS_MARKER): $$(BUILD_JIGSAW_TOOLS) $$(GENGRAPHS_PROPS)
+ $$(call LogInfo, Running gengraphs for $1 documentation)
+ $$(call MakeDir, $$($1_GENGRAPHS_DIR))
+ $$(call ExecuteWithLog, $$($1_GENGRAPHS_DIR)/gengraphs, \
+ $$(TOOL_GENGRAPHS) --spec --output $$($1_GENGRAPHS_DIR) \
+ --dot-attributes $$(GENGRAPHS_PROPS) && \
+ $$(TOUCH) $$($1_GENGRAPHS_MARKER))
+
+ # For each module needing a graph, create a png file from the dot file
+ # generated by the GenGraphs tool and store it in the target dir.
+ # They will depend on $1_GENGRAPHS_MARKER, and will be added to $1.
+ $$(foreach m, $$($1_MODULES_NEEDING_GRAPH), \
+ $$(eval $$(call setup_gengraph_dot_to_png,$1,$$m)) \
+ )
+ endif
+endef
+
+################################################################################
+# Setup generation of the JDK API documentation (javadoc + modulegraph)
+
+# Define the groups of the JDK API documentation
+JavaSE_GROUP_NAME := Java SE
+JavaSE_GROUP_MODULES := $(call ColonList, $(sort java.se.ee \
+ $(call FindTransitiveIndirectDepsForModules, java.se.ee)))
+JavaSE_GROUP_DESCRIPTION := \
+ The Java Platform, Standard Edition (Java SE) APIs define the core Java \
+ platform for general-purpose computing. These APIs are in modules whose \
+ names start with {@code java}. \
+ #
+JDK_GROUPS += JavaSE
+
+JDK_GROUP_NAME := JDK
+JDK_GROUP_MODULES := jdk.*
+JDK_GROUP_DESCRIPTION := \
+ The Java Development Kit (JDK) APIs are specific to the JDK and will not \
+ necessarily be available in all implementations of the Java SE Platform. \
+ These APIs are in modules whose names start with {@code jdk}. \
+ #
+JDK_GROUPS += JDK
+
+# If we are importing JavaFX, we need a JavaFX group. In an ideal world, this
+# would have been abstracted away to a more proper generic handling of imported
+# modules.
+ifneq ($(findstring javafx., $(IMPORTED_MODULES)), )
+ JavaFX_GROUP_NAME := JavaFX
+ JavaFX_GROUP_MODULES := javafx.*
+ JavaFX_GROUP_DESCRIPTION := \
+ The JavaFX APIs define a set of user-interface controls, graphics, \
+ media, and web packages for developing rich client applications. These \
+ APIs are in modules whose names start with {@code javafx}. \
+ #
+ JDK_GROUPS += JavaFX
+endif
+
+# All modules to have docs generated by docs-jdk-api target
+JDK_MODULES := $(sort $(DOCS_MODULES))
+
+$(eval $(call SetupApiDocsGeneration, JDK_API, \
+ MODULES := $(JDK_MODULES), \
+ GROUPS := $(JDK_GROUPS), \
+ SHORT_NAME := $(JDK_SHORT_NAME), \
+ LONG_NAME := $(JDK_LONG_NAME), \
+ TARGET_DIR := $(DOCS_OUTPUTDIR)/api, \
+))
+
+# Targets generated are returned in JDK_API_JAVADOC_TARGETS and
+# JDK_API_MODULEGRAPH_TARGETS.
+
+################################################################################
+# Setup generation of the Java SE API documentation (javadoc + modulegraph)
+
+# The Java SE module scope is just java.se.ee and its transitive indirect
+# exports.
+JAVASE_MODULES := java.se.ee
+
+$(eval $(call SetupApiDocsGeneration, JAVASE_API, \
+ MODULES := $(JAVASE_MODULES), \
+ SHORT_NAME := $(JAVASE_SHORT_NAME), \
+ LONG_NAME := $(JAVASE_LONG_NAME), \
+ TARGET_DIR := $(IMAGES_OUTPUTDIR)/javase-docs/api, \
+))
+
+# Targets generated are returned in JAVASE_API_JAVADOC_TARGETS and
+# JAVASE_API_MODULEGRAPH_TARGETS.
+
+################################################################################
+
+JDK_INDEX_HTML := $(DOCS_OUTPUTDIR)/index.html
+
+JDK_INDEX_CONTENT := \
+ <!DOCTYPE html> \
+ <html lang="en"> \
+ <head> \
+ <meta http-equiv="refresh" content="0;url=api/index.html"> \
+ </head> \
+ </html>
+
+$(JDK_INDEX_HTML):
+ $(ECHO) '$(JDK_INDEX_CONTENT)' > $@
+
+JDK_INDEX_TARGETS += $(JDK_INDEX_HTML)
+
+# Copy the global resources
+GLOBAL_SPECS_RESOURCES_DIR := $(JDK_TOPDIR)/make/data/docs-resources/
+$(eval $(call SetupCopyFiles, COPY_GLOBAL_RESOURCES, \
+ SRC := $(GLOBAL_SPECS_RESOURCES_DIR), \
+ FILES := $(call CacheFind, $(GLOBAL_SPECS_RESOURCES_DIR)), \
+ DEST := $(DOCS_OUTPUTDIR), \
+))
+JDK_INDEX_TARGETS += $(COPY_GLOBAL_RESOURCES)
+
+# Copy the legal notices distributed with the docs bundle
+DOCS_LEGAL_NOTICES := jquery.md jszip.md pako.md
+$(eval $(call SetupCopyFiles, COPY_DOCS_LEGAL_NOTICES, \
+ SRC := $(LANGTOOLS_TOPDIR)/src/jdk.javadoc/share/legal, \
+ FILES := $(DOCS_LEGAL_NOTICES), \
+ DEST := $(DOCS_OUTPUTDIR)/legal, \
+))
+JDK_INDEX_TARGETS += $(COPY_DOCS_LEGAL_NOTICES)
+
+################################################################################
+# Copy JDK specs files
+
+# For all html documentation in $module/share/specs directories, copy it
+# unmodified
+
+ALL_MODULES := $(call FindAllModules)
+COPY_SPEC_FILTER := %.html %.gif %.jpg %.mib %.css
+
+$(foreach m, $(ALL_MODULES), \
+ $(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \
+ $(foreach d, $(SPECS_$m), \
+ $(if $(filter $(COPY_SPEC_FILTER), $(call CacheFind, $d)), \
+ $(eval $(call SetupCopyFiles, COPY_$m, \
+ SRC := $d, \
+ FILES := $(filter $(COPY_SPEC_FILTER), $(call CacheFind, $d)), \
+ DEST := $(DOCS_OUTPUTDIR)/specs/, \
+ )) \
+ $(eval JDK_SPECS_TARGETS += $(COPY_$m)) \
+ ) \
+ ) \
+)
+
+ifeq ($(ENABLE_FULL_DOCS), true)
+ # For all markdown files in $module/share/specs directories, convert them to
+ # html.
+
+ GLOBAL_SPECS_DEFAULT_CSS_FILE := $(DOCS_OUTPUTDIR)/resources/jdk-default.css
+
+ $(foreach m, $(ALL_MODULES), \
+ $(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \
+ $(foreach d, $(SPECS_$m), \
+ $(if $(filter %.md, $(call CacheFind, $d)), \
+ $(eval $(call SetupProcessMarkdown, CONVERT_MARKDOWN_$m_$(patsubst $(TOPDIR)/%,%,$d), \
+ SRC := $d, \
+ FILES := $(filter %.md, $(call CacheFind, $d)), \
+ DEST := $(DOCS_OUTPUTDIR)/specs/, \
+ CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \
+ )) \
+ ) \
+ $(eval JDK_SPECS_TARGETS += $(CONVERT_MARKDOWN_$m_$(patsubst $(TOPDIR)/%,%,$d))) \
+ ) \
+ )
+endif
+
+# Special treatment for generated documentation
+
+JDWP_PROTOCOL := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.jdi/jdwp-protocol.html
+$(eval $(call SetupCopyFiles, COPY_JDWP_PROTOCOL, \
+ FILES := $(JDWP_PROTOCOL), \
+ DEST := $(DOCS_OUTPUTDIR)/specs/jdwp, \
+))
+JDK_SPECS_TARGETS += $(COPY_JDWP_PROTOCOL)
+
+# Get jvmti.html from the main jvm variant (all variants' jvmti.html are identical).
+JVMTI_HTML := $(HOTSPOT_OUTPUTDIR)/variant-$(JVM_VARIANT_MAIN)/gensrc/jvmtifiles/jvmti.html
+$(eval $(call SetupCopyFiles, COPY_JVMTI_HTML, \
+ FILES := $(JVMTI_HTML), \
+ DEST := $(DOCS_OUTPUTDIR)/specs, \
+))
+JDK_SPECS_TARGETS += $(COPY_JVMTI_HTML)
+
+################################################################################
+# Optional target which bundles all generated javadocs into a zip archive.
+
+JAVADOC_ZIP_NAME := jdk-$(VERSION_STRING)-docs.zip
+JAVADOC_ZIP_FILE := $(OUTPUT_ROOT)/bundles/$(JAVADOC_ZIP_NAME)
+
+$(eval $(call SetupZipArchive, BUILD_JAVADOC_ZIP, \
+ SRC := $(DOCS_OUTPUTDIR), \
+ ZIP := $(JAVADOC_ZIP_FILE), \
+ EXTRA_DEPS := $(JDK_API_JAVADOC_TARGETS) $(JDK_API_MODULEGRAPH_TARGETS) \
+ $(JDK_SPECS_TARGETS), \
+))
+
+ZIP_TARGETS += $(BUILD_JAVADOC_ZIP)
+
+################################################################################
+
+docs-jdk-api-javadoc: $(JDK_API_JAVADOC_TARGETS) $(JDK_API_CUSTOM_TARGETS)
+
+docs-jdk-api-modulegraph: $(JDK_API_MODULEGRAPH_TARGETS)
+
+docs-javase-api-javadoc: $(JAVASE_API_JAVADOC_TARGETS) $(JAVASE_API_CUSTOM_TARGETS)
+
+docs-javase-api-modulegraph: $(JAVASE_API_MODULEGRAPH_TARGETS)
+
+docs-jdk-specs: $(JDK_SPECS_TARGETS)
+
+docs-jdk-index: $(JDK_INDEX_TARGETS)
+
+docs-zip: $(ZIP_TARGETS)
+
+all: docs-jdk-api-javadoc docs-jdk-api-modulegraph docs-javase-api-javadoc \
+ docs-javase-api-modulegraph docs-jdk-specs docs-jdk-index docs-zip
+
+.PHONY: default all docs-jdk-api-javadoc docs-jdk-api-modulegraph \
+ docs-javase-api-javadoc docs-javase-api-modulegraph docs-jdk-specs \
+ docs-jdk-index docs-zip
diff --git a/make/ExplodedImageOptimize.gmk b/make/ExplodedImageOptimize.gmk
new file mode 100644
index 0000000..36c27d8
--- /dev/null
+++ b/make/ExplodedImageOptimize.gmk
@@ -0,0 +1,50 @@
+#
+# Copyright (c) 2016, 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.
+#
+
+# Runs a tool on the exploded image to improve performance
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include $(JDK_TOPDIR)/make/ModuleTools.gmk
+
+################################################################################
+
+PACKAGES_ATTRIBUTE_TARGET := $(JDK_OUTPUTDIR)/_packages_attribute.done
+ALL_MODULEINFO_CLASSES := $(wildcard $(JDK_OUTPUTDIR)/modules/*/module_info.class)
+
+$(PACKAGES_ATTRIBUTE_TARGET): $(ALL_MODULEINFO_CLASSES) $(BUILD_JIGSAW_CLASSES)
+ $(call LogInfo, Optimizing the exploded image)
+ $(TOOL_ADD_PACKAGES_ATTRIBUTE) $(JDK_OUTPUTDIR)
+ $(TOUCH) $@
+
+TARGETS := $(PACKAGES_ATTRIBUTE_TARGET)
+
+################################################################################
+
+all: $(TARGETS)
+
+.PHONY: all default
diff --git a/make/GenerateLinkOptData.gmk b/make/GenerateLinkOptData.gmk
new file mode 100644
index 0000000..60c80ea
--- /dev/null
+++ b/make/GenerateLinkOptData.gmk
@@ -0,0 +1,101 @@
+#
+# Copyright (c) 2016, 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.
+#
+
+################################################################################
+# Generate classlist
+################################################################################
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include JarArchive.gmk
+
+################################################################################
+# Create a jar with our generator class. Using a jar is intentional since it
+# will load more classes
+
+$(eval $(call SetupJarArchive, CLASSLIST_JAR, \
+ SRCS := $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes, \
+ INCLUDES := build/tools/classlist, \
+ JAR := $(SUPPORT_OUTPUTDIR)/classlist.jar, \
+))
+
+TARGETS += $(CLASSLIST_JAR)
+
+################################################################################
+
+LINK_OPT_DIR := $(SUPPORT_OUTPUTDIR)/link_opt
+CLASSLIST_FILE := $(LINK_OPT_DIR)/classlist
+JLI_TRACE_FILE := $(LINK_OPT_DIR)/default_jli_trace.txt
+
+# If an external buildjdk has been supplied, we don't build a separate interim
+# image, so just use the external build jdk instead.
+ifeq ($(EXTERNAL_BUILDJDK), true)
+ INTERIM_IMAGE_DIR := $(BUILD_JDK)
+endif
+
+$(CLASSLIST_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXE_SUFFIX) $(CLASSLIST_JAR)
+ $(call MakeDir, $(LINK_OPT_DIR))
+ $(call LogInfo, Generating $(patsubst $(OUTPUT_ROOT)/%, %, $@))
+ $(call LogInfo, Generating $(patsubst $(OUTPUT_ROOT)/%, %, $(JLI_TRACE_FILE)))
+ $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -XX:DumpLoadedClassList=$@ \
+ -Djava.lang.invoke.MethodHandle.TRACE_RESOLVE=true \
+ -cp $(SUPPORT_OUTPUTDIR)/classlist.jar \
+ build.tools.classlist.HelloClasslist \
+ $(LOG_DEBUG) 2>&1 > $(JLI_TRACE_FILE)
+
+# The jli trace is created by the same recipe as classlist. By declaring these
+# dependencies, make will correctly rebuild both jli trace and classlist
+# incrementally using the single recipe above.
+$(CLASSLIST_FILE): $(JLI_TRACE_FILE)
+$(JLI_TRACE_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXE_SUFFIX) $(CLASSLIST_JAR)
+
+TARGETS += $(CLASSLIST_FILE) $(JLI_TRACE_FILE)
+
+# Copy the classlist file into java.base libs
+$(eval $(call SetupCopyFiles, COPY_CLASSLIST, \
+ FILES := $(CLASSLIST_FILE), \
+ DEST := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base, \
+))
+
+TARGETS += $(COPY_CLASSLIST)
+
+# Copy the default_jli_trace.txt file into jdk.jlink
+$(eval $(call SetupCopyFiles, COPY_JLI_TRACE, \
+ FILES := $(JLI_TRACE_FILE), \
+ DEST := $(JDK_OUTPUTDIR)/modules/jdk.jlink/jdk/tools/jlink/internal/plugins, \
+))
+
+# Because of the single recipe for jli trace and classlist above, the
+# COPY_JLI_TRACE rule needs to explicitly add the classlist file as a
+# prerequisite.
+$(COPY_JLI_TRACE): $(CLASSLIST_FILE)
+
+TARGETS += $(COPY_JLI_TRACE)
+
+################################################################################
+
+all: $(TARGETS)
diff --git a/make/GensrcModuleInfo.gmk b/make/GensrcModuleInfo.gmk
new file mode 100644
index 0000000..25ade7f
--- /dev/null
+++ b/make/GensrcModuleInfo.gmk
@@ -0,0 +1,102 @@
+#
+# Copyright (c) 2015, 2016, 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 makes modifications to module-info.java files based on the build
+# configuration.
+#
+# Depending on build platform, imported modules and optional parts of the build
+# being active, some modules need to have extra exports, provides or uses
+# declarations added to them. These optional extras are defined in .extra files:
+#
+# src/<module>/<share,platform>/classes/module-info.java.extra
+#
+# The contents of the .extra files are simply extra lines that could fit into
+# the module-info file.
+#
+# This makefile is called once for each from-module with the variable
+# MODULE naming the from-module.
+#
+# The modified module-info.java files are put in the gensrc directory where
+# they will automatically override the static versions in the src tree.
+#
+################################################################################
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include Modules.gmk
+
+################################################################################
+# Define this here since jdk/make/Tools.gmk cannot be included from the top
+# make directory. Should probably move some tools away from the jdk repo.
+TOOL_GENMODULEINFOSOURCE = $(JAVA_SMALL) \
+ $(INTERIM_LANGTOOLS_ARGS) \
+ -cp "$(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes" \
+ build.tools.module.GenModuleInfoSource
+
+################################################################################
+
+# Name of modification file.
+MOD_FILENAME := module-info.java.extra
+
+# Construct all possible src directories for the module.
+MODULE_CLASSES_DIRS := $(call FindModuleSrcDirs, $(MODULE))
+
+# Find all the .extra files in the src dirs.
+MOD_FILES := $(wildcard $(foreach f, $(MOD_FILENAME), $(addsuffix /$(f), \
+ $(MODULE_CLASSES_DIRS))))
+
+ifneq ($(MOD_FILES), )
+ # Only make this call if modification files are found for this module
+ ALL_MODULES := $(call FindAllModules)
+
+ $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/module-info.java: \
+ $(firstword $(call FindAllModuleInfos, $(MODULE))) \
+ $(BUILD_TOOLS_JDK) \
+ $(MOD_FILES) \
+ $(call DependOnVariable, ALL_MODULES)
+ $(MKDIR) -p $(@D)
+ $(RM) $@ $@.tmp
+ $(TOOL_GENMODULEINFOSOURCE) -o $@.tmp \
+ --source-file $< \
+ --modules $(call CommaList, $(ALL_MODULES)) \
+ $(MOD_FILES)
+ $(MV) $@.tmp $@
+
+ TARGETS += $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/module-info.java
+
+else
+ # If no modifications are found for this module, remove any module-info.java
+ # created by a previous build since that is no longer valid.
+ ifneq ($(wildcard $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/module-info.java), )
+ $(shell $(RM) $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/module-info.java)
+ endif
+endif
+
+################################################################################
+
+all: $(TARGETS)
diff --git a/make/Help.gmk b/make/Help.gmk
new file mode 100644
index 0000000..c9a06d2
--- /dev/null
+++ b/make/Help.gmk
@@ -0,0 +1,115 @@
+#
+# Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+###
+### Global targets for printing help etc.
+###
+
+# Helper macro to allow $(info) to properly print strings beginning with spaces.
+_:=
+
+help:
+ $(info )
+ $(info OpenJDK Makefile help)
+ $(info =====================)
+ $(info )
+ $(info Common make targets)
+ $(info $(_) make [default] # Compile all modules in langtools, hotspot, jdk, jaxws,)
+ $(info $(_) # jaxp and corba, and create a runnable "exploded" image)
+ $(info $(_) make all # Compile everything, all repos, docs and images)
+ $(info $(_) make images # Create complete jdk and jre images (alias for product-images))
+ $(info $(_) make <name>-image # Build just the image (jdk, jre, test, docs etc))
+ $(info $(_) make <phase> # Build the specified phase and everything it depends on)
+ $(info $(_) # (gensrc, java, copy, libs, launchers, gendata, rmic))
+ $(info $(_) make *-only # Applies to most targets and disables compling the)
+ $(info $(_) # dependencies for the target. This is faster but may)
+ $(info $(_) # result in incorrect build results!)
+ $(info $(_) make docs # Create all docs)
+ $(info $(_) make docs-jdk-api # Create just JDK javadocs)
+ $(info $(_) make profiles # Create complete jre compact profile images)
+ $(info $(_) make bootcycle-images # Build images twice, second time with newly built JDK)
+ $(info $(_) make install # Install the generated images locally)
+ $(info $(_) make reconfigure # Rerun configure with the same arguments as last time)
+ $(info $(_) make help # Give some help on using make)
+ $(info $(_) make test # Run tests, default is all tests (see TEST below))
+ $(info $(_) make run-test-<test> # Run test, e.g. run-test-tier1)
+ $(info $(_) make run-test TEST=<t> # Run test(s) given by TEST specification)
+ $(info )
+ $(info Targets for cleaning)
+ $(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 clean-<outputdir> # Remove the subdir in the output dir with the name)
+ $(info $(_) make clean-<phase> # Remove all build results related to a certain build)
+ $(info $(_) # phase (gensrc, java, libs, launchers))
+ $(info $(_) make clean-<module> # Remove all build results related to a certain module)
+ $(info $(_) make clean-<module>-<phase> # Remove all build results related to a certain)
+ $(info $(_) # module and phase)
+ $(info )
+ $(info Targets for Hotspot)
+ $(info $(_) make hotspot # Build all of hotspot)
+ $(info $(_) make hotspot-<variant> # Build just the specified jvm variant)
+ $(info $(_) make hotspot-gensrc # Only build the gensrc part of hotspot)
+ $(info $(_) make hotspot-<variant>-<phase> # Build the specified phase for the specified module)
+ $(info )
+ $(info Targets for specific modules)
+ $(info $(_) make <module> # Build <module> and everything it depends on)
+ $(info $(_) make <module>-<phase> # Compile the specified phase for the specified module)
+ $(info $(_) # and everything it depends on)
+ $(info $(_) # (gensrc, java, copy, libs, launchers, gendata, rmic))
+ $(info )
+ $(info Make control variables)
+ $(info $(_) CONF= # Build all configurations (note, assignment is empty))
+ $(info $(_) CONF=<substring> # Build the configuration(s) with a name matching)
+ $(info $(_) # <substring>)
+ $(info $(_) CONF_NAME=<string> # Build the configuration with exactly the <string>)
+ $(info $(_) SPEC=<spec file> # Build the configuration given by the spec file)
+ $(info $(_) 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=debug)
+ $(info $(_) JOBS=<n> # Run <n> parallel make jobs)
+ $(info $(_) # Note that -jN does not work as expected!)
+ $(info $(_) TEST_JOBS=<n> # Run <n> parallel test jobs)
+ $(info $(_) CONF_CHECK=<method> # What to do if spec file is out of date)
+ $(info $(_) # method is 'auto', 'ignore' or 'fail' (default))
+ $(info $(_) make test TEST=<test> # Only run the given test or tests, e.g.)
+ $(info $(_) # make test TEST="jdk_lang jdk_net")
+ $(info $(_) JTREG="OPT1=x;OPT2=y" # Control the JTREG test harness for run-test)
+ $(info $(_) GTEST="OPT1=x;OPT2=y" # Control the GTEST test harness for run-test)
+ $(info )
+ $(if $(all_confs), $(info Available configurations in $(build_dir):) $(foreach var,$(all_confs),$(info * $(var))),\
+ $(info No configurations were found in $(build_dir).) $(info Run 'bash configure' to create a configuration.))
+ # We need a dummy rule otherwise make will complain
+ @true
+
+print-configurations:
+ $(foreach var, $(all_confs), $(info $(var)))
+ # We need a dummy rule otherwise make will complain
+ @true
+
+ALL_GLOBAL_TARGETS := help print-configurations
+
+.PHONY: $(ALL_GLOBAL_TARGETS)
diff --git a/make/Images.gmk b/make/Images.gmk
new file mode 100644
index 0000000..c8567bd
--- /dev/null
+++ b/make/Images.gmk
@@ -0,0 +1,454 @@
+#
+# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include Modules.gmk
+
+TOOL_TARGETS :=
+JDK_TARGETS :=
+JRE_TARGETS :=
+
+# Hook to include the corresponding custom file, if present.
+$(eval $(call IncludeCustomExtension, , Images-pre.gmk))
+
+############################################################################
+
+# All modules for the current target platform.
+ALL_MODULES := $(call FindAllModules)
+
+$(eval $(call ReadImportMetaData))
+
+JRE_MODULES += $(filter $(ALL_MODULES), $(BOOT_MODULES) \
+ $(PLATFORM_MODULES) $(JRE_TOOL_MODULES))
+JDK_MODULES += $(ALL_MODULES)
+
+# Modules list for compact builds
+JRE_COMPACT1_MODULES := \
+ java.logging \
+ java.scripting \
+ jdk.localedata \
+ jdk.crypto.cryptoki \
+ jdk.crypto.ec \
+ jdk.unsupported \
+ #
+
+JRE_COMPACT2_MODULES := \
+ $(JRE_COMPACT1_MODULES) \
+ java.rmi \
+ java.sql \
+ java.xml \
+ jdk.xml.dom \
+ jdk.httpserver \
+ #
+
+JRE_COMPACT3_MODULES := \
+ $(JRE_COMPACT2_MODULES) \
+ java.smartcardio \
+ java.compiler \
+ java.instrument \
+ java.management \
+ java.management.rmi \
+ java.naming \
+ java.prefs \
+ java.security.jgss \
+ java.security.sasl \
+ java.sql.rowset \
+ java.xml.crypto \
+ jdk.management \
+ jdk.naming.dns \
+ jdk.naming.rmi \
+ jdk.sctp \
+ jdk.security.auth \
+ #
+
+JRE_MODULES_LIST := $(call CommaList, $(JRE_MODULES))
+JDK_MODULES_LIST := $(call CommaList, $(JDK_MODULES))
+JRE_COMPACT1_MODULES_LIST := $(call CommaList, $(JRE_COMPACT1_MODULES))
+JRE_COMPACT2_MODULES_LIST := $(call CommaList, $(JRE_COMPACT2_MODULES))
+JRE_COMPACT3_MODULES_LIST := $(call CommaList, $(JRE_COMPACT3_MODULES))
+
+################################################################################
+
+BASE_RELEASE_FILE := $(JDK_OUTPUTDIR)/release
+
+JMODS := $(wildcard $(IMAGES_OUTPUTDIR)/jmods/*.jmod)
+
+# Use this file inside the image as target for make rule
+JIMAGE_TARGET_FILE := bin/java$(EXE_SUFFIX)
+
+JLINK_ORDER_RESOURCES := **module-info.class
+JLINK_JLI_CLASSES :=
+ifeq ($(ENABLE_GENERATE_CLASSLIST), true)
+ JLINK_ORDER_RESOURCES += @$(SUPPORT_OUTPUTDIR)/link_opt/classlist
+ JLINK_JLI_CLASSES := --generate-jli-classes=@$(SUPPORT_OUTPUTDIR)/link_opt/default_jli_trace.txt
+endif
+JLINK_ORDER_RESOURCES += \
+ /java.base/java/** \
+ /java.base/jdk/** \
+ /java.base/sun/** \
+ /java.base/com/** \
+ /jdk.localedata/** \
+ #
+
+JLINK_TOOL := $(JLINK) -J-Djlink.debug=true \
+ --module-path $(IMAGES_OUTPUTDIR)/jmods \
+ --endian $(OPENJDK_BUILD_CPU_ENDIAN) \
+ --release-info $(BASE_RELEASE_FILE) \
+ --order-resources=$(call CommaList, $(JLINK_ORDER_RESOURCES)) \
+ --dedup-legal-notices=error-if-not-same-content \
+ $(JLINK_JLI_CLASSES) \
+ #
+
+JLINK_JRE_EXTRA_OPTS := --no-man-pages --no-header-files --strip-debug
+
+ifeq ($(JLINK_KEEP_PACKAGED_MODULES), true)
+ JLINK_JDK_EXTRA_OPTS := --keep-packaged-modules $(JDK_IMAGE_DIR)/jmods
+endif
+
+$(JDK_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \
+ $(call DependOnVariable, JDK_MODULES_LIST) $(BASE_RELEASE_FILE)
+ $(ECHO) Creating jdk jimage
+ $(RM) -r $(JDK_IMAGE_DIR)
+ $(JLINK_TOOL) --add-modules $(JDK_MODULES_LIST) \
+ $(JLINK_JDK_EXTRA_OPTS) \
+ --output $(JDK_IMAGE_DIR)
+ $(TOUCH) $@
+
+$(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \
+ $(call DependOnVariable, JRE_MODULES_LIST) $(BASE_RELEASE_FILE)
+ $(ECHO) Creating jre jimage
+ $(RM) -r $(JRE_IMAGE_DIR)
+ $(JLINK_TOOL) --add-modules $(JRE_MODULES_LIST) \
+ $(JLINK_JRE_EXTRA_OPTS) \
+ --output $(JRE_IMAGE_DIR)
+ $(TOUCH) $@
+
+
+$(JRE_COMPACT1_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \
+ $(call DependOnVariable, JRE_COMPACT1_MODULES_LIST) $(BASE_RELEASE_FILE)
+ $(ECHO) Creating jre compact1 jimage
+ $(RM) -r $(JRE_COMPACT1_IMAGE_DIR)
+ $(JLINK_TOOL) --add-modules $(JRE_COMPACT1_MODULES_LIST) \
+ $(JLINK_JRE_EXTRA_OPTS) \
+ --output $(JRE_COMPACT1_IMAGE_DIR)
+ $(TOUCH) $@
+
+$(JRE_COMPACT2_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \
+ $(call DependOnVariable, JRE_COMPACT2_MODULES_LIST) $(BASE_RELEASE_FILE)
+ $(ECHO) Creating jre compact2 jimage
+ $(RM) -r $(JRE_COMPACT2_IMAGE_DIR)
+ $(JLINK_TOOL) --add-modules $(JRE_COMPACT2_MODULES_LIST) \
+ $(JLINK_JRE_EXTRA_OPTS) \
+ --output $(JRE_COMPACT2_IMAGE_DIR)
+ $(TOUCH) $@
+
+$(JRE_COMPACT3_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \
+ $(call DependOnVariable, JRE_COMPACT3_MODULES_LIST) $(BASE_RELEASE_FILE)
+ $(ECHO) Creating jre compact3 jimage
+ $(RM) -r $(JRE_COMPACT3_IMAGE_DIR)
+ $(JLINK_TOOL) --add-modules $(JRE_COMPACT3_MODULES_LIST) \
+ $(JLINK_JRE_EXTRA_OPTS) \
+ --output $(JRE_COMPACT3_IMAGE_DIR)
+ $(TOUCH) $@
+
+TOOL_JRE_TARGETS := $(JRE_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
+TOOL_JDK_TARGETS := $(JDK_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
+TOOL_JRE_COMPACT1_TARGETS := $(JRE_COMPACT1_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
+TOOL_JRE_COMPACT2_TARGETS := $(JRE_COMPACT2_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
+TOOL_JRE_COMPACT3_TARGETS := $(JRE_COMPACT3_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
+
+################################################################################
+# /man dir
+#
+# All variables in this section are assigned with simple =, without :, to enable
+# more selective overriding from the custom version of this file.
+#
+# Avoid evaluating this whole section on windows for speed and stability
+ifneq ($(OPENJDK_TARGET_OS), windows)
+ JRE_MAN_PAGES += \
+ java.1 \
+ jjs.1 \
+ keytool.1 \
+ orbd.1 \
+ pack200.1 \
+ rmid.1 \
+ rmiregistry.1 \
+ servertool.1 \
+ tnameserv.1 \
+ unpack200.1
+
+ JDK_MAN_PAGES += \
+ $(JRE_MAN_PAGES) \
+ appletviewer.1 \
+ idlj.1 \
+ jar.1 \
+ jarsigner.1 \
+ javac.1 \
+ javadoc.1 \
+ javah.1 \
+ javap.1 \
+ jconsole.1 \
+ jcmd.1 \
+ jdb.1 \
+ jdeps.1 \
+ jinfo.1 \
+ jmap.1 \
+ jps.1 \
+ jrunscript.1 \
+ jstack.1 \
+ jstat.1 \
+ jstatd.1 \
+ policytool.1 \
+ rmic.1 \
+ schemagen.1 \
+ serialver.1 \
+ wsgen.1 \
+ wsimport.1 \
+ xjc.1
+
+ # This variable is potentially overridden in the closed makefile.
+ MAN_SRC_BASEDIR ?= $(JDK_TOPDIR)/src
+
+ ifeq ($(OPENJDK_TARGET_OS), linux)
+ MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/linux/doc
+ MAN1_SUBDIR = man
+ endif
+ ifeq ($(OPENJDK_TARGET_OS), solaris)
+ MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/solaris/doc
+ MAN1_SUBDIR = sun/man/man1
+ endif
+ ifeq ($(OPENJDK_TARGET_OS), macosx)
+ MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/bsd/doc
+ MAN1_SUBDIR = man
+ endif
+
+ $(JRE_IMAGE_DIR)/man/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/%
+ $(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@))
+ $(install-file)
+
+ $(JDK_IMAGE_DIR)/man/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/%
+ $(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@))
+ $(install-file)
+
+ $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
+ $(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@))
+ $(install-file)
+
+ $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
+ $(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@))
+ $(install-file)
+
+ ifeq ($(OPENJDK_TARGET_OS), solaris)
+ $(JRE_IMAGE_DIR)/man/ja/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
+ $(call LogInfo, Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@))
+ $(install-file)
+
+ $(JDK_IMAGE_DIR)/man/ja/man1/%: $(MAN_SRC_DIR)/$(MAN1_SUBDIR)/ja/%
+ $(call LogInfo, Converting $(patsubst $(OUTPUT_ROOT)/%,%,$@))
+ $(install-file)
+ endif
+
+ ifneq ($(findstring $(OPENJDK_TARGET_OS), linux macosx), )
+ $(JRE_IMAGE_DIR)/man/ja:
+ $(call LogInfo, Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@))
+ $(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
+
+ $(JDK_IMAGE_DIR)/man/ja:
+ $(call LogInfo, Creating $(patsubst $(OUTPUT_ROOT)/%,%,$@))
+ $(CD) $(@D) && $(RM) ja && $(LN) -s ja_JP.UTF-8 ja
+ endif
+
+ ifeq ($(OPENJDK_TARGET_OS), solaris)
+ JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \
+ $(addprefix $(JRE_IMAGE_DIR)/man/ja/man1/, $(JRE_MAN_PAGES)) \
+ $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \
+ $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.PCK/man1/, $(JRE_MAN_PAGES))
+
+ JDK_MAN_PAGE_LIST = $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \
+ $(addprefix $(JDK_IMAGE_DIR)/man/ja/man1/, $(JDK_MAN_PAGES)) \
+ $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JDK_MAN_PAGES)) \
+ $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.PCK/man1/, $(JDK_MAN_PAGES))
+ endif
+
+ ifneq ($(findstring $(OPENJDK_TARGET_OS), linux macosx), )
+ JRE_MAN_PAGE_LIST = $(addprefix $(JRE_IMAGE_DIR)/man/man1/, $(JRE_MAN_PAGES)) \
+ $(addprefix $(JRE_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JRE_MAN_PAGES)) \
+ $(JRE_IMAGE_DIR)/man/ja
+
+ JDK_MAN_PAGE_LIST = $(addprefix $(JDK_IMAGE_DIR)/man/man1/, $(JDK_MAN_PAGES)) \
+ $(addprefix $(JDK_IMAGE_DIR)/man/ja_JP.UTF-8/man1/, $(JDK_MAN_PAGES)) \
+ $(JDK_IMAGE_DIR)/man/ja
+ endif
+
+ JRE_TARGETS += $(JRE_MAN_PAGE_LIST)
+ JDK_TARGETS += $(JDK_MAN_PAGE_LIST)
+endif # Windows
+
+################################################################################
+# src.zip
+
+$(JDK_IMAGE_DIR)/lib/src.zip: $(SUPPORT_OUTPUTDIR)/src.zip
+ $(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@))
+ $(install-file)
+
+JDK_TARGETS += $(JDK_IMAGE_DIR)/lib/src.zip
+
+################################################################################
+# /demo dir
+# Avoid doing the expensive find unless called with "jdk" as target.
+ifneq ($(filter jdk, $(MAKECMDGOALS)), )
+
+ DEMO_FILES := \
+ $(if $(wildcard $(SUPPORT_OUTPUTDIR)/demos/image), \
+ $(call DoubleDollar, \
+ $(shell $(FIND) $(SUPPORT_OUTPUTDIR)/demos/image \
+ -type f -a ! \( -name "_the*" -o -name "javac_state" \) )) \
+ )
+
+ ifeq ($(ZIP_EXTERNAL_DEBUG_SYMBOLS), true)
+ ifeq ($(OPENJDK_TARGET_OS), macosx)
+ DEMO_FILES := $(call not-containing, .dSYM, $(DEMO_FILES))
+ else
+ DEMO_FILES := $(filter-out %.debuginfo %.pdb %.map, $(DEMO_FILES))
+ endif
+ endif
+
+ $(eval $(call SetupCopyFiles, JDK_COPY_DEMOS, \
+ SRC := $(SUPPORT_OUTPUTDIR)/demos/image, \
+ DEST := $(JDK_IMAGE_DIR)/demo, \
+ FILES := $(DEMO_FILES), \
+ ))
+
+ JDK_TARGETS += $(JDK_COPY_DEMOS)
+endif
+
+################################################################################
+# Code coverage data files
+
+ifeq ($(GCOV_ENABLED), true)
+
+ GCOV_FIND_EXPR := -type f -name "*.gcno"
+
+ $(eval $(call SetupCopyFiles,COPY_HOTSPOT_GCOV_GCNO, \
+ SRC := $(OUTPUT_ROOT), \
+ DEST := $(SYMBOLS_IMAGE_DIR)/gcov, \
+ FILES := $(shell $(FIND) $(HOTSPOT_OUTPUTDIR) $(GCOV_FIND_EXPR))))
+
+ SYMBOLS_TARGETS += $(COPY_HOTSPOT_GCOV_GCNO)
+
+ $(eval $(call SetupCopyFiles,COPY_JDK_GCOV_GCNO, \
+ SRC := $(OUTPUT_ROOT), \
+ DEST := $(SYMBOLS_IMAGE_DIR)/gcov, \
+ FILES := $(shell $(FIND) $(SUPPORT_OUTPUTDIR)/native $(GCOV_FIND_EXPR))))
+
+ SYMBOLS_TARGETS += $(COPY_JDK_GCOV_GCNO)
+
+endif
+
+################################################################################
+# Debug symbols
+# Since debug symbols are not included in the jmod files, they need to be copied
+# in manually after generating the images.
+
+ALL_JDK_MODULES := $(JDK_MODULES)
+ALL_JRE_MODULES := $(sort $(JRE_MODULES), $(foreach m, $(JRE_MODULES), \
+ $(call FindTransitiveDepsForModule, $m)))
+
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ LIBS_TARGET_SUBDIR := bin
+else
+ LIBS_TARGET_SUBDIR := lib
+endif
+
+# Param 1 - dir to find debuginfo files in
+FindDebuginfoFiles = \
+ $(wildcard $(addprefix $1/*, $(DEBUGINFO_SUFFIXES)) \
+ $(addprefix $1/*/*, $(DEBUGINFO_SUFFIXES)) \
+ $(addprefix $1/*/*/*, $(DEBUGINFO_SUFFIXES)))
+
+# Pick the correct debug info files to copy, either zipped or not.
+ifeq ($(ZIP_EXTERNAL_DEBUG_SYMBOLS), true)
+ DEBUGINFO_SUFFIXES += .diz
+else
+ DEBUGINFO_SUFFIXES := .debuginfo .pdb .map
+ # On Macosx, if debug symbols have not been zipped, find all files inside *.dSYM
+ # dirs.
+ ifeq ($(OPENJDK_TARGET_OS), macosx)
+ $(eval $(call FillCacheFind, \
+ $(SUPPORT_OUTPUTDIR)/modules_cmds $(SUPPORT_OUTPUTDIR)/modules_libs))
+ FindDebuginfoFiles = \
+ $(if $(wildcard $1), $(call containing, .dSYM/, $(call CacheFind, $1)))
+ endif
+endif
+
+# Param 1 - either JDK or JRE
+SetupCopyDebuginfo = \
+ $(foreach m, $(ALL_$1_MODULES), \
+ $(eval $(call SetupCopyFiles, COPY_$1_LIBS_DEBUGINFO_$m, \
+ SRC := $(SUPPORT_OUTPUTDIR)/modules_libs/$m, \
+ DEST := $($1_IMAGE_DIR)/$(LIBS_TARGET_SUBDIR), \
+ FILES := $(call FindDebuginfoFiles, \
+ $(SUPPORT_OUTPUTDIR)/modules_libs/$m), \
+ )) \
+ $(eval $1_TARGETS += $$(COPY_$1_LIBS_DEBUGINFO_$m)) \
+ )
+
+# No space before argument to avoid having to put $(strip ) everywhere in
+# implementation above.
+$(call SetupCopyDebuginfo,JDK)
+$(call SetupCopyDebuginfo,JRE)
+
+################################################################################
+
+# Include custom post hook here to make it possible to augment the target lists
+# before actual target prerequisites are declared.
+$(eval $(call IncludeCustomExtension, , Images-post.gmk))
+
+################################################################################
+
+$(JRE_TARGETS): $(TOOL_JRE_TARGETS)
+$(JDK_TARGETS): $(TOOL_JDK_TARGETS)
+
+jdk: $(JDK_TARGETS)
+jre: $(JRE_TARGETS)
+symbols: $(SYMBOLS_TARGETS)
+
+all: jdk jre symbols
+
+$(JRE_COMPACT1_TARGETS): $(TOOL_JRE_COMPACT1_TARGETS)
+$(JRE_COMPACT2_TARGETS): $(TOOL_JRE_COMPACT2_TARGETS)
+$(JRE_COMPACT3_TARGETS): $(TOOL_JRE_COMPACT3_TARGETS)
+
+profiles: $(TOOL_JRE_COMPACT1_TARGETS) \
+ $(TOOL_JRE_COMPACT2_TARGETS) \
+ $(TOOL_JRE_COMPACT3_TARGETS) \
+ $(JRE_COMPACT1_TARGETS) \
+ $(JRE_COMPACT2_TARGETS) \
+ $(JRE_COMPACT3_TARGETS)
+
+.PHONY: default all jdk jre symbols profiles
diff --git a/make/Init.gmk b/make/Init.gmk
new file mode 100644
index 0000000..5785b12
--- /dev/null
+++ b/make/Init.gmk
@@ -0,0 +1,346 @@
+#
+# Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+################################################################################
+# This is the bootstrapping part of the build. This file is included from the
+# top level Makefile, and is responsible for launching the Main.gmk file with
+# the proper make and the proper make arguments.
+################################################################################
+
+# This must be the first rule
+default:
+.PHONY: default
+
+# Inclusion of this pseudo-target will cause make to execute this file
+# serially, regardless of -j.
+.NOTPARALLEL:
+
+ifeq ($(HAS_SPEC),)
+ ##############################################################################
+ # This is the default mode. We have not been recursively called with a SPEC.
+ ##############################################################################
+
+ # Include our helper functions.
+ include $(topdir)/make/InitSupport.gmk
+
+ # Here are "global" targets, i.e. targets that can be executed without having
+ # a configuration. This will define ALL_GLOBAL_TARGETS.
+ include $(topdir)/make/Help.gmk
+
+ # Targets provided by Init.gmk.
+ ALL_INIT_TARGETS := print-modules print-targets print-configuration \
+ print-tests reconfigure pre-compare-build post-compare-build
+
+ # CALLED_TARGETS is the list of targets that the user provided,
+ # or "default" if unspecified.
+ CALLED_TARGETS := $(if $(MAKECMDGOALS), $(MAKECMDGOALS), default)
+
+ # Extract non-global targets that require a spec file.
+ CALLED_SPEC_TARGETS := $(filter-out $(ALL_GLOBAL_TARGETS), $(CALLED_TARGETS))
+
+ # If we have only global targets, or if we are called with -qp (assuming an
+ # external part, e.g. bash completion, is trying to understand our targets),
+ # we will skip SPEC location and the sanity checks.
+ ifeq ($(CALLED_SPEC_TARGETS), )
+ ONLY_GLOBAL_TARGETS := true
+ endif
+ ifeq ($(findstring p, $(MAKEFLAGS))$(findstring q, $(MAKEFLAGS)), pq)
+ ONLY_GLOBAL_TARGETS := true
+ endif
+
+ ifeq ($(ONLY_GLOBAL_TARGETS), true)
+ ############################################################################
+ # We have only global targets, or are called with -pq.
+ ############################################################################
+
+ ifeq ($(wildcard $(SPEC)), )
+ # If we have no SPEC provided, we will just make a "best effort" target list.
+ # First try to grab any available pre-existing main-targets.gmk.
+ main_targets_file := $(firstword $(wildcard $(build_dir)/*/make-support/main-targets.gmk))
+ ifneq ($(main_targets_file), )
+ # Extract the SPEC that corresponds to this main-targets.gmk file.
+ SPEC := $(patsubst %/make-support/main-targets.gmk, %/spec.gmk, $(main_targets_file))
+ else
+ # None found, pick an arbitrary SPEC for which to generate a file
+ SPEC := $(firstword $(all_spec_files))
+ endif
+ endif
+
+ ifneq ($(wildcard $(SPEC)), )
+ $(eval $(call DefineMainTargets, LAZY, $(SPEC)))
+ else
+ # If we have no configurations we can not provide any main targets.
+ ALL_MAIN_TARGETS :=
+ endif
+
+ ALL_TARGETS := $(sort $(ALL_GLOBAL_TARGETS) $(ALL_MAIN_TARGETS) $(ALL_INIT_TARGETS))
+
+ # Just list all our targets.
+ $(ALL_TARGETS):
+
+ .PHONY: $(ALL_TARGETS)
+
+ else
+ ############################################################################
+ # This is the normal case, we have been called from the command line by the
+ # user and we need to call ourself back with a proper SPEC.
+ # We have at least one non-global target, so we need to find a spec file.
+ ############################################################################
+
+ # Basic checks on environment and command line.
+ $(eval $(call CheckControlVariables))
+ $(eval $(call CheckDeprecatedEnvironment))
+ $(eval $(call CheckInvalidMakeFlags))
+
+ # Check that CONF_CHECK is valid.
+ $(eval $(call ParseConfCheckOption))
+
+ # Check that the LOG given is valid, and set LOG_LEVEL, LOG_NOFILE and MAKE_LOG_FLAGS.
+ $(eval $(call ParseLogLevel))
+
+ # After this SPECS contain 1..N spec files (otherwise ParseConfAndSpec fails).
+ $(eval $(call ParseConfAndSpec))
+
+ # Extract main targets from Main.gmk using the spec(s) provided. In theory,
+ # with multiple specs, we should find the intersection of targets provided
+ # by all specs, but we approximate this by an arbitrary spec from the list.
+ # This will setup ALL_MAIN_TARGETS.
+ $(eval $(call DefineMainTargets, FORCE, $(firstword $(SPECS))))
+
+ # Separate called targets depending on type.
+ INIT_TARGETS := $(filter $(ALL_INIT_TARGETS), $(CALLED_SPEC_TARGETS))
+ MAIN_TARGETS := $(filter $(ALL_MAIN_TARGETS), $(CALLED_SPEC_TARGETS))
+ SEQUENTIAL_TARGETS := $(filter dist-clean clean%, $(MAIN_TARGETS))
+ PARALLEL_TARGETS := $(filter-out $(SEQUENTIAL_TARGETS), $(MAIN_TARGETS))
+
+ # The spec files depend on the autoconf source code. This check makes sure
+ # the configuration is up to date after changes to configure.
+ CUSTOM_CONFIG_DIR ?= $(topdir)/closed/autoconf
+
+ $(SPECS): $(wildcard $(topdir)/common/autoconf/*) $(wildcard $(CUSTOM_CONFIG_DIR)/*)
+ ifeq ($(CONF_CHECK), fail)
+ @echo "Error: The configuration is not up to date for '$(lastword $(subst /, , $(dir $@)))'."
+ $(call PrintConfCheckFailed)
+ @exit 2
+ else ifeq ($(CONF_CHECK), auto)
+ @echo "Note: The configuration is not up to date for '$(lastword $(subst /, , $(dir $@)))'."
+ @( cd $(topdir) && \
+ $(MAKE) $(MFLAGS) $(MAKE_LOG_FLAGS) -r -R -f $(topdir)/make/Init.gmk \
+ SPEC=$@ HAS_SPEC=true ACTUAL_TOPDIR=$(topdir) \
+ reconfigure )
+ else ifeq ($(CONF_CHECK), ignore)
+ # Do nothing
+ endif
+
+ # Do not let make delete spec files even if aborted while doing a reconfigure
+ .PRECIOUS: $(SPECS)
+
+ # Unless reconfigure is explicitly called, let all main targets depend on
+ # the spec files to be up to date.
+ ifeq ($(findstring reconfigure, $(INIT_TARGETS)), )
+ $(MAIN_TARGETS): $(SPECS)
+ endif
+
+ make-info:
+ ifneq ($(findstring $(LOG_LEVEL),info debug trace),)
+ $(info Running make as '$(strip $(MAKE) $(MFLAGS) \
+ $(COMMAND_LINE_VARIABLES) $(MAKECMDGOALS))')
+ endif
+
+ MAKE_INIT_WITH_SPEC_ARGUMENTS := ACTUAL_TOPDIR=$(topdir) \
+ USER_MAKE_VARS="$(USER_MAKE_VARS)" MAKE_LOG_FLAGS=$(MAKE_LOG_FLAGS) \
+ LOG_LEVEL=$(LOG_LEVEL) LOG_NOFILE=$(LOG_NOFILE) LOG_CMDLINES=$(LOG_CMDLINES) \
+ INIT_TARGETS="$(INIT_TARGETS)" \
+ SEQUENTIAL_TARGETS="$(SEQUENTIAL_TARGETS)" \
+ PARALLEL_TARGETS="$(PARALLEL_TARGETS)"
+
+ # Now the init and main targets will be called, once for each SPEC. The
+ # recipe will be run once for every target specified, but we only want to
+ # execute the recipe a single time, hence the TARGET_DONE with a dummy
+ # command if true.
+ # The COMPARE_BUILD part implements special support for makefile development.
+ $(ALL_INIT_TARGETS) $(ALL_MAIN_TARGETS): make-info
+ @$(if $(TARGET_DONE), \
+ true \
+ , \
+ ( cd $(topdir) && \
+ $(foreach spec, $(SPECS), \
+ $(MAKE) $(MFLAGS) $(MAKE_LOG_FLAGS) -r -R -j 1 -f $(topdir)/make/Init.gmk \
+ SPEC=$(spec) HAS_SPEC=true $(MAKE_INIT_WITH_SPEC_ARGUMENTS) \
+ main && \
+ $(if $(and $(COMPARE_BUILD), $(PARALLEL_TARGETS)), \
+ $(MAKE) $(MFLAGS) $(MAKE_LOG_FLAGS) -r -R -f $(topdir)/make/Init.gmk \
+ SPEC=$(spec) HAS_SPEC=true ACTUAL_TOPDIR=$(topdir) \
+ COMPARE_BUILD="$(COMPARE_BUILD)" pre-compare-build && \
+ $(MAKE) $(MFLAGS) $(MAKE_LOG_FLAGS) -r -R -j 1 -f $(topdir)/make/Init.gmk \
+ SPEC=$(spec) HAS_SPEC=true $(MAKE_INIT_WITH_SPEC_ARGUMENTS) \
+ COMPARE_BUILD="$(COMPARE_BUILD)" main && \
+ $(MAKE) $(MFLAGS) $(MAKE_LOG_FLAGS) -r -R -f $(topdir)/make/Init.gmk \
+ SPEC=$(spec) HAS_SPEC=true ACTUAL_TOPDIR=$(topdir) \
+ COMPARE_BUILD="$(COMPARE_BUILD)" post-compare-build && \
+ ) \
+ ) true ) \
+ $(eval TARGET_DONE=true) \
+ )
+
+ .PHONY: $(ALL_MAIN_TARGETS) $(ALL_INIT_TARGETS)
+
+ endif # $(ONLY_GLOBAL_TARGETS)!=true
+
+else # HAS_SPEC=true
+
+ ##############################################################################
+ # Now we have a spec. This part provides the "main" target that acts as a
+ # trampoline to call the Main.gmk with the value of $(MAKE) found in the spec
+ # file.
+ ##############################################################################
+
+ include $(SPEC)
+
+ # Our helper functions.
+ include $(TOPDIR)/make/InitSupport.gmk
+
+ # Verify that the spec file we included seems okay.
+ $(eval $(call CheckSpecSanity))
+
+ # Parse COMPARE_BUILD (for makefile development)
+ $(eval $(call ParseCompareBuild))
+
+ ifeq ($(LOG_NOFILE), true)
+ # Disable build log if LOG=[level,]nofile was given
+ override BUILD_LOG_PIPE :=
+ endif
+
+ ifeq ($(OUTPUT_SYNC_SUPPORTED), true)
+ OUTPUT_SYNC_FLAG := -O$(OUTPUT_SYNC)
+ endif
+
+ ##############################################################################
+ # Init targets
+ ##############################################################################
+
+ print-modules:
+ ( cd $(TOPDIR) && \
+ $(MAKE) $(MAKE_ARGS) -j 1 -f make/Main.gmk $(USER_MAKE_VARS) \
+ NO_RECIPES=true print-modules )
+
+ print-targets:
+ ( cd $(TOPDIR) && \
+ $(MAKE) $(MAKE_ARGS) -j 1 -f make/Main.gmk $(USER_MAKE_VARS) \
+ NO_RECIPES=true print-targets )
+
+ print-tests:
+ ( cd $(TOPDIR) && \
+ $(MAKE) $(MAKE_ARGS) -j 1 -f make/Main.gmk $(USER_MAKE_VARS) \
+ NO_RECIPES=true print-tests )
+
+ print-configuration:
+ $(ECHO) $(CONFIGURE_COMMAND_LINE)
+
+ reconfigure:
+ ifneq ($(CONFIGURE_COMMAND_LINE), )
+ $(ECHO) "Re-running configure using arguments '$(CONFIGURE_COMMAND_LINE)'"
+ else
+ $(ECHO) "Re-running configure using default settings"
+ endif
+ ( cd $(OUTPUT_ROOT) && PATH="$(ORIGINAL_PATH)" \
+ $(BASH) $(TOPDIR)/configure $(CONFIGURE_COMMAND_LINE) )
+
+ ##############################################################################
+ # The main target, for delegating into Main.gmk
+ ##############################################################################
+
+ MAIN_TARGETS := $(SEQUENTIAL_TARGETS) $(PARALLEL_TARGETS) $(COMPARE_BUILD_MAKE)
+ # If building the default target, add what they are to the description.
+ DESCRIPTION_TARGETS := $(strip $(MAIN_TARGETS))
+ ifeq ($(DESCRIPTION_TARGETS), default)
+ DESCRIPTION_TARGETS += ($(DEFAULT_MAKE_TARGET))
+ endif
+ TARGET_DESCRIPTION := target$(if $(word 2, $(MAIN_TARGETS)),s) \
+ '$(strip $(DESCRIPTION_TARGETS))' in configuration '$(CONF_NAME)'
+
+ # MAKEOVERRIDES is automatically set and propagated by Make to sub-Make calls.
+ # We need to clear it of the init-specific variables. The user-specified
+ # variables are explicitly propagated using $(USER_MAKE_VARS).
+ main: MAKEOVERRIDES :=
+
+ main: $(INIT_TARGETS)
+ ifneq ($(SEQUENTIAL_TARGETS)$(PARALLEL_TARGETS), )
+ $(call RotateLogFiles)
+ $(call PrepareFailureLogs)
+ $(PRINTF) "Building $(TARGET_DESCRIPTION)\n" $(BUILD_LOG_PIPE)
+ ifneq ($(SEQUENTIAL_TARGETS), )
+ # Don't touch build output dir since we might be cleaning. That
+ # means no log pipe.
+ ( cd $(TOPDIR) && \
+ $(MAKE) $(MAKE_ARGS) -j 1 -f make/Main.gmk $(USER_MAKE_VARS) \
+ $(SEQUENTIAL_TARGETS) )
+ endif
+ ifneq ($(PARALLEL_TARGETS), )
+ $(call StartGlobalTimer)
+ $(call PrepareSmartJavac)
+ ( cd $(TOPDIR) && \
+ $(NICE) $(MAKE) $(MAKE_ARGS) $(OUTPUT_SYNC_FLAG) \
+ -j $(JOBS) -f make/Main.gmk $(USER_MAKE_VARS) \
+ $(PARALLEL_TARGETS) $(COMPARE_BUILD_MAKE) $(BUILD_LOG_PIPE) || \
+ ( exitcode=$$? && \
+ $(PRINTF) "\nERROR: Build failed for $(TARGET_DESCRIPTION) (exit code $$exitcode) \n" \
+ $(BUILD_LOG_PIPE) && \
+ cd $(TOPDIR) && $(MAKE) $(MAKE_ARGS) -j 1 -f make/Init.gmk \
+ HAS_SPEC=true on-failure ; \
+ exit $$exitcode ) )
+ $(call CleanupSmartJavac)
+ $(call StopGlobalTimer)
+ $(call ReportBuildTimes)
+ endif
+ if test -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error ; then \
+ exit 1 ; \
+ fi
+ $(PRINTF) "Finished building $(TARGET_DESCRIPTION)\n" $(BUILD_LOG_PIPE)
+ endif
+
+ on-failure:
+ $(call CleanupSmartJavac)
+ $(call StopGlobalTimer)
+ $(call ReportBuildTimes)
+ $(call PrintFailureReports)
+ $(call PrintBuildLogFailures)
+ $(PRINTF) "Hint: See common/doc/building.html#troubleshooting for assistance.\n\n"
+ ifneq ($(COMPARE_BUILD), )
+ $(call CleanupCompareBuild)
+ endif
+
+ # Support targets for COMPARE_BUILD, used for makefile development
+ pre-compare-build:
+ $(call WaitForSmartJavacFinish)
+ $(call PrepareCompareBuild)
+
+ post-compare-build:
+ $(call WaitForSmartJavacFinish)
+ $(call CleanupCompareBuild)
+ $(call CompareBuildDoComparison)
+
+ .PHONY: print-targets print-modules reconfigure main on-failure
+endif
diff --git a/make/InitSupport.gmk b/make/InitSupport.gmk
new file mode 100644
index 0000000..9bab7e5
--- /dev/null
+++ b/make/InitSupport.gmk
@@ -0,0 +1,563 @@
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+################################################################################
+# This file contains helper functions for Init.gmk.
+# It is divided in two parts, depending on if a SPEC is present or not
+# (HAS_SPEC is true or not).
+################################################################################
+
+ifndef _INITSUPPORT_GMK
+_INITSUPPORT_GMK := 1
+
+ifeq ($(HAS_SPEC),)
+
+ # Include the corresponding closed file, if present.
+ # Normal hook mechanism cannot be used since we have no SPEC.
+ -include $(topdir)/closed/make/InitSupport.gmk
+
+ ##############################################################################
+ # Helper functions for the initial part of Init.gmk, before the spec file is
+ # loaded. Most of these functions provide parsing and setting up make options
+ # from the command-line.
+ ##############################################################################
+
+ # Make control variables, handled by Init.gmk
+ INIT_CONTROL_VARIABLES += LOG CONF CONF_NAME SPEC JOBS TEST_JOBS CONF_CHECK \
+ COMPARE_BUILD JTREG GTEST
+
+ # All known make control variables
+ MAKE_CONTROL_VARIABLES := $(INIT_CONTROL_VARIABLES) TEST JDK_FILTER
+
+ # Define a simple reverse function.
+ # Should maybe move to MakeBase.gmk, but we can't include that file now.
+ reverse = \
+ $(if $(strip $(1)), $(call reverse, $(wordlist 2, $(words $(1)), $(1)))) \
+ $(firstword $(1))
+
+ # The variable MAKEOVERRIDES contains variable assignments from the command
+ # line, but in reverse order to what the user entered.
+ # The '\#' <=> '\ 'dance is needed to keep values with space in them connected.
+ COMMAND_LINE_VARIABLES := $(subst \#,\ , $(call reverse, $(subst \ ,\#,$(MAKEOVERRIDES))))
+
+ # A list like FOO="val1" BAR="val2" containing all user-supplied make
+ # variables that we should propagate.
+ # The '\#' <=> '\ 'dance is needed to keep values with space in them connected.
+ USER_MAKE_VARS := $(subst \#,\ , $(filter-out $(addsuffix =%, $(INIT_CONTROL_VARIABLES)), \
+ $(subst \ ,\#,$(MAKEOVERRIDES))))
+
+ # Setup information about available configurations, if any.
+ build_dir=$(topdir)/build
+ all_spec_files=$(wildcard $(build_dir)/*/spec.gmk)
+ # Extract the configuration names from the path
+ all_confs=$(patsubst %/spec.gmk, %, $(patsubst $(build_dir)/%, %, $(all_spec_files)))
+
+ # Check for unknown command-line variables
+ define CheckControlVariables
+ command_line_variables := $$(strip $$(foreach var, \
+ $$(subst \ ,_,$$(MAKEOVERRIDES)), \
+ $$(firstword $$(subst =, , $$(var)))))
+ unknown_command_line_variables := $$(strip \
+ $$(filter-out $$(MAKE_CONTROL_VARIABLES), $$(command_line_variables)))
+ ifneq ($$(unknown_command_line_variables), )
+ $$(info Note: Command line contains non-control variables:)
+ $$(foreach var, $$(unknown_command_line_variables), $$(info * $$(var)=$$($$(var))))
+ $$(info Make sure it is not mistyped, and that you intend to override this variable.)
+ $$(info 'make help' will list known control variables.)
+ $$(info )
+ endif
+ endef
+
+ # Check for deprecated ALT_ variables
+ define CheckDeprecatedEnvironment
+ defined_alt_variables := $$(filter ALT_%, $$(.VARIABLES))
+ ifneq ($$(defined_alt_variables), )
+ $$(info Warning: You have the following ALT_ variables set:)
+ $$(foreach var, $$(defined_alt_variables), $$(info * $$(var)=$$($$(var))))
+ $$(info ALT_ variables are deprecated, and may result in a failed build.)
+ $$(info Please clean your environment.)
+ $$(info )
+ endif
+ endef
+
+ # Check for invalid make flags like -j
+ define CheckInvalidMakeFlags
+ # This is a trick to get this rule to execute before any other rules
+ # MAKEFLAGS only indicate -j if read in a recipe (!)
+ $$(topdir)/make/Init.gmk: .FORCE
+ $$(if $$(findstring --jobserver, $$(MAKEFLAGS)), \
+ $$(info Error: 'make -jN' is not supported, use 'make JOBS=N') \
+ $$(error Cannot continue) \
+ )
+ .FORCE:
+ .PHONY: .FORCE
+ endef
+
+ # Check that the CONF_CHECK option is valid and set up handling
+ define ParseConfCheckOption
+ ifeq ($$(CONF_CHECK), )
+ # Default behavior is fail
+ CONF_CHECK := fail
+ else ifneq ($$(filter-out auto fail ignore, $$(CONF_CHECK)),)
+ $$(info Error: CONF_CHECK must be one of: auto, fail or ignore.)
+ $$(error Cannot continue)
+ endif
+ endef
+
+ # Look for a given option in the LOG variable, and if found, set a variable
+ # and remove the option from the LOG variable
+ # $1: The option to look for
+ # $2: The option to set to "true" if the option is found
+ define ParseLogOption
+ ifneq ($$(findstring $1, $$(LOG)),)
+ $2 := true
+ # COMMA is defined in spec.gmk, but that is not included yet
+ COMMA := ,
+ # First try to remove ",<option>" if it exists, otherwise just remove "<option>"
+ LOG_STRIPPED := $$(subst $1,, $$(subst $$(COMMA)$(strip $1),, $$(LOG)))
+ # We might have ended up with a leading comma. Remove it. Need override
+ # since LOG is set from the command line.
+ override LOG := $$(strip $$(patsubst $$(COMMA)%, %, $$(LOG_STRIPPED)))
+ endif
+ endef
+
+ define ParseLogLevel
+ # Catch old-style VERBOSE= command lines.
+ ifneq ($$(origin VERBOSE), undefined)
+ $$(info Error: VERBOSE is deprecated. Use LOG=<warn|info|debug|trace> instead.)
+ $$(error Cannot continue)
+ endif
+
+ # Setup logging according to LOG
+
+ # If the "nofile" argument is given, act on it and strip it away
+ $$(eval $$(call ParseLogOption, nofile, LOG_NOFILE))
+
+ # If the "cmdline" argument is given, act on it and strip it away
+ $$(eval $$(call ParseLogOption, cmdlines, LOG_CMDLINES))
+
+ LOG_LEVEL := $$(LOG)
+
+ ifeq ($$(LOG_LEVEL),)
+ # Set LOG to "warn" as default if not set
+ LOG_LEVEL := warn
+ endif
+
+ ifeq ($$(LOG_LEVEL), warn)
+ MAKE_LOG_FLAGS := -s
+ else ifeq ($$(LOG_LEVEL), info)
+ MAKE_LOG_FLAGS := -s
+ else ifeq ($$(LOG_LEVEL), debug)
+ MAKE_LOG_FLAGS :=
+ else ifeq ($$(LOG_LEVEL), trace)
+ MAKE_LOG_FLAGS :=
+ else
+ $$(info Error: LOG contains unknown option or log level: $$(LOG).)
+ $$(info LOG can be <level>[,<opt>[...]] where <opt> is nofile | cmdlines)
+ $$(info and <level> is warn | info | debug | trace)
+ $$(error Cannot continue)
+ endif
+ endef
+
+ define ParseConfAndSpec
+ ifneq ($$(origin SPEC), undefined)
+ # We have been given a SPEC, check that it works out properly
+ ifneq ($$(origin CONF), undefined)
+ # We also have a CONF argument. We can't have both.
+ $$(info Error: Cannot use CONF=$$(CONF) and SPEC=$$(SPEC) at the same time. Choose one.)
+ $$(error Cannot continue)
+ endif
+ ifneq ($$(origin CONF_NAME), undefined)
+ # We also have a CONF_NAME argument. We can't have both.
+ $$(info Error: Cannot use CONF_NAME=$$(CONF_NAME) and SPEC=$$(SPEC) at the same time. Choose one.)
+ $$(error Cannot continue)
+ endif
+ ifeq ($$(wildcard $$(SPEC)),)
+ $$(info Error: Cannot locate spec.gmk, given by SPEC=$$(SPEC).)
+ $$(error Cannot continue)
+ endif
+ ifeq ($$(filter /%, $$(SPEC)),)
+ # If given with relative path, make it absolute
+ SPECS := $$(CURDIR)/$$(strip $$(SPEC))
+ else
+ SPECS := $$(SPEC)
+ endif
+
+ # For now, unset this SPEC variable.
+ override SPEC :=
+ else
+ # Use spec.gmk files in the build output directory
+ ifeq ($$(all_spec_files),)
+ $$(info Error: No configurations found for $$(topdir).)
+ $$(info Please run 'bash configure' to create a configuration.)
+ $$(info )
+ $$(error Cannot continue)
+ endif
+
+ ifneq ($$(origin CONF_NAME), undefined)
+ ifneq ($$(origin CONF), undefined)
+ # We also have a CONF argument. We can't have both.
+ $$(info Error: Cannot use CONF=$$(CONF) and CONF_NAME=$$(CONF_NAME) at the same time. Choose one.)
+ $$(error Cannot continue)
+ endif
+ matching_conf := $$(strip $$(filter $$(CONF_NAME), $$(all_confs)))
+ ifeq ($$(matching_conf),)
+ $$(info Error: No configurations found matching CONF_NAME=$$(CONF_NAME).)
+ $$(info Available configurations in $$(build_dir):)
+ $$(foreach var, $$(all_confs), $$(info * $$(var)))
+ $$(error Cannot continue)
+ else ifneq ($$(words $$(matching_conf)), 1)
+ $$(info Error: Matching more than one configuration CONF_NAME=$$(CONF_NAME).)
+ $$(info Available configurations in $$(build_dir):)
+ $$(foreach var, $$(all_confs), $$(info * $$(var)))
+ $$(error Cannot continue)
+ else
+ $$(info Building configuration '$$(matching_conf)' (matching CONF_NAME=$$(CONF_NAME)))
+ endif
+ # Create a SPEC definition. This will contain the path to exactly one spec file.
+ SPECS := $$(build_dir)/$$(matching_conf)/spec.gmk
+ else ifneq ($$(origin CONF), undefined)
+ # User have given a CONF= argument.
+ ifeq ($$(CONF),)
+ # If given CONF=, match all configurations
+ matching_confs := $$(strip $$(all_confs))
+ else
+ # Otherwise select those that contain the given CONF string
+ matching_confs := $$(strip $$(foreach var, $$(all_confs), \
+ $$(if $$(findstring $$(CONF), $$(var)), $$(var))))
+ endif
+ ifeq ($$(matching_confs),)
+ $$(info Error: No configurations found matching CONF=$$(CONF).)
+ $$(info Available configurations in $$(build_dir):)
+ $$(foreach var, $$(all_confs), $$(info * $$(var)))
+ $$(error Cannot continue)
+ else
+ # Don't repeat this output on make restarts caused by including
+ # generated files.
+ ifeq ($$(MAKE_RESTARTS),)
+ ifeq ($$(words $$(matching_confs)), 1)
+ $$(info Building configuration '$$(matching_confs)' (matching CONF=$$(CONF)))
+ else
+ $$(info Building these configurations (matching CONF=$$(CONF)):)
+ $$(foreach var, $$(matching_confs), $$(info * $$(var)))
+ endif
+ endif
+ endif
+
+ # Create a SPEC definition. This will contain the path to one or more spec.gmk files.
+ SPECS := $$(addsuffix /spec.gmk, $$(addprefix $$(build_dir)/, $$(matching_confs)))
+ else
+ # No CONF or SPEC given, check the available configurations
+ ifneq ($$(words $$(all_spec_files)), 1)
+ $$(info Error: No CONF given, but more than one configuration found.)
+ $$(info Available configurations in $$(build_dir):)
+ $$(foreach var, $$(all_confs), $$(info * $$(var)))
+ $$(info Please retry building with CONF=<config pattern> (or SPEC=<spec file>).)
+ $$(info )
+ $$(error Cannot continue)
+ endif
+
+ # We found exactly one configuration, use it
+ SPECS := $$(strip $$(all_spec_files))
+ endif
+ endif
+ endef
+
+ # Extract main targets from Main.gmk using the spec provided in $2.
+ #
+ # Param 1: FORCE = force generation of main-targets.gmk or LAZY = do not force.
+ # Param 2: The SPEC file to use.
+ define DefineMainTargets
+
+ # We will start by making sure the main-targets.gmk file is removed, if
+ # make has not been restarted. By the -include, we will trigger the
+ # rule for generating the file (which is never there since we removed it),
+ # thus generating it fresh, and make will restart, incrementing the restart
+ # count.
+ main_targets_file := $$(dir $(strip $2))make-support/main-targets.gmk
+
+ ifeq ($$(MAKE_RESTARTS),)
+ # Only do this if make has not been restarted, and if we do not force it.
+ ifeq ($(strip $1), FORCE)
+ $$(shell rm -f $$(main_targets_file))
+ endif
+ endif
+
+ $$(main_targets_file):
+ @( cd $$(topdir) && \
+ $$(MAKE) $$(MAKE_LOG_FLAGS) -r -R -f $$(topdir)/make/Main.gmk \
+ -I $$(topdir)/make/common SPEC=$(strip $2) NO_RECIPES=true \
+ LOG_LEVEL=$$(LOG_LEVEL) \
+ create-main-targets-include )
+
+ # Now include main-targets.gmk. This will define ALL_MAIN_TARGETS.
+ -include $$(main_targets_file)
+ endef
+
+ define PrintConfCheckFailed
+ @echo ' '
+ @echo "Please rerun configure! Easiest way to do this is by running"
+ @echo "'make reconfigure'."
+ @echo "This behavior may also be changed using CONF_CHECK=<ignore|auto>."
+ @echo ' '
+ endef
+
+else # $(HAS_SPEC)=true
+ ##############################################################################
+ # Helper functions for the 'main' target. These functions assume a single,
+ # proper and existing SPEC is included.
+ ##############################################################################
+
+ include $(SRC_ROOT)/make/common/MakeBase.gmk
+
+ # Define basic logging setup
+ BUILD_LOG := $(OUTPUT_ROOT)/build.log
+ BUILD_TRACE_LOG := $(OUTPUT_ROOT)/build-trace-time.log
+
+ BUILD_LOG_PIPE := > >($(TEE) -a $(BUILD_LOG)) 2> >($(TEE) -a $(BUILD_LOG) >&2) && wait
+
+ # Sanity check the spec file, so it matches this source code
+ define CheckSpecSanity
+ ifneq ($$(ACTUAL_TOPDIR), $$(TOPDIR))
+ ifneq ($$(ACTUAL_TOPDIR), $$(ORIGINAL_TOPDIR))
+ ifneq ($$(ACTUAL_TOPDIR), $$(CANONICAL_TOPDIR))
+ $$(info Error: SPEC mismatch! Current working directory)
+ $$(info $$(ACTUAL_TOPDIR))
+ $$(info does not match either TOPDIR, ORIGINAL_TOPDIR or CANONICAL_TOPDIR)
+ $$(info $$(TOPDIR))
+ $$(info $$(ORIGINAL_TOPDIR))
+ $$(info $$(CANONICAL_TOPDIR))
+ $$(error Cannot continue)
+ endif
+ endif
+ endif
+ endef
+
+ # Parse COMPARE_BUILD into COMPARE_BUILD_*
+ # Syntax: COMPARE_BUILD=CONF=<configure options>:PATCH=<patch file>:
+ # MAKE=<make targets>:COMP_OPTS=<compare script options>:
+ # COMP_DIR=<compare script base dir>|<default>:
+ # FAIL=<bool>
+ # If neither CONF or PATCH is given, assume <default> means CONF if it
+ # begins with "--", otherwise assume it means PATCH.
+ # MAKE and COMP_OPTS can only be used with CONF and/or PATCH specified.
+ # If any value contains "+", it will be replaced by space.
+ # FAIL can be set to false to have the return value of compare be ignored.
+ define ParseCompareBuild
+ ifneq ($$(COMPARE_BUILD), )
+ COMPARE_BUILD_OUTPUT_ROOT := $(TOPDIR)/build/compare-build/$(CONF_NAME)
+ COMPARE_BUILD_FAIL := true
+
+ ifneq ($$(findstring :, $$(COMPARE_BUILD)), )
+ $$(foreach part, $$(subst :, , $$(COMPARE_BUILD)), \
+ $$(if $$(filter PATCH=%, $$(part)), \
+ $$(eval COMPARE_BUILD_PATCH=$$(strip $$(patsubst PATCH=%, %, $$(part)))) \
+ ) \
+ $$(if $$(filter CONF=%, $$(part)), \
+ $$(eval COMPARE_BUILD_CONF=$$(strip $$(subst +, , $$(patsubst CONF=%, %, $$(part))))) \
+ ) \
+ $$(if $$(filter MAKE=%, $$(part)), \
+ $$(eval COMPARE_BUILD_MAKE=$$(strip $$(subst +, , $$(patsubst MAKE=%, %, $$(part))))) \
+ ) \
+ $$(if $$(filter COMP_OPTS=%, $$(part)), \
+ $$(eval COMPARE_BUILD_COMP_OPTS=$$(strip $$(subst +, , $$(patsubst COMP_OPTS=%, %, $$(part))))) \
+ ) \
+ $$(if $$(filter COMP_DIR=%, $$(part)), \
+ $$(eval COMPARE_BUILD_COMP_DIR=$$(strip $$(subst +, , $$(patsubst COMP_DIR=%, %, $$(part))))) \
+ ) \
+ $$(if $$(filter FAIL=%, $$(part)), \
+ $$(eval COMPARE_BUILD_FAIL=$$(strip $$(subst +, , $$(patsubst FAIL=%, %, $$(part))))) \
+ ) \
+ )
+ else
+ # Separate handling for single field case, to allow for spaces in values.
+ ifneq ($$(filter PATCH=%, $$(COMPARE_BUILD)), )
+ COMPARE_BUILD_PATCH=$$(strip $$(patsubst PATCH=%, %, $$(COMPARE_BUILD)))
+ else ifneq ($$(filter CONF=%, $$(COMPARE_BUILD)), )
+ COMPARE_BUILD_CONF=$$(strip $$(subst +, , $$(patsubst CONF=%, %, $$(COMPARE_BUILD))))
+ else ifneq ($$(filter --%, $$(COMPARE_BUILD)), )
+ # Assume CONF if value begins with --
+ COMPARE_BUILD_CONF=$$(strip $$(subst +, , $$(COMPARE_BUILD)))
+ else
+ # Otherwise assume patch file
+ COMPARE_BUILD_PATCH=$$(strip $$(COMPARE_BUILD))
+ endif
+ endif
+ ifneq ($$(COMPARE_BUILD_PATCH), )
+ ifneq ($$(wildcard $$(TOPDIR)/$$(COMPARE_BUILD_PATCH)), )
+ # Assume relative path, if file exists
+ COMPARE_BUILD_PATCH := $$(wildcard $$(TOPDIR)/$$(COMPARE_BUILD_PATCH))
+ else ifeq ($$(wildcard $$(COMPARE_BUILD_PATCH)), )
+ $$(error Patch file $$(COMPARE_BUILD_PATCH) does not exist)
+ endif
+ endif
+ ifneq ($$(COMPARE_BUILD_FAIL), true)
+ COMPARE_BUILD_IGNORE_RESULT := || true
+ endif
+ endif
+ endef
+
+ # Prepare for a comparison rebuild
+ define PrepareCompareBuild
+ $(ECHO) "Preparing for comparison rebuild"
+ # Apply patch, if any
+ $(if $(COMPARE_BUILD_PATCH), $(PATCH) -p1 < $(COMPARE_BUILD_PATCH))
+ # Move the first build away temporarily
+ $(RM) -r $(TOPDIR)/build/.compare-build-temp
+ $(MKDIR) -p $(TOPDIR)/build/.compare-build-temp
+ $(MV) $(OUTPUT_ROOT) $(TOPDIR)/build/.compare-build-temp
+ # Restore an old compare-build, or create a new compare-build directory.
+ if test -d $(COMPARE_BUILD_OUTPUT_ROOT); then \
+ $(MV) $(COMPARE_BUILD_OUTPUT_ROOT) $(OUTPUT_ROOT); \
+ else \
+ $(MKDIR) -p $(OUTPUT_ROOT); \
+ fi
+ # Re-run configure with the same arguments (and possibly some additional),
+ # must be done after patching.
+ ( cd $(OUTPUT_ROOT) && PATH="$(ORIGINAL_PATH)" \
+ $(BASH) $(TOPDIR)/configure $(CONFIGURE_COMMAND_LINE) $(COMPARE_BUILD_CONF))
+ endef
+
+ # Cleanup after a compare build
+ define CleanupCompareBuild
+ # If running with a COMPARE_BUILD patch, reverse-apply it
+ $(if $(COMPARE_BUILD_PATCH), $(PATCH) -R -p1 < $(COMPARE_BUILD_PATCH))
+ # Move this build away and restore the original build
+ $(MKDIR) -p $(TOPDIR)/build/compare-build
+ $(MV) $(OUTPUT_ROOT) $(COMPARE_BUILD_OUTPUT_ROOT)
+ $(MV) $(TOPDIR)/build/.compare-build-temp/$(CONF_NAME) $(OUTPUT_ROOT)
+ $(RM) -r $(TOPDIR)/build/.compare-build-temp
+ endef
+
+ # Do the actual comparison of two builds
+ define CompareBuildDoComparison
+ # Compare first and second build. Ignore any error code from compare.sh.
+ $(ECHO) "Comparing between comparison rebuild (this/new) and baseline (other/old)"
+ $(if $(COMPARE_BUILD_COMP_DIR), \
+ +(cd $(COMPARE_BUILD_OUTPUT_ROOT) && ./compare.sh $(COMPARE_BUILD_COMP_OPTS) \
+ -2dirs $(COMPARE_BUILD_OUTPUT_ROOT)/$(COMPARE_BUILD_COMP_DIR) \
+ $(OUTPUT_ROOT)/$(COMPARE_BUILD_COMP_DIR) $(COMPARE_BUILD_IGNORE_RESULT)), \
+ +(cd $(COMPARE_BUILD_OUTPUT_ROOT) && ./compare.sh $(COMPARE_BUILD_COMP_OPTS) \
+ -o $(OUTPUT_ROOT) $(COMPARE_BUILD_IGNORE_RESULT)) \
+ )
+ endef
+
+ define PrintFailureReports
+ $(if $(wildcard $(MAKESUPPORT_OUTPUTDIR)/failure-logs/*.log), \
+ $(PRINTF) "\n=== Output from failing command(s) repeated here ===\n" $(NEWLINE) \
+ $(foreach logfile, $(sort $(wildcard $(MAKESUPPORT_OUTPUTDIR)/failure-logs/*.log)), \
+ $(PRINTF) "* For target $(notdir $(basename $(logfile))):\n" $(NEWLINE) \
+ ($(GREP) -v -e "^Note: including file:" < $(logfile) || true) | $(HEAD) -n 12 $(NEWLINE) \
+ if test `$(WC) -l < $(logfile)` -gt 12; then \
+ $(ECHO) " ... (rest of output omitted)" ; \
+ fi $(NEWLINE) \
+ ) \
+ $(PRINTF) "\n* All command lines available in $(MAKESUPPORT_OUTPUTDIR)/failure-logs.\n" $(NEWLINE) \
+ $(PRINTF) "=== End of repeated output ===\n" \
+ )
+ endef
+
+ define PrintBuildLogFailures
+ if $(GREP) -q "recipe for target .* failed" $(BUILD_LOG) 2> /dev/null; then \
+ $(PRINTF) "\n=== Make failed targets repeated here ===\n" ; \
+ $(GREP) "recipe for target .* failed" $(BUILD_LOG) ; \
+ $(PRINTF) "=== End of repeated output ===\n" ; \
+ $(PRINTF) "\nHint: Try searching the build log for the name of the first failed target.\n" ; \
+ else \
+ $(PRINTF) "\nNo indication of failed target found.\n" ; \
+ $(PRINTF) "Hint: Try searching the build log for '] Error'.\n" ; \
+ fi
+ endef
+
+ define RotateLogFiles
+ $(RM) $(BUILD_LOG).old 2> /dev/null && \
+ $(MV) $(BUILD_LOG) $(BUILD_LOG).old 2> /dev/null || true
+ $(if $(findstring trace, $(LOG_LEVEL)), \
+ $(RM) $(BUILD_TRACE_LOG).old 2> /dev/null && \
+ $(MV) $(BUILD_TRACE_LOG) $(BUILD_TRACE_LOG).old 2> /dev/null || true \
+ )
+ endef
+
+ define PrepareFailureLogs
+ $(RM) -r $(MAKESUPPORT_OUTPUTDIR)/failure-logs 2> /dev/null && \
+ $(MKDIR) -p $(MAKESUPPORT_OUTPUTDIR)/failure-logs
+ $(RM) $(MAKESUPPORT_OUTPUTDIR)/exit-with-error 2> /dev/null
+ endef
+
+ # Remove any javac server logs and port files. This
+ # prevents a new make run to reuse the previous servers.
+ define PrepareSmartJavac
+ $(if $(SJAVAC_SERVER_DIR), \
+ $(RM) -r $(SJAVAC_SERVER_DIR) 2> /dev/null && \
+ $(MKDIR) -p $(SJAVAC_SERVER_DIR) \
+ )
+ endef
+
+ define CleanupSmartJavac
+ [ -f $(SJAVAC_SERVER_DIR)/server.port ] && $(ECHO) Stopping sjavac server && \
+ $(TOUCH) $(SJAVAC_SERVER_DIR)/server.port.stop; true
+ endef
+
+ ifeq ($(OPENJDK_BUILD_OS), windows)
+ # On windows we need to synchronize with the javac server to be able to
+ # move or remove the build output directory. Since we have no proper
+ # synchronization process, wait for a while and hope it helps. This is only
+ # used by build comparisons.
+ define WaitForSmartJavacFinish
+ $(if $(SJAVAC_SERVER_DIR), \
+ sleep 5\
+ )
+ endef
+ else
+ define WaitForSmartJavacFinish
+ endef
+ endif
+
+ define StartGlobalTimer
+ $(RM) -r $(BUILDTIMESDIR) 2> /dev/null && \
+ $(MKDIR) -p $(BUILDTIMESDIR) && \
+ $(call RecordStartTime,TOTAL)
+ endef
+
+ define StopGlobalTimer
+ $(call RecordEndTime,TOTAL)
+ endef
+
+ # Find all build_time_* files and print their contents in a list sorted
+ # on the name of the sub repository.
+ define ReportBuildTimes
+ $(PRINTF) $(LOG_INFO) -- \
+ "----- Build times -------\nStart %s\nEnd %s\n%s\n%s\n-------------------------\n" \
+ "`$(CAT) $(BUILDTIMESDIR)/build_time_start_TOTAL_human_readable`" \
+ "`$(CAT) $(BUILDTIMESDIR)/build_time_end_TOTAL_human_readable`" \
+ "`$(LS) $(BUILDTIMESDIR)/build_time_diff_* | $(GREP) -v _TOTAL | \
+ $(XARGS) $(CAT) | $(SORT) -k 2`" \
+ "`$(CAT) $(BUILDTIMESDIR)/build_time_diff_TOTAL`" \
+ $(BUILD_LOG_PIPE)
+ endef
+
+endif # HAS_SPEC
+
+endif # _INITSUPPORT_GMK
diff --git a/make/Install.gmk b/make/Install.gmk
new file mode 100644
index 0000000..bfe989f
--- /dev/null
+++ b/make/Install.gmk
@@ -0,0 +1,43 @@
+#
+# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: install
+
+include $(SPEC)
+
+BINARIES := $(notdir $(wildcard $(JDK_IMAGE_DIR)/bin/*))
+INSTALLDIR := openjdk-$(VERSION_SHORT)
+
+# Install the jdk image, in a very crude way. Not taking into
+# account, how to install properly on macosx or windows etc.
+install:
+ echo Installing jdk image into $(INSTALL_PREFIX)/jvm/$(INSTALLDIR)
+ echo and creating $(words $(BINARIES)) links from $(INSTALL_PREFIX)/bin into the jdk.
+ $(MKDIR) -p $(INSTALL_PREFIX)/jvm/$(INSTALLDIR)
+ $(RM) -r $(INSTALL_PREFIX)/jvm/$(INSTALLDIR)/*
+ $(CP) -rp $(JDK_IMAGE_DIR)/* $(INSTALL_PREFIX)/jvm/$(INSTALLDIR)
+ $(MKDIR) -p $(INSTALL_PREFIX)/bin
+ $(RM) $(addprefix $(INSTALL_PREFIX)/bin/, $(BINARIES))
+ $(foreach b, $(BINARIES), $(LN) -s $(INSTALL_PREFIX)/jvm/$(INSTALLDIR)/bin/$b $(INSTALL_PREFIX)/bin/$b &&) true
diff --git a/make/InterimImage.gmk b/make/InterimImage.gmk
new file mode 100644
index 0000000..486b24d
--- /dev/null
+++ b/make/InterimImage.gmk
@@ -0,0 +1,60 @@
+#
+# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include Modules.gmk
+
+################################################################################
+
+# Use this file inside the image as target for make rule
+JIMAGE_TARGET_FILE := bin/java$(EXE_SUFFIX)
+
+INTERIM_MODULES_LIST := $(call CommaList, $(INTERIM_IMAGE_MODULES))
+
+JMODS := $(patsubst %, $(INTERIM_JMODS_DIR)/%.jmod, $(INTERIM_IMAGE_MODULES))
+
+JLINK_TOOL := $(JLINK) -J-Djlink.debug=true \
+ --module-path $(INTERIM_JMODS_DIR) \
+ --endian $(OPENJDK_BUILD_CPU_ENDIAN)
+
+$(INTERIM_IMAGE_DIR)/$(JIMAGE_TARGET_FILE): $(JMODS) \
+ $(call DependOnVariable, INTERIM_MODULES_LIST)
+ $(call LogWarn, Creating interim jimage)
+ $(RM) -r $(INTERIM_IMAGE_DIR)
+ $(JLINK_TOOL) \
+ --output $(INTERIM_IMAGE_DIR) \
+ --add-modules $(INTERIM_MODULES_LIST)
+ $(TOUCH) $@
+
+TARGETS += $(INTERIM_IMAGE_DIR)/$(JIMAGE_TARGET_FILE)
+
+################################################################################
+
+all: $(TARGETS)
+
+.PHONY: all
diff --git a/make/Jprt.gmk b/make/Jprt.gmk
new file mode 100644
index 0000000..3a337af
--- /dev/null
+++ b/make/Jprt.gmk
@@ -0,0 +1,107 @@
+#
+# Copyright (c) 2012, 2016, 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 targets and utilities needed by JPRT.
+
+# Cygpath is only defined when running on Cygwin
+ifneq ($(CYGPATH), )
+ # If we get JPRT_ARCHIVE_*BUNDLE externally, make sure they have /cygdrive
+ # style paths
+ ifdef JPRT_ARCHIVE_BUNDLE
+ override JPRT_ARCHIVE_BUNDLE := $(shell $(CYGPATH) -u $(JPRT_ARCHIVE_BUNDLE))
+ endif
+ ifdef JPRT_ARCHIVE_TEST_BUNDLE
+ override JPRT_ARCHIVE_TEST_BUNDLE := \
+ $(shell $(CYGPATH) -u $(JPRT_ARCHIVE_TEST_BUNDLE))
+ endif
+ ifdef JPRT_ARCHIVE_SYMBOLS_BUNDLE
+ override JPRT_ARCHIVE_SYMBOLS_BUNDLE := \
+ $(shell $(CYGPATH) -u $(JPRT_ARCHIVE_SYMBOLS_BUNDLE))
+ endif
+endif
+
+# When running in JPRT these will be provided. Need defaults so that this makefile
+# is valid anyway.
+ifndef JPRT_ARCHIVE_BUNDLE
+ JPRT_ARCHIVE_BUNDLE=/tmp/jprt_bundles/jdk-image.zip
+endif
+ifndef JPRT_ARCHIVE_TEST_BUNDLE
+ JPRT_ARCHIVE_TEST_BUNDLE=/tmp/jprt_bundles/test-image.zip
+endif
+ifndef JPRT_ARCHIVE_SYMBOLS_BUNDLE
+ JPRT_ARCHIVE_SYMBOLS_BUNDLE=/tmp/jprt_bundles/symbols-image.zip
+endif
+
+ifeq ($(SKIP_BOOT_CYCLE), false)
+ jprt_bundle: bootcycle-images
+endif
+
+################################################################################
+# JPRT specific bundling targets
+JPRT_TARGET ?= $(DEFAULT_MAKE_TARGET)
+ifeq ($(JPRT_TARGET), $(DEFAULT_MAKE_TARGET))
+ jprt_bundle: $(DEFAULT_MAKE_TARGET) $(JPRT_ARCHIVE_BUNDLE) \
+ $(JPRT_ARCHIVE_TEST_BUNDLE)
+
+ SRC_JDK_IMAGE_DIR := $(JDK_IMAGE_DIR)
+ SRC_TEST_IMAGE_DIR := $(TEST_IMAGE_DIR)
+
+ # This target must be called in the context of a SPEC file
+ $(JPRT_ARCHIVE_BUNDLE): product-images
+ $(call MakeDir, $(@D))
+ $(CD) $(SRC_JDK_IMAGE_DIR) && $(ZIPEXE) -y -q -r $@ .
+
+ $(JPRT_ARCHIVE_TEST_BUNDLE): test-image
+ $(call MakeDir, $(@D))
+ $(CD) $(SRC_TEST_IMAGE_DIR) && $(ZIPEXE) -y -q -r $@ .
+
+ ##############################################################################
+ # Optional symbols bundle
+ ifeq ($(GCOV_ENABLED), true)
+ jprt_bundle: $(JPRT_ARCHIVE_SYMBOLS_BUNDLE)
+
+ $(JPRT_ARCHIVE_SYMBOLS_BUNDLE): product-images
+ $(call MakeDir, $(@D))
+ $(CD) $(SYMBOLS_IMAGE_DIR) && $(ZIPEXE) -y -q -r $@ .
+
+ endif
+
+ ##############################################################################
+
+else
+ # Just fake the main bundle to satisfy JPRT
+ jprt_bundle: $(JPRT_TARGET)
+ @$(call TargetEnter)
+ $(MKDIR) -p $(BUILD_OUTPUT)/bundles
+ $(CD) $(TOPDIR) && $(TAR) cf - README | $(GZIP) > \
+ $(JPRT_ARCHIVE_BUNDLE)
+ @$(call TargetExit)
+endif
+
+ALL_TARGETS += jprt_bundle
+
+################################################################################
+
+$(eval $(call IncludeCustomExtension, , Jprt.gmk))
diff --git a/make/JrtfsJar.gmk b/make/JrtfsJar.gmk
new file mode 100644
index 0000000..a950490
--- /dev/null
+++ b/make/JrtfsJar.gmk
@@ -0,0 +1,72 @@
+#
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include JarArchive.gmk
+include SetupJavaCompilers.gmk
+include TextFileProcessing.gmk
+
+# This rule will be depended on due to the MANIFEST line
+$(eval $(call SetupTextFileProcessing, BUILD_JAVA_MANIFEST, \
+ SOURCE_FILES := $(JDK_TOPDIR)/make/data/mainmanifest/manifest.mf, \
+ OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/java-main-manifest.mf, \
+ REPLACEMENTS := \
+ @@VERSION_SPECIFICATION@@ => $(VERSION_SPECIFICATION) ; \
+ @@VERSION_SHORT@@ => $(VERSION_SHORT) ; \
+ @@COMPANY_NAME@@ => $(COMPANY_NAME) , \
+))
+
+JIMAGE_PKGS := \
+ jdk/internal/jimage \
+ jdk/internal/jrtfs \
+ #
+
+$(eval $(call SetupJavaCompilation, BUILD_JRTFS, \
+ SETUP := GENERATE_OLDBYTECODE, \
+ SRC := $(JDK_TOPDIR)/src/java.base/share/classes, \
+ EXCLUDE_FILES := module-info.java, \
+ INCLUDES := $(JIMAGE_PKGS), \
+ BIN := $(SUPPORT_OUTPUTDIR)/jrtfs_classes))
+
+# Because of the explicit INCLUDES in the compilation setup above, the service provider
+# file will not be copied unless META-INF/services would also be added to the INCLUDES.
+# Adding META-INF/services would include all files in that directory when only the one
+# is needed, which is why this explicit copy is defined instead.
+$(eval $(call SetupCopyFiles, COPY_JIMAGE_SERVICE_PROVIDER, \
+ SRC := $(JDK_TOPDIR)/src/java.base/share/classes, \
+ DEST := $(SUPPORT_OUTPUTDIR)/jrtfs_classes, \
+ FILES := META-INF/services/java.nio.file.spi.FileSystemProvider))
+
+$(eval $(call SetupJarArchive,BUILD_JRTFS_JAR, \
+ DEPENDENCIES := $(BUILD_JRTFS) $(COPY_JIMAGE_SERVICE_PROVIDER), \
+ SRCS := $(SUPPORT_OUTPUTDIR)/jrtfs_classes, \
+ JAR := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base/jrt-fs.jar, \
+ MANIFEST := $(SUPPORT_OUTPUTDIR)/java-main-manifest.mf, \
+))
+
+all: $(BUILD_JRTFS_JAR)
diff --git a/make/MacBundles.gmk b/make/MacBundles.gmk
new file mode 100644
index 0000000..a4e7db3
--- /dev/null
+++ b/make/MacBundles.gmk
@@ -0,0 +1,120 @@
+#
+# Copyright (c) 2011, 2016, 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 $(SPEC)
+include MakeBase.gmk
+include TextFileProcessing.gmk
+
+default: bundles
+
+# Only macosx has bundles defined.
+ifeq ($(OPENJDK_TARGET_OS), macosx)
+
+ bundles: jre-bundle jdk-bundle
+
+ # JDK_MACOSX_CONTENTS_DIR and JRE_MACOSX_CONTENTS_DIR are defined in SPEC.
+
+ MACOSX_PLIST_SRC := $(JDK_TOPDIR)/make/data/bundle
+
+ BUNDLE_ID := $(MACOSX_BUNDLE_ID_BASE).$(VERSION_SHORT)
+ BUNDLE_NAME := $(MACOSX_BUNDLE_NAME_BASE) $(VERSION_SHORT)
+ BUNDLE_INFO := $(MACOSX_BUNDLE_NAME_BASE) $(VERSION_STRING)
+ BUNDLE_PLATFORM_VERSION := $(VERSION_MAJOR).$(VERSION_MINOR)
+ BUNDLE_VERSION := $(VERSION_NUMBER)
+ ifeq ($(COMPANY_NAME), N/A)
+ BUNDLE_VENDOR := UNDEFINED
+ else
+ BUNDLE_VENDOR := $(COMPANY_NAME)
+ endif
+
+ JDK_FILE_LIST := $(shell $(FIND) $(JDK_IMAGE_DIR))
+ JRE_FILE_LIST := $(shell $(FIND) $(JRE_IMAGE_DIR))
+
+ JDK_TARGET_LIST := $(subst $(JDK_IMAGE_DIR)/,$(JDK_MACOSX_CONTENTS_DIR)/Home/,$(JDK_FILE_LIST))
+ JRE_TARGET_LIST := $(subst $(JRE_IMAGE_DIR)/,$(JRE_MACOSX_CONTENTS_DIR)/Home/,$(JRE_FILE_LIST))
+
+ # Copy empty directories (jre/lib/applet).
+ $(JDK_MACOSX_CONTENTS_DIR)/Home/%: $(JDK_IMAGE_DIR)/%
+ $(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@))
+ $(MKDIR) -p $(@D)
+ if [ -d "$<" ]; then $(MKDIR) -p $@; else $(CP) -f -R -P '$<' '$@'; fi
+
+ $(JRE_MACOSX_CONTENTS_DIR)/Home/%: $(JRE_IMAGE_DIR)/%
+ $(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@))
+ $(MKDIR) -p $(@D)
+ if [ -d "$<" ]; then $(MKDIR) -p $@; else $(CP) -f -R -P '$<' '$@'; fi
+
+ $(JDK_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib:
+ $(call LogInfo, Creating link $(patsubst $(OUTPUT_ROOT)/%,%,$@))
+ $(MKDIR) -p $(@D)
+ $(RM) $@
+ $(LN) -s ../Home/lib/jli/libjli.dylib $@
+
+ $(JRE_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib:
+ $(call LogInfo, Creating link $(patsubst $(OUTPUT_ROOT)/%,%,$@))
+ $(MKDIR) -p $(@D)
+ $(RM) $@
+ $(LN) -s ../Home/lib/jli/libjli.dylib $@
+
+ $(eval $(call SetupTextFileProcessing, BUILD_JDK_PLIST, \
+ SOURCE_FILES := $(MACOSX_PLIST_SRC)/JDK-Info.plist, \
+ OUTPUT_FILE := $(JDK_MACOSX_CONTENTS_DIR)/Info.plist, \
+ REPLACEMENTS := \
+ @@ID@@ => $(BUNDLE_ID).jdk ; \
+ @@NAME@@ => $(BUNDLE_NAME) ; \
+ @@INFO@@ => $(BUNDLE_INFO) ; \
+ @@PLATFORM_VERSION@@ => $(BUNDLE_PLATFORM_VERSION) ; \
+ @@VERSION@@ => $(BUNDLE_VERSION) ; \
+ @@VENDOR@@ => $(BUNDLE_VENDOR) , \
+ ))
+
+ $(eval $(call SetupTextFileProcessing, BUILD_JRE_PLIST, \
+ SOURCE_FILES := $(MACOSX_PLIST_SRC)/JRE-Info.plist, \
+ OUTPUT_FILE := $(JRE_MACOSX_CONTENTS_DIR)/Info.plist, \
+ REPLACEMENTS := \
+ @@ID@@ => $(BUNDLE_ID).jre ; \
+ @@NAME@@ => $(BUNDLE_NAME) ; \
+ @@INFO@@ => $(BUNDLE_INFO) ; \
+ @@PLATFORM_VERSION@@ => $(BUNDLE_PLATFORM_VERSION) ; \
+ @@VERSION@@ => $(BUNDLE_VERSION) ; \
+ @@VENDOR@@ => $(BUNDLE_VENDOR) , \
+ ))
+
+ jdk-bundle: $(JDK_TARGET_LIST) $(JDK_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib \
+ $(BUILD_JDK_PLIST)
+ $(SETFILE) -a B $(dir $(JDK_MACOSX_CONTENTS_DIR))
+
+ jre-bundle: $(JRE_TARGET_LIST) $(JRE_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib \
+ $(BUILD_JRE_PLIST)
+ $(SETFILE) -a B $(dir $(JRE_MACOSX_CONTENTS_DIR))
+
+else # Not macosx
+
+ bundles:
+ $(ECHO) "No bundles defined for $(OPENJDK_TARGET_OS)"
+
+endif # macosx
+
+.PHONY: jdk-bundle jre-bundle bundles
diff --git a/make/Main.gmk b/make/Main.gmk
new file mode 100644
index 0000000..a5e1d86
--- /dev/null
+++ b/make/Main.gmk
@@ -0,0 +1,1117 @@
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+################################################################################
+# This is the main makefile containing most actual top level targets. It needs
+# to be called with a SPEC file defined.
+################################################################################
+
+# Declare default target
+default:
+
+ifeq ($(wildcard $(SPEC)),)
+ $(error Main.gmk needs SPEC set to a proper spec.gmk)
+endif
+
+# Now load the spec
+include $(SPEC)
+
+include $(SRC_ROOT)/make/MainSupport.gmk
+
+# Load the vital tools for all the makefiles.
+include $(SRC_ROOT)/make/common/MakeBase.gmk
+include $(SRC_ROOT)/make/common/Modules.gmk
+include $(SRC_ROOT)/make/common/FindTests.gmk
+
+# Declare ALL_TARGETS as an immediate variable. This variable is a list of all
+# valid top level targets. It's used to declare them all as PHONY and to
+# generate the -only targets.
+ALL_TARGETS :=
+
+# Hook to include the corresponding custom file, if present.
+$(eval $(call IncludeCustomExtension, , Main.gmk))
+
+# All modules for the current target platform.
+ALL_MODULES := $(call FindAllModules)
+
+################################################################################
+################################################################################
+#
+# Recipes for all targets. Only recipes, dependencies are declared later.
+#
+################################################################################
+
+################################################################################
+# Interim/build tools targets, compiling tools used during the build
+
+# When creating a BUILDJDK, the buildtools and interim targets have already
+# been built and should not be built again.
+ifneq ($(CREATING_BUILDJDK), true)
+ buildtools-langtools:
+ +($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Tools.gmk)
+
+ interim-langtools:
+ +($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterim.gmk)
+
+ interim-rmic:
+ +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimRmic.gmk)
+
+ interim-cldrconverter:
+ +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopyInterimCLDRConverter.gmk)
+
+ buildtools-jdk:
+ +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileTools.gmk)
+
+ buildtools-modules:
+ +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileModuleTools.gmk)
+
+ buildtools-hotspot:
+ +($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileTools.gmk)
+endif
+
+ALL_TARGETS += buildtools-langtools interim-langtools \
+ interim-rmic interim-cldrconverter buildtools-jdk buildtools-modules \
+ buildtools-hotspot
+
+################################################################################
+# Special targets for certain modules
+
+unpack-sec:
+ +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f UnpackSecurity.gmk)
+
+generate-exported-symbols:
+ +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f BuildStatic.gmk)
+
+ALL_TARGETS += unpack-sec generate-exported-symbols
+
+################################################################################
+# Gensrc targets, generating source before java compilation can be done
+#
+# When creating a BUILDJDK, the java targets have already been built and copied
+# into the buildjdk so no need to generate sources.
+ifneq ($(CREATING_BUILDJDK), true)
+ $(eval $(call DeclareRecipesForPhase, GENSRC, \
+ TARGET_SUFFIX := gensrc, \
+ FILE_PREFIX := Gensrc, \
+ MAKE_SUBDIR := gensrc, \
+ CHECK_MODULES := $(ALL_MODULES), \
+ MULTIPLE_MAKEFILES := true))
+
+ JDK_GENSRC_TARGETS := $(filter %-gensrc-jdk, $(GENSRC_TARGETS))
+ LANGTOOLS_GENSRC_TARGETS := $(filter %-gensrc-langtools, $(GENSRC_TARGETS))
+ CORBA_GENSRC_TARGETS := $(filter %-gensrc-corba, $(GENSRC_TARGETS))
+ HOTSPOT_GENSRC_TARGETS := $(filter %-gensrc-hotspot, $(GENSRC_TARGETS))
+
+ GENSRC_MODULEINFO_MODULES := $(ALL_MODULES)
+ GENSRC_MODULEINFO_TARGETS := $(addsuffix -gensrc-moduleinfo, \
+ $(GENSRC_MODULEINFO_MODULES))
+
+ GENSRC_MODULES := $(GENSRC_MODULEINFO_MODULES)
+ GENSRC_TARGETS += $(sort $(GENSRC_MODULEINFO_TARGETS) \
+ $(addsuffix -gensrc, $(GENSRC_MODULES)))
+
+ define DeclareModuleInfoRecipe
+ $1-gensrc-moduleinfo:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \
+ -f GensrcModuleInfo.gmk MODULE=$1)
+
+ $1-gensrc: $1-gensrc-moduleinfo
+ endef
+
+ $(foreach m, $(GENSRC_MODULEINFO_MODULES), $(eval $(call DeclareModuleInfoRecipe,$m)))
+endif
+
+ALL_TARGETS += $(GENSRC_TARGETS)
+
+################################################################################
+# Generate data targets
+$(eval $(call DeclareRecipesForPhase, GENDATA, \
+ TARGET_SUFFIX := gendata, \
+ FILE_PREFIX := Gendata, \
+ MAKE_SUBDIR := gendata, \
+ CHECK_MODULES := $(ALL_MODULES), \
+ USE_WRAPPER := true))
+
+ALL_TARGETS += $(GENDATA_TARGETS)
+
+################################################################################
+# Copy files targets
+$(eval $(call DeclareRecipesForPhase, COPY, \
+ TARGET_SUFFIX := copy, \
+ FILE_PREFIX := Copy, \
+ MAKE_SUBDIR := copy, \
+ CHECK_MODULES := $(ALL_MODULES), \
+ USE_WRAPPER := true, \
+ MULTIPLE_MAKEFILES := true))
+
+ALL_COPY_MODULES += $(COPY_MODULES)
+ALL_COPY_TARGETS += $(COPY_TARGETS)
+
+IMPORT_COPY_MODULES := $(call FindImportedModules)
+IMPORT_COPY_TARGETS := $(addsuffix -copy, $(IMPORT_COPY_MODULES))
+ALL_COPY_MODULES += $(IMPORT_COPY_MODULES)
+ALL_COPY_TARGETS += $(IMPORT_COPY_TARGETS)
+
+define DeclareImportCopyRecipe
+ $1-copy:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \
+ -f CopyImportModules.gmk MODULE=$1)
+endef
+
+$(foreach m, $(IMPORT_COPY_MODULES), $(eval $(call DeclareImportCopyRecipe,$m)))
+
+ALL_TARGETS += $(ALL_COPY_TARGETS)
+
+################################################################################
+# Targets for compiling all java modules. Nashorn is treated separately.
+JAVA_MODULES := $(ALL_MODULES)
+JAVA_TARGETS := $(addsuffix -java, $(JAVA_MODULES))
+
+define DeclareCompileJavaRecipe
+ $1-java:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \
+ -f CompileJavaModules.gmk MODULE=$1)
+endef
+
+$(foreach m, $(filter-out jdk.scripting.nashorn, $(JAVA_MODULES)), \
+ $(eval $(call DeclareCompileJavaRecipe,$m)))
+
+# Build nashorn. Needs to be compiled separately from the rest of the modules
+# due to nasgen.
+jdk.scripting.nashorn-java:
+ +($(CD) $(NASHORN_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \
+ -f BuildNashorn.gmk compile)
+
+ALL_TARGETS += $(JAVA_TARGETS)
+
+################################################################################
+# Targets for running rmic.
+$(eval $(call DeclareRecipesForPhase, RMIC, \
+ TARGET_SUFFIX := rmic, \
+ FILE_PREFIX := Rmic, \
+ MAKE_SUBDIR := rmic, \
+ CHECK_MODULES := $(ALL_MODULES)))
+
+ALL_TARGETS += $(RMIC_TARGETS)
+
+################################################################################
+# Targets for compiling native libraries
+$(eval $(call DeclareRecipesForPhase, LIBS, \
+ TARGET_SUFFIX := libs, \
+ FILE_PREFIX := Lib, \
+ MAKE_SUBDIR := lib, \
+ CHECK_MODULES := $(ALL_MODULES), \
+ USE_WRAPPER := true))
+
+ALL_TARGETS += $(LIBS_TARGETS)
+
+################################################################################
+# Targets for compiling native executables
+$(eval $(call DeclareRecipesForPhase, LAUNCHER, \
+ TARGET_SUFFIX := launchers, \
+ FILE_PREFIX := Launcher, \
+ MAKE_SUBDIR := launcher, \
+ CHECK_MODULES := $(ALL_MODULES), \
+ USE_WRAPPER := true))
+
+ALL_TARGETS += $(LAUNCHER_TARGETS)
+
+################################################################################
+# Build hotspot target
+
+HOTSPOT_VARIANT_TARGETS := $(addprefix hotspot-, $(JVM_VARIANTS))
+HOTSPOT_VARIANT_GENSRC_TARGETS := $(addsuffix -gensrc, $(HOTSPOT_VARIANT_TARGETS))
+HOTSPOT_VARIANT_LIBS_TARGETS := $(addsuffix -libs, $(HOTSPOT_VARIANT_TARGETS))
+
+define DeclareHotspotGensrcRecipe
+ hotspot-$1-gensrc:
+ $$(call LogInfo, Building JVM variant '$1' with features '$(JVM_FEATURES_$1)')
+ +($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f gensrc/GenerateSources.gmk \
+ JVM_VARIANT=$1)
+endef
+
+$(foreach v, $(JVM_VARIANTS), $(eval $(call DeclareHotspotGensrcRecipe,$v)))
+
+define DeclareHotspotLibsRecipe
+ hotspot-$1-libs:
+ +($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f lib/CompileLibraries.gmk \
+ JVM_VARIANT=$1)
+endef
+
+$(foreach v, $(JVM_VARIANTS), $(eval $(call DeclareHotspotLibsRecipe,$v)))
+
+hotspot-jsig:
+ +($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f lib/CompileLibjsig.gmk)
+
+hotspot-ide-project:
+ +($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f ide/CreateVSProject.gmk)
+
+ALL_TARGETS += $(HOTSPOT_VARIANT_TARGETS) $(HOTSPOT_VARIANT_GENSRC_TARGETS) \
+ $(HOTSPOT_VARIANT_LIBS_TARGETS) hotspot-jsig hotspot-ide-project
+
+################################################################################
+# Build demos targets
+
+demos-jdk:
+ +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileDemos.gmk)
+
+test-image-demos-jdk:
+ +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileDemos.gmk images)
+
+ALL_TARGETS += demos-jdk test-image-demos-jdk
+
+################################################################################
+# Jigsaw specific data and analysis targets.
+
+generate-summary:
+ +($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f GenerateModuleSummary.gmk)
+
+ALL_TARGETS += generate-summary
+
+################################################################################
+# Jmod targets
+
+JMOD_MODULES := $(ALL_MODULES)
+JMOD_TARGETS := $(addsuffix -jmod, $(JMOD_MODULES))
+
+define DeclareJmodRecipe
+ $1-jmod:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateJmods.gmk \
+ MODULE=$1)
+endef
+
+$(foreach m, $(JMOD_MODULES), $(eval $(call DeclareJmodRecipe,$m)))
+
+ALL_TARGETS += $(JMOD_TARGETS)
+
+################################################################################
+# Images targets
+
+store-source-revision:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f SourceRevision.gmk store-source-revision)
+
+create-source-revision-tracker:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f SourceRevision.gmk create-source-revision-tracker)
+
+BOOTCYCLE_TARGET := product-images
+bootcycle-images:
+ ifneq ($(COMPILE_TYPE), cross)
+ $(call LogWarn, Boot cycle build step 2: Building a new JDK image using previously built image)
+ +$(MAKE) $(MAKE_ARGS) -f $(SRC_ROOT)/make/Init.gmk PARALLEL_TARGETS=$(BOOTCYCLE_TARGET) \
+ JOBS= SPEC=$(dir $(SPEC))bootcycle-spec.gmk main
+ else
+ $(call LogWarn, Boot cycle build disabled when cross compiling)
+ endif
+
+zip-security:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ZipSecurity.gmk)
+
+zip-source:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ZipSource.gmk)
+
+jrtfs-jar:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f JrtfsJar.gmk)
+
+jdk-image:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk jdk)
+
+jre-image:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk jre)
+
+symbols-image:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk symbols)
+
+profiles-image:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk profiles)
+
+mac-bundles-jdk:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk)
+
+release-file:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ReleaseFile.gmk)
+
+exploded-image-optimize:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ExplodedImageOptimize.gmk)
+
+ALL_TARGETS += store-source-revision create-source-revision-tracker bootcycle-images zip-security \
+ zip-source jrtfs-jar jdk-image jre-image \
+ symbols-image profiles-image mac-bundles-jdk \
+ release-file exploded-image-optimize
+
+################################################################################
+# Docs targets
+
+# If building full docs, to complete docs-*-api we need both the javadoc and
+# modulegraph targets.
+docs-jdk-api-javadoc:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-api-javadoc)
+
+docs-jdk-api-modulegraph:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-api-modulegraph)
+
+docs-javase-api-javadoc:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-javase-api-javadoc)
+
+docs-javase-api-modulegraph:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-javase-api-modulegraph)
+
+docs-jdk-specs:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-specs)
+
+docs-jdk-index:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-index)
+
+docs-zip:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-zip)
+
+update-build-docs:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f UpdateBuildDocs.gmk)
+
+ALL_TARGETS += docs-jdk-api-javadoc docs-jdk-api-modulegraph \
+ docs-javase-api-javadoc docs-javase-api-modulegraph docs-jdk-specs \
+ docs-jdk-index docs-zip update-build-docs
+
+################################################################################
+# Cross compilation support
+
+ifeq ($(CREATING_BUILDJDK), true)
+ # This target is only called by the recursive call below.
+ create-buildjdk-interim-image-helper: interim-image jdk.jlink-launchers \
+ java.base-copy jdk.jdeps-launchers
+endif
+
+create-buildjdk-copy:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateBuildJdkCopy.gmk)
+
+create-buildjdk-interim-image:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Main.gmk \
+ $@-helper \
+ SPEC=$(dir $(SPEC))buildjdk-spec.gmk \
+ HOTSPOT_SPEC=$(dir $(SPEC))buildjdk-spec.gmk \
+ CREATING_BUILDJDK=true)
+
+ALL_TARGETS += create-buildjdk-copy create-buildjdk-interim-image
+
+################################################################################
+# The interim-image is a small jlinked image that is used to generate artifacts
+# at build time for use when linking the real images.
+
+INTERIM_JMOD_TARGETS := $(addsuffix -interim-jmod, $(INTERIM_IMAGE_MODULES))
+
+define DeclareInterimJmodRecipe
+ $1-interim-jmod:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateJmods.gmk \
+ MODULE=$1 \
+ JMODS_DIR=$(INTERIM_JMODS_DIR) \
+ JMODS_TEMPDIR=$(INTERIM_JMODS_DIR)/temp \
+ INTERIM_JMOD=true \
+ )
+endef
+
+$(foreach m, $(INTERIM_IMAGE_MODULES), $(eval $(call DeclareInterimJmodRecipe,$m)))
+
+interim-image:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f InterimImage.gmk)
+
+ifeq ($(ENABLE_GENERATE_CLASSLIST), true)
+ generate-link-opt-data:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f GenerateLinkOptData.gmk)
+endif
+
+ALL_TARGETS += $(INTERIM_JMOD_TARGETS) interim-image generate-link-opt-data
+
+################################################################################
+# Generate test names for all JTReg test groups
+#
+
+define DeclareRunTestRecipe
+ run-test-$1:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test TEST="$1")
+
+endef
+
+# ALL_NAMED_TESTS is defined in FindTests.gmk
+$(foreach t, $(ALL_NAMED_TESTS), $(eval $(call DeclareRunTestRecipe,$t)))
+ALL_TEST_TARGETS := $(addprefix run-test-, $(ALL_NAMED_TESTS))
+
+ALL_TARGETS += $(ALL_TEST_TARGETS)
+
+################################################################################
+# Build tests
+#
+
+prepare-test-image:
+ $(MKDIR) -p $(TEST_IMAGE_DIR)
+ $(ECHO) > $(TEST_IMAGE_DIR)/Readme.txt 'JDK test image'
+
+build-test-hotspot-jtreg-native:
+ +($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
+ build-test-hotspot-jtreg-native)
+
+test-image-hotspot-jtreg-native:
+ +($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
+ test-image-hotspot-jtreg-native)
+
+build-test-jdk-jtreg-native:
+ +($(CD) $(JDK_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
+ build-test-jdk-jtreg-native)
+
+test-image-jdk-jtreg-native:
+ +($(CD) $(JDK_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
+ test-image-jdk-jtreg-native)
+
+run-test:
+ +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test TEST="$(TEST)")
+
+ifeq ($(BUILD_GTEST), true)
+ test-image-hotspot-gtest:
+ +($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f GtestImage.gmk)
+endif
+
+build-test-lib:
+ +($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f BuildTestLib.gmk)
+
+ifeq ($(BUILD_FAILURE_HANDLER), true)
+ # Builds the failure handler jtreg extension
+ build-test-failure-handler:
+ +($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) \
+ -f BuildFailureHandler.gmk build)
+
+ # Runs the tests for the failure handler jtreg extension
+ test-failure-handler:
+ +($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) \
+ -f BuildFailureHandler.gmk test)
+
+ # Copies the failure handler jtreg extension into the test image
+ test-image-failure-handler:
+ +($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) \
+ -f BuildFailureHandler.gmk images)
+endif
+
+ALL_TARGETS += prepare-test-image build-test-hotspot-jtreg-native \
+ test-image-hotspot-jtreg-native build-test-jdk-jtreg-native \
+ test-image-jdk-jtreg-native build-test-lib build-test-failure-handler \
+ test-failure-handler test-image-failure-handler test-image-hotspot-gtest \
+ run-test
+
+################################################################################
+# Run tests
+
+# Run tests specified by $(TEST), or the default test set.
+test:
+ $(call RunTests, $(TEST), $(JDK_IMAGE_DIR))
+
+test-hotspot-jtreg:
+ $(call RunTests, "hotspot_all", $(JDK_IMAGE_DIR))
+
+test-hotspot-jtreg-native:
+ $(call RunTests, "hotspot_native_sanity", $(JDK_IMAGE_DIR))
+
+test-hotspot-internal:
+ $(call RunTests, "hotspot_internal", $(JDK_OUTPUTDIR))
+
+test-hotspot-gtest:
+ $(call RunTests, "hotspot_gtest", $(JDK_OUTPUTDIR))
+
+test-jdk-jtreg-native:
+ $(call RunTests, "jdk_native_sanity", $(JDK_IMAGE_DIR))
+
+test-make:
+ ($(CD) $(SRC_ROOT)/test/make && $(MAKE) $(MAKE_ARGS) -f TestMake.gmk $(TEST_TARGET))
+
+ALL_TARGETS += test test-hotspot-jtreg test-hotspot-jtreg-native \
+ test-hotspot-internal test-hotspot-gtest test-jdk-jtreg-native test-make
+
+################################################################################
+# Bundles
+
+product-bundles:
+ +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk product-bundles)
+
+profiles-bundles:
+ +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk profiles-bundles)
+
+test-bundles:
+ +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk test-bundles)
+
+docs-bundles:
+ +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk docs-bundles)
+
+ALL_TARGETS += product-bundles profiles-bundles test-bundles docs-bundles
+
+################################################################################
+# Install targets
+
+install:
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Install.gmk)
+
+ALL_TARGETS += install
+
+################################################################################
+#
+# Dependency declarations between targets.
+#
+# These are declared in two groups. First all dependencies between targets that
+# have recipes above as these dependencies may be disabled. Then the aggregator
+# targets that do not have recipes of their own, which will never have their
+# dependencies disabled.
+#
+################################################################################
+# Targets with recipes above
+
+# If running an *-only target, parallel execution and dependencies between
+# recipe targets are disabled. This makes it possible to run a select set of
+# recipe targets in order. It's the responsibility of the user to make sure
+# all prerequisites are fulfilled.
+ifneq ($(findstring -only, $(MAKECMDGOALS)), )
+ .NOTPARALLEL:
+else
+ $(LANGTOOLS_GENSRC_TARGETS): buildtools-langtools
+
+ interim-langtools: $(LANGTOOLS_GENSRC_TARGETS)
+
+ buildtools-jdk: interim-langtools interim-cldrconverter
+
+ buildtools-hotspot: interim-langtools
+
+ buildtools-modules: exploded-image-base
+
+ $(CORBA_GENSRC_TARGETS): interim-langtools
+
+ $(HOTSPOT_GENSRC_TARGETS): interim-langtools buildtools-hotspot
+
+ $(JDK_GENSRC_TARGETS): interim-langtools buildtools-jdk
+
+ $(GENSRC_MODULEINFO_TARGETS): buildtools-jdk
+
+ $(GENDATA_TARGETS): interim-langtools buildtools-jdk
+
+ interim-rmic: interim-langtools
+
+ $(RMIC_TARGETS): interim-langtools interim-rmic
+
+ $(JAVA_TARGETS): interim-langtools
+
+ # Declare dependencies between hotspot-<variant>* targets
+ $(foreach v, $(JVM_VARIANTS), \
+ $(eval hotspot-$v: hotspot-$v-gensrc hotspot-$v-libs) \
+ $(eval hotspot-$v-libs: hotspot-$v-gensrc) \
+ )
+
+ hotspot-ide-project: hotspot exploded-image
+
+ generate-exported-symbols: java.base-libs jdk.jdwp.agent-libs
+
+ # Building one JVM variant is enough to start building the other libs
+ $(LIBS_TARGETS): hotspot-$(JVM_VARIANT_MAIN)-libs
+
+ $(LAUNCHER_TARGETS): java.base-libs
+
+ ifeq ($(STATIC_BUILD), true)
+ $(LAUNCHER_TARGETS): generate-exported-symbols
+ endif
+
+ # The demos are currently linking to libjvm and libjava, just like all other
+ # jdk libs, even though they don't need to. To avoid warnings, make sure they
+ # aren't built until after libjava and libjvm are available to link to.
+ demos-jdk: java.base-libs exploded-image-optimize
+ test-image-demos-jdk: demos-jdk
+
+ # Declare dependency from <module>-java to <module>-gensrc
+ $(foreach m, $(GENSRC_MODULES), $(eval $m-java: $m-gensrc))
+
+ # Declare dependencies between java modules
+ $(foreach m, $(JAVA_MODULES), \
+ $(eval $m-java: $(addsuffix -java, $(filter $(JAVA_MODULES), \
+ $(call FindDepsForModule,$m)))))
+
+ # Declare dependencies between <module>-rmic to <module>-java
+ $(foreach m, $(RMIC_MODULES), $(eval $m-rmic: $m-java))
+
+ # Declare dependencies from <module>-lib to <module>-java
+ # Skip modules that do not have java source.
+ # When creating a BUILDJDK, the java compilation has already been done by the
+ # normal build and copied in.
+ ifneq ($(CREATING_BUILDJDK), true)
+ $(foreach m, $(filter $(JAVA_MODULES), $(LIBS_MODULES)), $(eval $m-libs: $m-java))
+ endif
+
+ # Declare dependencies from all other <module>-lib to java.base-lib
+ $(foreach t, $(filter-out java.base-libs, $(LIBS_TARGETS)), \
+ $(eval $t: java.base-libs))
+
+ # jdk.accessibility depends on java.desktop
+ jdk.accessibility-libs: java.desktop-libs
+
+ # This dependency needs to be explicitly declared. jdk.jdi-gensrc generates a
+ # header file used by jdk.jdwp.agent-libs. The jdk.jdwp.agent-gensrc is a
+ # virtual target.
+ jdk.jdwp.agent-libs: jdk.jdwp.agent-gensrc
+
+ # The swing beans need to have java base properly generated to avoid errors
+ # in javadoc.
+ java.desktop-gensrc-jdk: java.base-gensrc
+
+ # The annotation processing for jdk.internal.vm.ci and jdk.internal.vm.compiler
+ # needs classes from the current JDK.
+ jdk.internal.vm.ci-gensrc-hotspot: $(addsuffix -java, \
+ $(call FindTransitiveDepsForModule, jdk.internal.vm.ci))
+ jdk.internal.vm.compiler-gensrc-hotspot: $(addsuffix -java, \
+ $(call FindTransitiveDepsForModule, jdk.internal.vm.compiler))
+
+ # For jdk.internal.vm.compiler, the gensrc step is generating a module-info.java.extra
+ # file to be processed by the gensrc-moduleinfo target.
+ jdk.internal.vm.compiler-gensrc-moduleinfo: jdk.internal.vm.compiler-gensrc-hotspot
+
+ # Explicitly add dependencies for special targets
+ java.base-java: unpack-sec
+
+ jdk.jdeps-gendata: java rmic
+
+ # Declare dependencies between jmod targets.
+ # java.base jmod needs jrt-fs.jar and access to the other jmods to be built.
+ # When creating a BUILDJDK, we don't need to add hashes to java.base, thus
+ # we don't need to depend on all other jmods
+ ifneq ($(CREATING_BUILDJDK), true)
+ java.base-jmod: jrtfs-jar $(filter-out java.base-jmod, $(JMOD_TARGETS))
+ endif
+
+ # Building java.base-jmod requires all of hotspot to be built.
+ java.base-jmod: hotspot
+
+ # Declare dependencies from <module>-jmod to all other module targets
+ # When creating a BUILDJDK, the java compilation has already been done by the
+ # normal build and copied in.
+ ifneq ($(CREATING_BUILDJDK), true)
+ $(foreach m, $(JAVA_MODULES), $(eval $m_JMOD_DEPS += $m-java))
+ endif
+ $(foreach m, $(GENDATA_MODULES), $(eval $m_JMOD_DEPS += $m-gendata))
+ $(foreach m, $(RMIC_MODULES), $(eval $m_JMOD_DEPS += $m-rmic))
+ $(foreach m, $(LIBS_MODULES), $(eval $m_JMOD_DEPS += $m-libs))
+ $(foreach m, $(LAUNCHER_MODULES), $(eval $m_JMOD_DEPS += $m-launchers))
+ $(foreach m, $(COPY_MODULES), $(eval $m_JMOD_DEPS += $m-copy))
+ $(foreach m, $(ALL_MODULES), $(eval $m-jmod: $($(m)_JMOD_DEPS)))
+ $(foreach m, $(INTERIM_IMAGE_MODULES), $(eval $m-interim-jmod: $($(m)_JMOD_DEPS)))
+
+ # Jmods cannot be created until we have the jmod tool ready to run. During
+ # a normal build we run it from the exploded image, but when cross compiling
+ # it's run from the buildjdk, which is either created at build time or user
+ # supplied.
+ #
+ # For the exploded image to be runnable, all java modules and
+ # jdk.jlink-launchers need to be built. We also need to copy jvm.cfg (done
+ # in java.base-copy) and tzdb.dat (done in java.base-gendata) to the
+ # appropriate location otherwise jimage, jlink and jmod won't start. This
+ # also applies when creating the buildjdk.
+ DEFAULT_JMOD_DEPS := java.base-libs java.base-copy java.base-gendata \
+ jdk.jlink-launchers
+ # When cross compiling and buildjdk is to be created, depend on creating the
+ # buildjdk instead of the default dependencies.
+ ifeq ($(CREATE_BUILDJDK), true)
+ # Avoid calling create-buildjdk from within a create-buildjdk call.
+ ifneq ($(CREATING_BUILDJDK), true)
+ $(JMOD_TARGETS): create-buildjdk
+ buildtools-modules: create-buildjdk
+ else
+ # While actually creating the buildjdk, the default deps applies.
+ $(JMOD_TARGETS) $(INTERIM_JMOD_TARGETS): $(DEFAULT_JMOD_DEPS)
+ endif
+ else
+ # The normal non cross compilation case uses the default deps.
+ # To avoid races with the optimize target, that also needs to happen first.
+ $(JMOD_TARGETS) $(INTERIM_JMOD_TARGETS): $(DEFAULT_JMOD_DEPS) \
+ exploded-image-optimize
+ endif
+
+ # All modules include the main license files from java.base.
+ $(JMOD_TARGETS): java.base-copy
+
+ zip-security: java.base-java java.security.jgss-java java.security.jgss-libs \
+ $(filter jdk.crypto%, $(JAVA_TARGETS))
+
+ zip-source: gensrc rmic
+
+ jrtfs-jar: interim-langtools
+
+ ifeq ($(ENABLE_GENERATE_CLASSLIST), true)
+ ifeq ($(CREATE_BUILDJDK), true)
+ # If creating a buildjdk, the interim image needs to be based on that.
+ generate-link-opt-data: create-buildjdk
+ else ifeq ($(EXTERNAL_BUILDJDK), false)
+ # If an external buildjdk has been provided, we skip generating an
+ # interim-image and just use the external buildjdk for generating
+ # classlist.
+ generate-link-opt-data: interim-image
+ endif
+ generate-link-opt-data: buildtools-jdk
+
+ # The generated classlist needs to go into java.base-jmod.
+ java.base-jmod jdk.jlink-jmod jdk-image jre-image: generate-link-opt-data
+ endif
+
+ release-file: create-source-revision-tracker
+
+ jdk-image: jmods zip-source demos release-file
+ jre-image: jmods release-file
+ symbols-image: $(LIBS_TARGETS) $(LAUNCHER_TARGETS)
+
+ profiles-image: jmods release-file
+
+ mac-bundles-jdk: jdk-image jre-image
+
+ # The optimize target can run as soon as the modules dir has been completely
+ # populated (java, copy and gendata targets) and the basic libs and launchers
+ # have been built.
+ exploded-image-optimize: java copy gendata java.base-libs java.base-launchers \
+ buildtools-modules
+
+ bootcycle-images: jdk-image
+
+ docs-jdk-api-javadoc: $(GENSRC_TARGETS) rmic
+
+ docs-javase-api-javadoc: $(GENSRC_TARGETS) rmic
+
+ docs-jdk-api-modulegraph: exploded-image buildtools-modules
+
+ docs-javase-api-modulegraph: exploded-image buildtools-modules
+
+ # The gensrc steps for hotspot and jdk.jdi create html spec files.
+ docs-jdk-specs: hotspot-$(JVM_VARIANT_MAIN)-gensrc jdk.jdi-gensrc \
+ docs-jdk-index
+
+ docs-jdk-index: exploded-image buildtools-modules
+
+ docs-zip: docs-jdk
+
+ test: jdk-image test-image
+
+ run-test: jdk-image test-image
+
+ # Declare dependency for all generated test targets
+ $(foreach t, $(ALL_TEST_TARGETS), $(eval $t: jdk-image test-image))
+
+ create-buildjdk-copy: jdk.jlink-java java.base-gendata \
+ $(addsuffix -java, $(INTERIM_IMAGE_MODULES))
+
+ create-buildjdk-interim-image: create-buildjdk-copy
+
+ interim-image: $(INTERIM_JMOD_TARGETS)
+
+ test-make: clean-test-make
+
+ build-test-lib: exploded-image-optimize
+
+ build-test-failure-handler: interim-langtools
+
+ test-failure-handler: build-test-failure-handler
+
+ test-image-failure-handler: build-test-failure-handler
+
+ build-test-hotspot-jtreg-native: buildtools-jdk \
+ hotspot-$(JVM_VARIANT_MAIN)-libs
+
+ build-test-jdk-jtreg-native: buildtools-jdk
+
+ test-image-hotspot-jtreg-native: build-test-hotspot-jtreg-native
+
+ test-image-jdk-jtreg-native: build-test-jdk-jtreg-native
+
+ test-image-hotspot-gtest: hotspot
+
+ test-hotspot-internal: exploded-image
+
+ test-hotspot-jtreg: jdk-image test-image
+
+ test-hotspot-gtest: exploded-image test-image-hotspot-gtest
+
+ install: product-images
+
+ product-bundles: product-images
+
+ profiles-bundles: profiles-images
+
+ test-bundles: test-image
+
+ docs-bundles: docs-image
+
+ generate-summary: jmods buildtools-modules
+
+endif
+
+################################################################################
+# Virtual targets without recipes
+
+buildtools: buildtools-langtools interim-langtools interim-rmic \
+ buildtools-jdk buildtools-hotspot
+
+hotspot: $(HOTSPOT_VARIANT_TARGETS) hotspot-jsig
+
+hotspot-libs: hotspot-jsig
+
+# Create targets hotspot-libs and hotspot-gensrc.
+$(foreach v, $(JVM_VARIANTS), \
+ $(eval hotspot-libs: hotspot-$v-libs) \
+ $(eval hotspot-gensrc: hotspot-$v-gensrc) \
+)
+
+gensrc: $(GENSRC_TARGETS)
+
+gendata: $(GENDATA_TARGETS)
+
+copy: $(ALL_COPY_TARGETS)
+
+java: $(JAVA_TARGETS)
+
+rmic: $(RMIC_TARGETS)
+
+libs: $(LIBS_TARGETS)
+
+launchers: $(LAUNCHER_TARGETS)
+
+jmods: $(JMOD_TARGETS)
+
+# Explicitly declare dependency for virtual target jdk.jdwp.agent-gensrc which
+# is actually handled by jdk.jdi-gensrc
+jdk.jdwp.agent-gensrc: jdk.jdi-gensrc
+
+# Declare dependencies from <module> to all the individual targets specific
+# to that module <module>-*, that are needed for the exploded image.
+$(foreach m, $(GENSRC_MODULES), $(eval $m: $m-gensrc))
+$(foreach m, $(JAVA_MODULES), $(eval $m: $m-java))
+$(foreach m, $(GENDATA_MODULES), $(eval $m: $m-gendata))
+$(foreach m, $(RMIC_MODULES), $(eval $m: $m-rmic))
+$(foreach m, $(LIBS_MODULES), $(eval $m: $m-libs))
+$(foreach m, $(LAUNCHER_MODULES), $(eval $m: $m-launchers))
+$(foreach m, $(ALL_COPY_MODULES), $(eval $m: $m-copy))
+
+# Building java.base includes building all of hotspot.
+java.base: hotspot
+
+demos: demos-jdk
+
+# The "exploded image" is a locally runnable JDK in $(BUILD_OUTPUT)/jdk.
+exploded-image-base: $(ALL_MODULES)
+exploded-image: exploded-image-base release-file
+# When cross compiling, no need to optimize the exploded image since it won't
+# be runnable on the host platform anyway.
+ifneq ($(COMPILE_TYPE), cross)
+ exploded-image: exploded-image-optimize
+endif
+
+create-buildjdk: create-buildjdk-copy create-buildjdk-interim-image
+
+docs-jdk-api: docs-jdk-api-javadoc
+docs-javase-api: docs-javase-api-javadoc
+
+# If we're building full docs, we must also generate the module graphs to
+# get non-broken api documentation.
+ifeq ($(ENABLE_FULL_DOCS), true)
+ docs-jdk-api: docs-jdk-api-modulegraph
+ docs-javase-api: docs-javase-api-modulegraph
+endif
+
+docs-jdk: docs-jdk-api docs-jdk-specs docs-jdk-index
+docs-javase: docs-javase-api
+
+# alias for backwards compatibility
+docs-javadoc: docs-jdk-api
+
+mac-bundles: mac-bundles-jdk
+
+# The $(BUILD_OUTPUT)/images directory contain the resulting deliverables,
+# and in line with this, our targets for creating these are named *-image[s].
+
+# This target builds the product images, e.g. the JRE and JDK image
+# (and possibly other, more specific versions)
+product-images: jdk-image jre-image symbols-image exploded-image
+
+# zip-security is actually a bundle, but for now it needs to be considered
+# an image until this can be cleaned up properly.
+product-images: zip-security
+
+# Declare these for backwards compatiblity and convenience.
+profiles profiles-images: profiles-image
+
+# The module summary cannot be run when:
+# * Cross compiling and building a partial BUILDJDK for the build host
+# * An external buildjdk has been supplied since it may not match the
+# module selection of the target jdk
+ifneq ($(CREATE_BUILDJDK), true)
+ ifeq ($(EXTERNAL_BUILDJDK), false)
+ product-images: generate-summary
+ endif
+endif
+
+ifeq ($(OPENJDK_TARGET_OS), macosx)
+ product-images: mac-bundles
+endif
+
+# This target builds the documentation image
+docs-image: docs-jdk
+
+# This target builds the test image
+test-image: prepare-test-image test-image-hotspot-jtreg-native \
+ test-image-jdk-jtreg-native test-image-failure-handler test-image-hotspot-gtest \
+ test-image-demos-jdk
+
+# all-images builds all our deliverables as images.
+all-images: product-images test-image docs-image
+
+# all-bundles packages all our deliverables as tar.gz bundles.
+all-bundles: product-bundles test-bundles docs-bundles
+
+ALL_TARGETS += buildtools hotspot hotspot-libs hotspot-gensrc gensrc gendata \
+ copy java rmic libs launchers jmods \
+ jdk.jdwp.agent-gensrc $(ALL_MODULES) demos \
+ exploded-image-base exploded-image \
+ create-buildjdk docs-jdk-api docs-javase-api docs-jdk docs-javase \
+ docs-javadoc mac-bundles product-images \
+ profiles profiles-images \
+ docs-image test-image all-images \
+ all-bundles
+
+################################################################################
+
+# Traditional targets typically run by users.
+# These can be considered aliases for the targets now named by a more
+# "modern" naming scheme.
+default: $(DEFAULT_MAKE_TARGET)
+jdk: exploded-image
+images: product-images
+docs: docs-image
+bundles: all-bundles
+all: all-images
+
+ALL_TARGETS += default jdk images docs bundles all
+
+################################################################################
+################################################################################
+#
+# Clean targets
+#
+################################################################################
+# Clean targets are automatically run serially by the Makefile calling this
+# file.
+
+CLEAN_DIRS += hotspot jdk bootcycle-build test buildtools support \
+ images make-support test-make bundles buildjdk
+CLEAN_DIR_TARGETS := $(addprefix clean-, $(CLEAN_DIRS))
+CLEAN_SUPPORT_DIRS += demos
+CLEAN_SUPPORT_DIR_TARGETS := $(addprefix clean-, $(CLEAN_SUPPORT_DIRS))
+CLEAN_TESTS += hotspot-jtreg-native jdk-jtreg-native lib
+CLEAN_TEST_TARGETS += $(addprefix clean-test-, $(CLEAN_TESTS))
+CLEAN_PHASES := gensrc java native include
+CLEAN_PHASE_TARGETS := $(addprefix clean-, $(CLEAN_PHASES))
+CLEAN_MODULE_TARGETS := $(addprefix clean-, $(ALL_MODULES))
+# Construct targets of the form clean-$module-$phase
+CLEAN_MODULE_PHASE_TARGETS := $(addprefix clean-, $(foreach m, $(ALL_MODULES), \
+ $(addprefix $m-, $(CLEAN_PHASES))))
+
+# Remove everything, except the output from configure.
+clean: $(CLEAN_DIR_TARGETS)
+ ($(CD) $(OUTPUT_ROOT) && $(RM) -r build*.log*)
+ $(ECHO) Cleaned all build artifacts.
+
+clean-docs:
+ $(call CleanDocs)
+
+$(CLEAN_DIR_TARGETS):
+ $(call CleanDir,$(patsubst clean-%, %, $@))
+
+$(CLEAN_SUPPORT_DIR_TARGETS):
+ $(call CleanSupportDir,$(patsubst clean-%, %, $@))
+
+$(CLEAN_TEST_TARGETS):
+ $(call CleanTest,$(patsubst clean-test-%, %, $@))
+
+$(CLEAN_PHASE_TARGETS):
+ $(call Clean-$(patsubst clean-%,%, $@))
+
+$(CLEAN_MODULE_TARGETS):
+ $(call CleanModule,$(patsubst clean-%, %, $@))
+
+$(CLEAN_MODULE_PHASE_TARGETS):
+ $(call Clean-$(word 3, $(subst -,$(SPACE),$@)), \
+ $(word 2, $(subst -,$(SPACE),$@)))
+
+# When removing the support dir, we must also remove jdk. Building classes has
+# the side effect of generating native headers. The headers end up in support
+# while classes and touch files end up in jdk.
+clean-support: clean-jdk
+
+# Remove everything, including configure configuration. If the output
+# directory was created by configure and now becomes empty, remove it as well.
+dist-clean: clean
+ ($(CD) $(OUTPUT_ROOT) && \
+ $(RM) -r *spec.gmk $(CONFIGURESUPPORT_OUTPUTDIR) Makefile compare.sh ide)
+ $(if $(filter $(CONF_NAME),$(notdir $(OUTPUT_ROOT))), \
+ if test "x`$(LS) $(OUTPUT_ROOT)`" != x; then \
+ $(ECHO) "Warning: Not removing non-empty configuration directory for '$(CONF_NAME)'" ; \
+ else \
+ ($(CD) $(SRC_ROOT) && $(ECHO) "Removing configuration directory for '$(CONF_NAME)'" \
+ && $(RM) -r $(OUTPUT_ROOT)) \
+ fi \
+ )
+ $(ECHO) Cleaned everything, you will have to re-run configure.
+
+ALL_TARGETS += clean clean-docs dist-clean $(CLEAN_DIR_TARGETS) $(CLEAN_SUPPORT_DIR_TARGETS) \
+ $(CLEAN_TEST_TARGETS) $(CLEAN_PHASE_TARGETS) $(CLEAN_MODULE_TARGETS) \
+ $(CLEAN_MODULE_PHASE_TARGETS)
+
+################################################################################
+# Declare *-only targets for each normal target
+$(foreach t, $(ALL_TARGETS), $(eval $(t)-only: $(t)))
+
+ALL_TARGETS += $(addsuffix -only, $(filter-out dist-clean clean%, $(ALL_TARGETS)))
+
+################################################################################
+
+# Include JPRT targets
+include $(SRC_ROOT)/make/Jprt.gmk
+
+################################################################################
+
+# The following targets are intentionally not added to ALL_TARGETS since they
+# are internal only, to support Init.gmk.
+
+print-targets:
+ @$(ECHO) $(sort $(ALL_TARGETS))
+
+print-modules:
+ @$(ECHO) $(sort $(ALL_MODULES))
+
+print-tests:
+ @$(ECHO) $(sort $(ALL_NAMED_TESTS))
+
+create-main-targets-include:
+ $(call LogInfo, Generating main target list)
+ @$(ECHO) ALL_MAIN_TARGETS := $(sort $(ALL_TARGETS)) > \
+ $(MAKESUPPORT_OUTPUTDIR)/main-targets.gmk
+
+################################################################################
+
+.PHONY: $(ALL_TARGETS)
+
+FRC: # Force target
diff --git a/make/MainSupport.gmk b/make/MainSupport.gmk
new file mode 100644
index 0000000..efd6b03
--- /dev/null
+++ b/make/MainSupport.gmk
@@ -0,0 +1,215 @@
+#
+# Copyright (c) 2011, 2016, 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 helper functions for Main.gmk.
+################################################################################
+
+ifndef _MAINSUPPORT_GMK
+_MAINSUPPORT_GMK := 1
+
+# Run the tests specified by $1, with PRODUCT_HOME specified by $2
+# JT_JAVA is picked up by the jtreg launcher and used to run Jtreg itself.
+define RunTests
+ ($(CD) $(SRC_ROOT)/test && $(MAKE) $(MAKE_ARGS) -j1 -k MAKEFLAGS= \
+ JT_HOME=$(JT_HOME) PRODUCT_HOME=$(strip $2) \
+ TEST_IMAGE_DIR=$(TEST_IMAGE_DIR) \
+ ALT_OUTPUTDIR=$(OUTPUT_ROOT) TEST_JOBS=$(TEST_JOBS) \
+ JT_JAVA=$(BOOT_JDK) \
+ JOBS=$(JOBS) $1) || true
+endef
+
+define CleanDocs
+ @$(PRINTF) "Cleaning docs ..."
+ @$(PRINTF) "\n" $(LOG_DEBUG)
+ $(RM) -r $(SUPPORT_OUTPUTDIR)/docs
+ $(RM) -r $(SUPPORT_OUTPUTDIR)/javadoc
+ $(RM) -r $(IMAGES_OUTPUTDIR)/docs
+ @$(PRINTF) " done\n"
+endef
+
+# Cleans the dir given as $1
+define CleanDir
+ @$(PRINTF) "Cleaning $(strip $1) build artifacts ..."
+ @$(PRINTF) "\n" $(LOG_DEBUG)
+ ($(CD) $(OUTPUT_ROOT) && $(RM) -r $1)
+ @$(PRINTF) " done\n"
+endef
+
+define CleanSupportDir
+ @$(PRINTF) "Cleaning $(strip $1) build artifacts ..."
+ @$(PRINTF) "\n" $(LOG_DEBUG)
+ $(RM) -r $(SUPPORT_OUTPUTDIR)/$(strip $1)
+ @$(PRINTF) " done\n"
+endef
+
+define CleanTest
+ @$(PRINTF) "Cleaning test $(strip $1) ..."
+ @$(PRINTF) "\n" $(LOG_DEBUG)
+ $(RM) -r $(SUPPORT_OUTPUTDIR)/test/$(strip $(subst -,/,$1))
+ # Remove as much of the test directory structure as is empty
+ $(RMDIR) -p $(dir $(SUPPORT_OUTPUTDIR)/test/$(strip $(subst -,/,$1))) 2> /dev/null || true
+ @$(PRINTF) " done\n"
+endef
+
+define Clean-gensrc
+ @$(PRINTF) "Cleaning gensrc $(if $1,for $(strip $1) )..."
+ @$(PRINTF) "\n" $(LOG_DEBUG)
+ $(RM) -r $(SUPPORT_OUTPUTDIR)/gensrc/$(strip $1)
+ @$(PRINTF) " done\n"
+endef
+
+define Clean-java
+ @$(PRINTF) "Cleaning java $(if $1,for $(strip $1) )..."
+ @$(PRINTF) "\n" $(LOG_DEBUG)
+ $(RM) -r $(JDK_OUTPUTDIR)/modules/$(strip $1)
+ $(RM) -r $(SUPPORT_OUTPUTDIR)/special_classes/$(strip $1)
+ $(PRINTF) " done\n"
+ $(PRINTF) "Cleaning headers $(if $1,for $(strip $1)) ..."
+ $(RM) -r $(SUPPORT_OUTPUTDIR)/headers/$(strip $1)
+ @$(PRINTF) " done\n"
+endef
+
+define Clean-native
+ @$(PRINTF) "Cleaning native $(if $1,for $(strip $1) )..."
+ @$(PRINTF) "\n" $(LOG_DEBUG)
+ $(RM) -r $(SUPPORT_OUTPUTDIR)/native/$(strip $1)
+ $(RM) -r $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)
+ $(RM) -r $(SUPPORT_OUTPUTDIR)/modules_cmds/$(strip $1)
+ @$(PRINTF) " done\n"
+endef
+
+define Clean-include
+ @$(PRINTF) "Cleaning include $(if $1,for $(strip $1) )..."
+ @$(PRINTF) "\n" $(LOG_DEBUG)
+ $(RM) -r $(SUPPORT_OUTPUTDIR)/modules_include/$(strip $1)
+ @$(PRINTF) " done\n"
+endef
+
+define CleanModule
+ $(call Clean-gensrc, $1)
+ $(call Clean-java, $1)
+ $(call Clean-native, $1)
+ $(call Clean-include, $1)
+endef
+
+
+################################################################################
+
+MAKE_TOPDIR_LIST := $(JDK_TOPDIR) $(CORBA_TOPDIR) $(LANGTOOLS_TOPDIR) \
+ $(HOTSPOT_TOPDIR)
+MAKE_MAKEDIR_LIST := make
+
+# Helper macro for DeclareRecipesForPhase
+# Declare a recipe for calling the module and phase specific makefile.
+# If there are multiple makefiles to call, create a rule for each topdir
+# that contains a makefile with the target $module-$suffix-$repodir,
+# (i.e: java.base-gensrc-jdk)
+# Normally there is only one makefile, and the target will just be
+# $module-$suffix
+# Param 1: Name of list to add targets to
+# Param 2: Module name
+# Param 3: Topdir
+define DeclareRecipeForModuleMakefile
+ ifeq ($$($1_MULTIPLE_MAKEFILES), true)
+ $2-$$($1_TARGET_SUFFIX): $2-$$($1_TARGET_SUFFIX)-$$(notdir $3)
+
+ $2-$$($1_TARGET_SUFFIX)-$$(notdir $3):
+ else
+ $2-$$($1_TARGET_SUFFIX):
+ endif
+ ifeq ($$($1_USE_WRAPPER), true)
+ +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \
+ -f ModuleWrapper.gmk \
+ $$(addprefix -I, $$(wildcard $$(addprefix $3/, $(MAKE_MAKEDIR_LIST)) \
+ $$(addsuffix /$$($1_MAKE_SUBDIR), $$(addprefix $3/, $(MAKE_MAKEDIR_LIST))))) \
+ MODULE=$2 MAKEFILE_PREFIX=$$($1_FILE_PREFIX))
+ else
+ +($(CD) $$(dir $$(firstword $$(wildcard $$(patsubst %, \
+ $3/%/$$($1_MAKE_SUBDIR)/$$($1_FILE_PREFIX)-$2.gmk, $(MAKE_MAKEDIR_LIST))))) \
+ && $(MAKE) $(MAKE_ARGS) \
+ -f $$($1_FILE_PREFIX)-$2.gmk \
+ $$(addprefix -I, $$(wildcard $$(addprefix $3/, $(MAKE_MAKEDIR_LIST)) \
+ $$(addsuffix /$$($1_MAKE_SUBDIR), $$(addprefix $3/, $(MAKE_MAKEDIR_LIST))))) \
+ MODULE=$2)
+ endif
+
+endef
+
+# Helper macro for DeclareRecipesForPhase
+# Param 1: Name of list to add targets to
+# Param 2: Module name
+define DeclareRecipesForPhaseAndModule
+ $1_$2_TOPDIRS := $$(strip $$(sort $$(foreach d, $(MAKE_TOPDIR_LIST), \
+ $$(patsubst $$d/%, $$d, $$(filter $$d/%, \
+ $$(wildcard $$(patsubst %, %/$$($1_MAKE_SUBDIR)/$$($1_FILE_PREFIX)-$2.gmk, \
+ $$(foreach s, $(MAKE_MAKEDIR_LIST), \
+ $$(addsuffix /$$s, $(MAKE_TOPDIR_LIST))))))))))
+
+ # Only declare recipes if there are makefiles to call
+ ifneq ($$($1_$2_TOPDIRS), )
+ # Add the top dir specific target to target list regardless of if recipe
+ # generation is disabled.
+ ifeq ($$($1_MULTIPLE_MAKEFILES), true)
+ $$(foreach d, $$($1_$2_TOPDIRS), \
+ $$(eval $1 += $2-$$($1_TARGET_SUFFIX)-$$(notdir $$d)))
+ endif
+ ifeq ($(NO_RECIPES),)
+ $$(foreach d, $$($1_$2_TOPDIRS), \
+ $$(eval $$(call DeclareRecipeForModuleMakefile,$1,$2,$$d)))
+ endif
+ $1 += $2-$$($1_TARGET_SUFFIX)
+ $1_MODULES += $2
+ endif
+endef
+
+# Declare recipes for a specific module and build phase if there are makefiles
+# present for the specific combination.
+# Param 1: Name of list to add targets to
+# Named params:
+# TARGET_SUFFIX : Suffix of target to create for recipe
+# MAKE_SUBDIR : Subdir for this build phase
+# FILE_PREFIX : File prefix for this build phase
+# USE_WRAPPER : Set to true to use ModuleWrapper.gmk
+# CHECK_MODULES : List of modules to try
+# MULTIPLE_MAKEFILES : Set to true to handle makefiles for the same module and
+# phase in multiple repos
+# Exported variables:
+# $1_MODULES : All modules that had rules generated
+# $1_TARGETS : All targets generated
+define DeclareRecipesForPhase
+ $(foreach i,2 3 4 5 6 7, $(if $($i),$(strip $1)_$(strip $($i)))$(NEWLINE))
+ $(if $(8),$(error Internal makefile error: Too many arguments to \
+ DeclareRecipesForPhase, please update MakeHelper.gmk))
+
+ $$(foreach m, $$($(strip $1)_CHECK_MODULES), \
+ $$(eval $$(call DeclareRecipesForPhaseAndModule,$(strip $1),$$m)))
+
+ $(strip $1)_TARGETS := $$($(strip $1))
+endef
+
+################################################################################
+
+endif # _MAINSUPPORT_GMK
diff --git a/make/ModuleWrapper.gmk b/make/ModuleWrapper.gmk
new file mode 100644
index 0000000..dd6a8af
--- /dev/null
+++ b/make/ModuleWrapper.gmk
@@ -0,0 +1,104 @@
+#
+# Copyright (c) 2014, 2016, 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 makefile is called from Main.gmk, through a macro in MakeHelpers.gmk
+# and wraps calls to makefiles for specific modules and build phases. Having
+# this wrapper reduces the need for boilerplate code. It also provides
+# opportunity for automatic copying of files to an interim exploded runnable
+# image.
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+
+# All makefiles should add the targets to be built to this variable.
+TARGETS :=
+
+# Include the file being wrapped.
+include $(MAKEFILE_PREFIX)-$(MODULE).gmk
+
+# Setup copy rules from the modules directories to the jdk image directory.
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ TO_BIN_FILTER := %$(SHARED_LIBRARY_SUFFIX) %.diz %.pdb %.map
+
+ $(eval $(call SetupCopyFiles, COPY_LIBS_TO_BIN, \
+ SRC := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \
+ DEST := $(JDK_OUTPUTDIR)/bin, \
+ FILES := $(filter $(TO_BIN_FILTER), \
+ $(filter $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/%, \
+ $(TARGETS))), \
+ ))
+
+ $(eval $(call SetupCopyFiles, COPY_LIBS_TO_LIB, \
+ SRC := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \
+ DEST := $(JDK_OUTPUTDIR)/lib, \
+ FILES := $(filter-out $(TO_BIN_FILTER), \
+ $(filter $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/%, \
+ $(TARGETS))), \
+ ))
+
+else
+ $(eval $(call SetupCopyFiles, COPY_LIBS_TO_LIB, \
+ SRC := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \
+ DEST := $(JDK_OUTPUTDIR)/lib, \
+ FILES := $(filter %$(SHARED_LIBRARY_SUFFIX), \
+ $(filter $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/%, \
+ $(TARGETS))), \
+ ))
+ $(eval $(call SetupCopyFiles, LINK_LIBS_TO_LIB, \
+ SRC := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \
+ DEST := $(JDK_OUTPUTDIR)/lib, \
+ FILES := $(filter-out %$(SHARED_LIBRARY_SUFFIX), \
+ $(filter $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/%, \
+ $(TARGETS))), \
+ MACRO := link-file-relative, \
+ LOG_ACTION := Creating symlink, \
+ ))
+endif
+
+$(eval $(call SetupCopyFiles, COPY_INCLUDE, \
+ SRC := $(SUPPORT_OUTPUTDIR)/modules_include/$(MODULE), \
+ DEST := $(JDK_OUTPUTDIR)/include, \
+ FILES := $(filter $(SUPPORT_OUTPUTDIR)/modules_include/$(MODULE)/%, \
+ $(TARGETS)), \
+))
+
+$(eval $(call SetupCopyFiles, COPY_CMDS, \
+ SRC := $(SUPPORT_OUTPUTDIR)/modules_cmds/$(MODULE), \
+ DEST := $(JDK_OUTPUTDIR)/bin, \
+ FILES := $(filter $(SUPPORT_OUTPUTDIR)/modules_cmds/$(MODULE)/%, $(TARGETS)), \
+))
+
+$(eval $(call SetupCopyFiles, COPY_CONF, \
+ SRC := $(SUPPORT_OUTPUTDIR)/modules_conf/$(MODULE), \
+ DEST := $(JDK_OUTPUTDIR)/conf, \
+ FILES := $(filter $(SUPPORT_OUTPUTDIR)/modules_conf/$(MODULE)/%, \
+ $(TARGETS)), \
+))
+
+all: $(TARGETS) $(COPY_LIBS_TO_BIN) $(COPY_LIBS_TO_LIB) \
+ $(COPY_INCLUDE) $(COPY_CMDS) $(COPY_CONF) $(LINK_LIBS_TO_LIB)
diff --git a/make/ReleaseFile.gmk b/make/ReleaseFile.gmk
new file mode 100644
index 0000000..0f4d080
--- /dev/null
+++ b/make/ReleaseFile.gmk
@@ -0,0 +1,89 @@
+#
+# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+
+################################################################################
+# This makefile generates the "release" file into the exploded image. Jlink is
+# then responsible for using this as the base for release files in each linked
+# image.
+#
+################################################################################
+
+BASE_RELEASE_FILE := $(JDK_OUTPUTDIR)/release
+
+# Common way to emit a line into the release or info file
+define info-file-item # name value
+ $(PRINTF) '%s="%s"\n' $1 $2 >> $@
+endef
+
+# Param 1 - The file containing the MODULES list
+define create-info-file
+ $(if $(JDK_ARCH_ABI_PROP_NAME), \
+ $(call info-file-item, "SUN_ARCH_ABI", "$(JDK_ARCH_ABI_PROP_NAME)"))
+ $(call info-file-item, "SOURCE", "$(strip $(SOURCE_REVISION))")
+ $(call info-file-item, "IMPLEMENTOR", "$(COMPANY_NAME)")
+ $(call info-file-item, "OS_NAME", "$(RELEASE_FILE_OS_NAME)")
+ $(call info-file-item, "OS_ARCH", "$(RELEASE_FILE_OS_ARCH)")
+endef
+
+# Param 1 - The file containing the MODULES list
+define prepare-info-file
+ $(call LogInfo, Generating $(patsubst $(OUTPUT_ROOT)/%,%,$@))
+ $(call MakeDir, $(@D))
+ $(RM) $@
+endef
+
+define info-file
+ $(call prepare-info-file)
+ $(call create-info-file)
+endef
+
+# Create a variable dependency file common for all release info files.
+INFO_FILE_VARDEPS := $(call DependOnVariable, create-info-file)
+
+SOURCE_REVISION = $(shell \
+ if [ -f $(SOURCE_REVISION_TRACKER) ] ; then \
+ $(CAT) $(SOURCE_REVISION_TRACKER) ; \
+ fi)
+
+# The SOURCE_REVISION_TRACKER file may not exist. Only depend on it if it does.
+$(BASE_RELEASE_FILE): $(INFO_FILE_VARDEPS) $(wildcard $(SOURCE_REVISION_TRACKER))
+ $(info-file)
+
+TARGETS += $(BASE_RELEASE_FILE)
+
+################################################################################
+
+$(eval $(call IncludeCustomExtension, , ReleaseFile.gmk))
+
+################################################################################
+
+all: $(TARGETS)
+
+.PHONY: all default
diff --git a/make/RunTests.gmk b/make/RunTests.gmk
new file mode 100644
index 0000000..fa21f30
--- /dev/null
+++ b/make/RunTests.gmk
@@ -0,0 +1,491 @@
+#
+# Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include FindTests.gmk
+
+# We will always run multiple tests serially
+.NOTPARALLEL:
+
+# Hook to include the corresponding custom file, if present.
+$(eval $(call IncludeCustomExtension, , RunTests.gmk))
+
+TEST_RESULTS_DIR := $(BUILD_OUTPUT)/test-results
+TEST_SUPPORT_DIR := $(BUILD_OUTPUT)/test-support
+
+
+################################################################################
+# Parse control variables
+################################################################################
+
+$(eval $(call ParseKeywordVariable, JTREG, \
+ KEYWORDS := JOBS TIMEOUT TEST_MODE ASSERT VERBOSE RETAIN MAX_MEM, \
+ STRING_KEYWORDS := OPTIONS JAVA_OPTIONS VM_OPTIONS, \
+))
+
+ifneq ($(JTREG), )
+ # Inform the user
+ $(info Running tests using JTREG control variable '$(JTREG)')
+endif
+
+$(eval $(call ParseKeywordVariable, GTEST, \
+ KEYWORDS := REPEAT, \
+ STRING_KEYWORDS := OPTIONS, \
+))
+
+ifneq ($(GTEST), )
+ # Inform the user
+ $(info Running tests using GTEST control variable '$(GTEST)')
+endif
+
+
+################################################################################
+# Component-specific Jtreg settings
+################################################################################
+
+ifeq ($(TEST_JOBS), 0)
+ # If TEST_JOBS is not specified, hotspot fallback default is
+ # min(num_cores / 2, 12).
+ hotspot_JTREG_JOBS := $(shell $(EXPR) $(NUM_CORES) / 2)
+ ifeq ($(hotspot_JTREG_JOBS), 0)
+ hotspot_JTREG_JOBS := 1
+ else ifeq ($(shell $(EXPR) $(hotspot_JTREG_JOBS) \> 12), 1)
+ hotspot_JTREG_JOBS := 12
+ endif
+endif
+
+hotspot_JTREG_MAX_MEM := 0
+hotspot_JTREG_ASSERT := false
+hotspot_JTREG_NATIVEPATH := $(TEST_IMAGE_DIR)/hotspot/jtreg/native
+jdk_JTREG_NATIVEPATH := $(TEST_IMAGE_DIR)/jdk/jtreg/native
+
+
+################################################################################
+# Parse test selection
+#
+# The user has given a test selection in the TEST variable. We must parse it
+# and determine what that means in terms of actual calls to the test framework.
+#
+# The parse functions take as argument a test specification as given by the
+# user, and returns a fully qualified test descriptor if it was a match, or
+# nothing if not. A single test specification can result in multiple test
+# descriptors being returned. A valid test descriptor must always be accepted
+# and returned identically.
+################################################################################
+
+# Helper function to determine if a test specification is a Gtest test
+#
+# It is a Gtest test if it is either "gtest", or "gtest:" followed by an optional
+# test filter string.
+define ParseGtestTestSelection
+ $(if $(filter gtest%, $1), \
+ $(if $(filter gtest, $1), \
+ gtest:all \
+ , \
+ $(if $(filter gtest:, $1), \
+ gtest:all \
+ , \
+ $1 \
+ ) \
+ ) \
+ )
+endef
+
+# Helper function to determine if a test specification is a Jtreg test
+#
+# It is a Jtreg test if it optionally begins with jtreg:, and then is either
+# an unspecified group name (possibly prefixed by :), or a group in a
+# specified <component>/test directory, or a path to a test or test directory,
+# either absolute or relative to TOPDIR.
+define ParseJtregTestSelection
+ $(eval TEST_NAME := $(strip $(patsubst jtreg:%, %, $1))) \
+ $(if $(or $(findstring :, $(TEST_NAME)), $(findstring /, $(TEST_NAME))), , \
+ $(eval TEST_NAME := :$(TEST_NAME)) \
+ ) \
+ $(if $(findstring :, $(TEST_NAME)), \
+ $(if $(filter :%, $(TEST_NAME)), \
+ $(foreach component, $(JTREG_COMPONENTS), \
+ $(if $(filter $(patsubst :%, %, $(TEST_NAME)), \
+ $($(component)_JTREG_TEST_GROUPS)), \
+ jtreg:$(component)/test:$(patsubst :%,%,$(TEST_NAME)) \
+ ) \
+ ) \
+ , \
+ $(eval COMPONENT := $(word 1, $(subst /, $(SPACE), $(TEST_NAME)))) \
+ $(eval GROUP := $(word 2, $(subst :, $(SPACE), $(TEST_NAME)))) \
+ $(if $(filter $(COMPONENT), $(JTREG_COMPONENTS)), \
+ $(if $(filter $(GROUP), $($(COMPONENT)_JTREG_TEST_GROUPS)), \
+ jtreg:$(TEST_NAME) \
+ ) \
+ ) \
+ ) \
+ , \
+ $(if $(filter /%, $(TEST_NAME)), \
+ $(if $(wildcard $(TEST_NAME)), \
+ jtreg:$(TEST_NAME) \
+ ) \
+ , \
+ $(if $(wildcard $(TOPDIR)/$(TEST_NAME)), \
+ jtreg:$(TEST_NAME) \
+ ) \
+ ) \
+ )
+endef
+
+ifeq ($(TEST), )
+ $(info No test selection given in TEST!)
+ $(info Please use e.g. 'run-test TEST=tier1' or 'run-test-tier1')
+ $(info See common/doc/testing.[md|html] for help)
+ $(error Cannot continue)
+endif
+
+# Now intelligently convert the test selection given by the user in TEST
+# into a list of fully qualified test descriptors of the tests to run.
+TESTS_TO_RUN :=
+$(foreach test, $(TEST), \
+ $(eval PARSED_TESTS := $(call ParseCustomTestSelection, $(test))) \
+ $(if $(strip $(PARSED_TESTS)), , \
+ $(eval PARSED_TESTS += $(call ParseGtestTestSelection, $(test))) \
+ ) \
+ $(if $(strip $(PARSED_TESTS)), , \
+ $(eval PARSED_TESTS += $(call ParseJtregTestSelection, $(test))) \
+ ) \
+ $(if $(strip $(PARSED_TESTS)), , \
+ $(eval UNKNOWN_TEST := $(test)) \
+ ) \
+ $(eval TESTS_TO_RUN += $(PARSED_TESTS)) \
+)
+
+ifneq ($(UNKNOWN_TEST), )
+ $(info Unknown test selection: '$(UNKNOWN_TEST)')
+ $(info See common/doc/testing.[md|html] for help)
+ $(error Cannot continue)
+endif
+
+TESTS_TO_RUN := $(strip $(TESTS_TO_RUN))
+
+
+# Present the result of our parsing to the user
+$(info Test selection '$(TEST)', will run:)
+$(foreach test, $(TESTS_TO_RUN), $(info * $(test)))
+
+
+################################################################################
+# Functions for setting up rules for running the selected tests
+#
+# The SetupRun*Test functions all have the same interface:
+#
+# Parameter 1 is the name of the rule. This is the test id, based on the test
+# descriptor, and this is also used as variable prefix, and the targets
+# generated are listed in a variable by that name.
+#
+# Remaining parameters are named arguments. Currently this is only:
+# TEST -- The properly formatted fully qualified test descriptor
+#
+# After the rule named by the test id has been executed, the following
+# variables will be available:
+# testid_TOTAL - the total number of tests run
+# testid_PASSED - the number of successful tests
+# testid_FAILED - the number of failed tests
+# testid_ERROR - the number of tests was neither successful or failed
+#
+################################################################################
+
+### Rules for Gtest
+
+SetupRunGtestTest = $(NamedParamsMacroTemplate)
+define SetupRunGtestTestBody
+ $1_TEST_RESULTS_DIR := $$(TEST_RESULTS_DIR)/$1
+ $1_TEST_SUPPORT_DIR := $$(TEST_SUPPORT_DIR)/$1
+
+ $1_TEST_NAME := $$(strip $$(patsubst gtest:%, %, $$($1_TEST)))
+ ifneq ($$($1_TEST_NAME), all)
+ $1_GTEST_FILTER := --gtest_filter=$$($1_TEST_NAME)*
+ endif
+
+ ifneq ($$(GTEST_REPEAT), )
+ $1_GTEST_REPEAT :=--gtest_repeat=$$(GTEST_REPEAT)
+ endif
+
+ run-test-$1:
+ $$(call LogWarn)
+ $$(call LogWarn, Running test '$$($1_TEST)')
+ $$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
+ $$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/gtest, \
+ $$(FIXPATH) $$(TEST_IMAGE_DIR)/hotspot/gtest/server/gtestLauncher \
+ -jdk $(JDK_IMAGE_DIR) $$($1_GTEST_FILTER) \
+ --gtest_output=xml:$$($1_TEST_RESULTS_DIR)/gtest.xml \
+ $$($1_GTEST_REPEAT) $$(GTEST_OPTIONS) \
+ > >($(TEE) $$($1_TEST_RESULTS_DIR)/gtest.txt) || true )
+
+ $1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/gtest.txt
+
+ parse-test-$1: run-test-$1
+ $$(call LogWarn, Finished running test '$$($1_TEST)')
+ $$(call LogWarn, Test report is stored in $$(strip \
+ $$(subst $$(TOPDIR)/, , $$($1_TEST_RESULTS_DIR))))
+ $$(eval $1_TOTAL := $$(shell $$(AWK) '/==========.* tests? from .* \
+ test cases? ran/ { print $$$$2 }' $$($1_RESULT_FILE)))
+ $$(eval $1_PASSED := $$(shell $$(AWK) '/\[ PASSED \] .* tests?./ \
+ { print $$$$4 }' $$($1_RESULT_FILE)))
+ $$(eval $1_FAILED := $$(shell $$(AWK) '/\[ FAILED \] .* tests?, \
+ listed below/ { print $$$$4 }' $$($1_RESULT_FILE)))
+ $$(if $$($1_FAILED), , $$(eval $1_FAILED := 0))
+ $$(eval $1_ERROR := $$(shell \
+ $$(EXPR) $$($1_TOTAL) - $$($1_PASSED) - $$($1_FAILED)))
+
+ $1: run-test-$1 parse-test-$1
+
+ TARGETS += $1
+endef
+
+################################################################################
+
+### Rules for Jtreg
+
+# Helper function for SetupRunJtregTest. Set a JTREG_* variable from, in order:
+# 1) Specified by user on command line
+# 2) Component-specific default
+# 3) Generic default
+#
+# Note: No spaces are allowed around the arguments.
+# Arg $1 The test ID (i.e. $1 in SetupRunJtregTest)
+# Arg $2 Base variable, e.g. JTREG_JOBS
+# Arg $3 The default value (optional)
+define SetJtregValue
+ ifneq ($$($2), )
+ $1_$2 := $$($2)
+ else
+ ifneq ($$($$($1_COMPONENT)_$2), )
+ $1_$2 := $$($$($1_COMPONENT)_$2)
+ else
+ ifneq ($3, )
+ $1_$2 := $3
+ endif
+ endif
+ endif
+endef
+
+SetupRunJtregTest = $(NamedParamsMacroTemplate)
+define SetupRunJtregTestBody
+ $1_TEST_RESULTS_DIR := $$(TEST_RESULTS_DIR)/$1
+ $1_TEST_SUPPORT_DIR := $$(TEST_SUPPORT_DIR)/$1
+
+ $1_TEST_NAME := $$(strip $$(patsubst jtreg:%, %, $$($1_TEST)))
+ $1_COMPONENT := $$(firstword $$(subst /, $$(SPACE), $$($1_TEST_NAME)))
+
+ ifeq ($$(JT_HOME), )
+ $$(info Error: jtreg framework is not found.)
+ $$(info Please run configure using --with-jtreg.)
+ $$(error Cannot continue)
+ endif
+
+ # Unfortunately, we need different defaults for some JTREG values,
+ # depending on what component we're running.
+
+ # Convert JTREG_foo into $1_JTREG_foo with a suitable value.
+ $$(eval $$(call SetJtregValue,$1,JTREG_TEST_MODE,agentvm))
+ $$(eval $$(call SetJtregValue,$1,JTREG_ASSERT,true))
+ $$(eval $$(call SetJtregValue,$1,JTREG_MAX_MEM,512m))
+ $$(eval $$(call SetJtregValue,$1,JTREG_NATIVEPATH))
+ $$(eval $$(call SetJtregValue,$1,JTREG_BASIC_OPTIONS))
+
+ ifneq ($(TEST_JOBS), 0)
+ # User has specified TEST_JOBS, use that as fallback default
+ $$(eval $$(call SetJtregValue,$1,JTREG_JOBS,$$(TEST_JOBS)))
+ else
+ # Use JOBS as default (except for hotspot)
+ $$(eval $$(call SetJtregValue,$1,JTREG_JOBS,$$(JOBS)))
+ endif
+
+ ifeq ($$(shell $$(EXPR) $$($1_JTREG_JOBS) \> 50), 1)
+ # Until CODETOOLS-7901892 is fixed, JTreg cannot handle more than 50 jobs
+ $1_JTREG_JOBS := 50
+ endif
+
+ # Make sure MaxRAMFraction is high enough to not cause OOM or swapping since
+ # we may end up with a lot of JVM's
+ $1_JTREG_MAX_RAM_FRACTION := $$(shell $$(EXPR) $$($1_JTREG_JOBS) \* 4)
+
+ JTREG_TIMEOUT ?= 4
+ JTREG_VERBOSE ?= fail,error,summary
+ JTREG_RETAIN ?= fail,error
+
+ ifneq ($$($1_JTREG_MAX_MEM), 0)
+ $1_JTREG_BASIC_OPTIONS += -vmoption:-Xmx$$($1_JTREG_MAX_MEM)
+ $1_JTREG_LAUNCHER_OPTIONS += -Xmx$$($1_JTREG_MAX_MEM)
+ endif
+
+ $1_JTREG_BASIC_OPTIONS += -$$($1_JTREG_TEST_MODE) \
+ -verbose:$$(JTREG_VERBOSE) -retain:$$(JTREG_RETAIN) \
+ -concurrency:$$($1_JTREG_JOBS) -timeoutFactor:$$(JTREG_TIMEOUT) \
+ -vmoption:-XX:MaxRAMFraction=$$($1_JTREG_MAX_RAM_FRACTION)
+
+ $1_JTREG_BASIC_OPTIONS += -automatic -keywords:\!ignore -ignore:quiet
+
+ # Some tests needs to find a boot JDK using the JDK8_HOME variable.
+ $1_JTREG_BASIC_OPTIONS += -e:JDK8_HOME=$$(BOOT_JDK)
+
+ $1_JTREG_BASIC_OPTIONS += \
+ $$(addprefix -javaoption:, $$(JTREG_JAVA_OPTIONS)) \
+ $$(addprefix -vmoption:, $$(JTREG_VM_OPTIONS)) \
+ #
+
+ ifeq ($$($1_JTREG_ASSERT), true)
+ $1_JTREG_BASIC_OPTIONS += -ea -esa
+ endif
+
+ ifneq ($$($1_JTREG_NATIVEPATH), )
+ $1_JTREG_BASIC_OPTIONS += -nativepath:$$($1_JTREG_NATIVEPATH)
+ endif
+
+ run-test-$1:
+ $$(call LogWarn)
+ $$(call LogWarn, Running test '$$($1_TEST)')
+ $$(call MakeDir, $$($1_TEST_RESULTS_DIR) $$($1_TEST_SUPPORT_DIR))
+ $$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/jtreg, \
+ $$(JAVA) $$($1_JTREG_LAUNCHER_OPTIONS) \
+ -Dprogram=jtreg -jar $$(JT_HOME)/lib/jtreg.jar \
+ $$($1_JTREG_BASIC_OPTIONS) \
+ -testjdk:$$(JDK_IMAGE_DIR) \
+ -dir:$$(TOPDIR) \
+ -reportDir:$$($1_TEST_RESULTS_DIR) \
+ -workDir:$$($1_TEST_SUPPORT_DIR) \
+ $$(JTREG_OPTIONS) \
+ $$($1_TEST_NAME) || true )
+
+ $1_RESULT_FILE := $$($1_TEST_RESULTS_DIR)/text/stats.txt
+
+ parse-test-$1: run-test-$1
+ $$(call LogWarn, Finished running test '$$($1_TEST)')
+ $$(call LogWarn, Test report is stored in $$(strip \
+ $$(subst $$(TOPDIR)/, , $$($1_TEST_RESULTS_DIR))))
+ $$(eval $1_PASSED := $$(shell $$(AWK) '{ gsub(/[,;]/, ""); \
+ for (i=1; i<=NF; i++) { if ($$$$i == "passed:") \
+ print $$$$(i+1) } }' $$($1_RESULT_FILE)))
+ $$(if $$($1_PASSED), , $$(eval $1_PASSED := 0))
+ $$(eval $1_FAILED := $$(shell $$(AWK) '{gsub(/[,;]/, ""); \
+ for (i=1; i<=NF; i++) { if ($$$$i == "failed:") \
+ print $$$$(i+1) } }' $$($1_RESULT_FILE)))
+ $$(if $$($1_FAILED), , $$(eval $1_FAILED := 0))
+ $$(eval $1_ERROR := $$(shell $$(AWK) '{gsub(/[,;]/, ""); \
+ for (i=1; i<=NF; i++) { if ($$$$i == "error:") \
+ print $$$$(i+1) } }' $$($1_RESULT_FILE)))
+ $$(if $$($1_ERROR), , $$(eval $1_ERROR := 0))
+ $$(eval $1_TOTAL := $$(shell \
+ $$(EXPR) $$($1_PASSED) + $$($1_FAILED) + $$($1_ERROR)))
+
+ $1: run-test-$1 parse-test-$1
+
+ TARGETS += $1
+endef
+
+
+################################################################################
+# Setup and execute make rules for all selected tests
+################################################################################
+
+# Helper function to determine which handler to use for the given test
+UseGtestTestHandler = \
+ $(if $(filter gtest:%, $1), true)
+
+UseJtregTestHandler = \
+ $(if $(filter jtreg:%, $1), true)
+
+# Now process each test to run and setup a proper make rule
+$(foreach test, $(TESTS_TO_RUN), \
+ $(eval TEST_ID := $(shell $(ECHO) $(strip $(test)) | \
+ $(TR) -cs '[a-z][A-Z][0-9]\n' '_')) \
+ $(eval ALL_TEST_IDS += $(TEST_ID)) \
+ $(if $(call UseCustomTestHandler, $(test)), \
+ $(eval $(call SetupRunCustomTest, $(TEST_ID), \
+ TEST := $(test), \
+ )) \
+ ) \
+ $(if $(call UseGtestTestHandler, $(test)), \
+ $(eval $(call SetupRunGtestTest, $(TEST_ID), \
+ TEST := $(test), \
+ )) \
+ ) \
+ $(if $(call UseJtregTestHandler, $(test)), \
+ $(eval $(call SetupRunJtregTest, $(TEST_ID), \
+ TEST := $(test), \
+ )) \
+ ) \
+)
+
+# Sort also removes duplicates, so if there is any we'll get fewer words.
+ifneq ($(words $(ALL_TEST_IDS)), $(words $(sort $(ALL_TEST_IDS))))
+ $(error Duplicate test specification)
+endif
+
+
+################################################################################
+# The main target for RunTests.gmk
+################################################################################
+
+# The SetupRun*Test functions have populated TARGETS.
+
+TEST_FAILURE := false
+
+run-test: $(TARGETS)
+ # Print a table of the result of all tests run and their result
+ $(ECHO)
+ $(ECHO) ==============================
+ $(ECHO) Test summary
+ $(ECHO) ==============================
+ $(PRINTF) "%2s %-49s %5s %5s %5s %5s %2s\n" " " TEST \
+ TOTAL PASS FAIL ERROR " "
+ $(foreach test, $(TESTS_TO_RUN), \
+ $(eval TEST_ID := $(shell $(ECHO) $(strip $(test)) | \
+ $(TR) -cs '[a-z][A-Z][0-9]\n' '_')) \
+ $(if $(filter $($(TEST_ID)_PASSED), $($(TEST_ID)_TOTAL)), \
+ $(PRINTF) "%2s %-49s %5d %5d %5d %5d %2s\n" " " "$(test)" \
+ $($(TEST_ID)_TOTAL) $($(TEST_ID)_PASSED) $($(TEST_ID)_FAILED) \
+ $($(TEST_ID)_ERROR) " " $(NEWLINE) \
+ , \
+ $(PRINTF) "%2s %-49s %5d %5d %5d %5d %2s\n" ">>" "$(test)" \
+ $($(TEST_ID)_TOTAL) $($(TEST_ID)_PASSED) $($(TEST_ID)_FAILED) \
+ $($(TEST_ID)_ERROR) "<<" $(NEWLINE) \
+ $(eval TEST_FAILURE := true) \
+ ) \
+ )
+ $(ECHO) ==============================
+ $(if $(filter true, $(TEST_FAILURE)), \
+ $(ECHO) TEST FAILURE $(NEWLINE) \
+ $(TOUCH) $(MAKESUPPORT_OUTPUTDIR)/exit-with-error \
+ , \
+ $(ECHO) TEST SUCCESS \
+ )
+ $(ECHO)
+
+################################################################################
+
+all: run-test
+
+.PHONY: default all run-test $(TARGETS)
diff --git a/make/SourceRevision.gmk b/make/SourceRevision.gmk
new file mode 100644
index 0000000..a14b3ef
--- /dev/null
+++ b/make/SourceRevision.gmk
@@ -0,0 +1,131 @@
+#
+# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+
+################################################################################
+# Keep track of what source revision is used to create the build, by creating
+# a tracker file in the output directory. This tracker file is included in the
+# image, and can be used to recreate the source revision used.
+#
+# We're either building directly from a mercurial forest, and if so, use the
+# current revision from mercurial. Otherwise, we are building from a source
+# bundle. As a part of creating this source bundle, the current mercurial
+# revisions of all repos will be stored in a file in the top dir, which is then
+# used when creating the tracker file.
+
+STORED_SOURCE_REVISION := $(TOPDIR)/.src-rev
+
+# Are we using mercurial?
+ifneq ($(and $(HG), $(wildcard $(TOPDIR)/.hg)), )
+
+ # Verify that the entire forest is consistent
+ $(foreach repo, $(call FindAllReposRel), \
+ $(if $(wildcard $(TOPDIR)/$(repo)/.hg),, \
+ $(error Inconsistent revision control: $(repo) is missing .hg directory)) \
+ )
+
+ # Replace "." with "_top" and "/" with "-"
+ MakeFilenameFromRepo = \
+ $(strip $(subst .,top, $(subst /,-, $1)))
+
+ ################################################################################
+ # SetupGetRevisionForRepo defines a make rule for creating a file containing
+ # the name of the repository and the output of "hg id" for that repository.
+ # Argument 1 is the relative path to the repository from the top dir.
+ #
+ SetupGetRevisionForRepo = $(NamedParamsMacroTemplate)
+ define SetupGetRevisionForRepoBody
+ $1_REPO_PATH := $$(TOPDIR)/$$(strip $1)
+ $1_FILENAME := $$(call MakeFilenameFromRepo, $1)
+
+ $$(SUPPORT_OUTPUTDIR)/src-rev/$$($1_FILENAME): FRC
+ $$(call MakeDir, $$(@D))
+ $$(ECHO) $$(strip $1):`$$(HG) id -i --repository $$($1_REPO_PATH)` > $$@
+
+ REPO_REVISIONS += $$(SUPPORT_OUTPUTDIR)/src-rev/$$($1_FILENAME)
+ endef
+
+ # Setup rules for all repos. This makes sure all the "hg id" calls are made
+ # in parallel.
+ $(foreach repo, $(call FindAllReposRel), \
+ $(eval $(call SetupGetRevisionForRepo, $(repo))) \
+ )
+
+ # Create a complete source revision output file from all repos
+ # Param 1: The output file
+ define CreateSourceRevisionFile
+ $1: $$(REPO_REVISIONS)
+ $$(call MakeDir, $$(@D))
+ $$(ECHO) `$$(CAT) $$(REPO_REVISIONS)` > $$@.tmp
+ if [ ! -f $$@ ] || [ "`$$(CAT) $$@`" != "`$$(CAT) $$@.tmp`" ]; then \
+ $$(MV) $$@.tmp $$@ ; \
+ else \
+ $$(RM) $$@.tmp ; \
+ fi
+ endef
+
+ $(eval $(call CreateSourceRevisionFile, $(STORED_SOURCE_REVISION)))
+
+ store-source-revision: $(STORED_SOURCE_REVISION)
+
+ $(eval $(call CreateSourceRevisionFile, $(SOURCE_REVISION_TRACKER)))
+
+ create-source-revision-tracker: $(SOURCE_REVISION_TRACKER)
+
+else
+ # Not using HG
+
+ ifneq ($(wildcard $(STORED_SOURCE_REVISION)), )
+ # We have a stored source revision (.src-rev)
+
+ store-source-revision:
+ $(call LogInfo, No mercurial configuration present$(COMMA) not updating .src-rev)
+
+ $(SOURCE_REVISION_TRACKER): $(STORED_SOURCE_REVISION)
+ $(install-file)
+
+ create-source-revision-tracker: $(SOURCE_REVISION_TRACKER)
+ else
+ # We don't have a stored source revision. Can't do anything, really.
+
+ store-source-revision:
+ $(call LogWarn, Error: No mercurial configuration present$(COMMA) cannot create .src-rev)
+ exit 2
+
+ create-source-revision-tracker:
+ $(call LogWarn, Warning: No mercurial configuration present and no .src-rev)
+ endif
+
+endif
+
+all: store-source-revision create-source-revision-tracker
+
+FRC: # Force target
+
+.PHONY: all store-source-revision create-source-revision-tracker
diff --git a/make/UpdateBuildDocs.gmk b/make/UpdateBuildDocs.gmk
new file mode 100644
index 0000000..edcd648
--- /dev/null
+++ b/make/UpdateBuildDocs.gmk
@@ -0,0 +1,72 @@
+#
+# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include ProcessMarkdown.gmk
+
+################################################################################
+# This makefile updates the generated build html documentation.
+#
+################################################################################
+
+ifeq ($(PANDOC), )
+ $(info No pandoc executable was detected by configure)
+ $(error Cannot continue)
+endif
+
+GLOBAL_SPECS_DEFAULT_CSS_FILE := $(JDK_TOPDIR)/make/data/docs-resources/resources/jdk-default.css
+
+################################################################################
+
+DOCS_DIR := $(TOPDIR)/common/doc
+
+$(eval $(call SetupProcessMarkdown, building, \
+ FILES := $(DOCS_DIR)/building.md, \
+ DEST := $(DOCS_DIR), \
+ CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \
+ OPTIONS := --toc, \
+))
+TARGETS += $(building)
+
+$(eval $(call SetupProcessMarkdown, testing, \
+ FILES := $(DOCS_DIR)/testing.md, \
+ DEST := $(DOCS_DIR), \
+ CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \
+ OPTIONS := --toc, \
+))
+TARGETS += $(testing)
+
+################################################################################
+
+$(eval $(call IncludeCustomExtension, , UpdateBuildDocs.gmk))
+
+################################################################################
+
+all: $(TARGETS)
+
+.PHONY: all default
diff --git a/make/ZipSecurity.gmk b/make/ZipSecurity.gmk
new file mode 100644
index 0000000..ba56641
--- /dev/null
+++ b/make/ZipSecurity.gmk
@@ -0,0 +1,104 @@
+#
+# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include JavaCompilation.gmk
+
+##########################################################################################
+#
+# sec-bin.zip is used by builds where the corresponding sources are not available
+#
+$(eval $(call SetupZipArchive,BUILD_SEC_BIN_ZIP, \
+ SRC := $(JDK_OUTPUTDIR), \
+ INCLUDES := \
+ modules/java.base/javax/crypto \
+ modules/java.base/javax/crypto/spec \
+ modules/java.base/sun/security/internal/interfaces \
+ modules/java.base/sun/security/internal/spec \
+ modules/java.base/com/sun/crypto/provider \
+ modules/jdk.crypto.ec/sun/security/ec \
+ modules/jdk.crypto.mscapi/sun/security/mscapi \
+ modules/jdk.crypto.cryptoki/sun/security/pkcs11 \
+ modules/jdk.crypto.cryptoki/sun/security/pkcs11/wrapper \
+ modules/jdk.crypto.ucrypto/com/oracle/security/ucrypto \
+ modules/java.base/javax/net \
+ modules/java.base/javax/security/cert \
+ modules/java.base/com/sun/net/ssl \
+ modules/java.base/com/sun/security/cert \
+ modules/java.base/sun/net/www/protocol/https \
+ modules/java.base/sun/security/pkcs12 \
+ modules/java.base/sun/security/ssl \
+ modules/java.security.jgss/sun/security/krb5 \
+ modules/java.security.jgss/sun/security/krb5/internal \
+ modules/java.security.jgss/sun/security/krb5/internal/ccache \
+ modules/java.security.jgss/sun/security/krb5/internal/crypto \
+ modules/java.security.jgss/sun/security/krb5/internal/ktab \
+ modules/java.security.jgss/sun/security/krb5/internal/rcache \
+ modules/java.security.jgss/sun/security/krb5/internal/util, \
+ INCLUDE_FILES := modules/java.security.jgss/sun/security/jgss/spi/GSSContextSpi.class, \
+ EXCLUDES := modules/java.security.jgss/sun/security/krb5/internal/tools, \
+ ZIP := $(IMAGES_OUTPUTDIR)/sec-bin.zip))
+
+TARGETS += $(IMAGES_OUTPUTDIR)/sec-bin.zip
+
+##########################################################################################
+#
+# Windows specific binary security packages.
+#
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ # sec-windows-bin.zip is used by builds where the corresponding sources are not available
+ $(eval $(call SetupZipArchive,BUILD_SEC_WINDOWS_BIN_ZIP, \
+ SRC := $(JDK_OUTPUTDIR), \
+ INCLUDES := modules/java.security.jgss/sun/security/krb5/internal/tools, \
+ ZIP := $(IMAGES_OUTPUTDIR)/sec-windows-bin.zip))
+
+ TARGETS += $(IMAGES_OUTPUTDIR)/sec-windows-bin.zip
+
+ # JGSS files contain the native Kerberos library
+ ifeq ($(OPENJDK_TARGET_CPU), x86_64)
+ JGSS_ZIP_NAME = jgss-windows-x64-bin.zip
+ else
+ JGSS_ZIP_NAME = jgss-windows-i586-bin.zip
+ endif
+
+ $(eval $(call SetupZipArchive,BUILD_JGSS_BIN_ZIP, \
+ SRC := $(SUPPORT_OUTPUTDIR), \
+ INCLUDE_FILES := modules_libs/java.security.jgss/w2k_lsa_auth.dll \
+ modules_libs/java.security.jgss/w2k_lsa_auth.diz \
+ modules_libs/java.security.jgss/w2k_lsa_auth.map \
+ modules_libs/java.security.jgss/w2k_lsa_auth.pdb, \
+ ZIP := $(IMAGES_OUTPUTDIR)/$(JGSS_ZIP_NAME)))
+
+ TARGETS += $(IMAGES_OUTPUTDIR)/$(JGSS_ZIP_NAME)
+endif
+
+##########################################################################################
+
+all: $(TARGETS)
+
+.PHONY: default all
diff --git a/make/ZipSource.gmk b/make/ZipSource.gmk
new file mode 100644
index 0000000..1e998c8
--- /dev/null
+++ b/make/ZipSource.gmk
@@ -0,0 +1,95 @@
+#
+# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include JavaCompilation.gmk
+include Modules.gmk
+
+SRC_ZIP_WORK_DIR := $(SUPPORT_OUTPUTDIR)/src
+
+# Hook to include the corresponding custom file, if present.
+$(eval $(call IncludeCustomExtension, , ZipSource.gmk))
+
+################################################################################
+# Create the directory structure for src.zip using symlinks.
+# <module>/<package>/<file>.java
+
+# Find extra source dirs for a module that are not part of normal compilation
+# but should be included in src.zip.
+# $1: Module to find dirs for
+ExtraSrcDirs = \
+ $(wildcard $(SUPPORT_OUTPUTDIR)/rmic/$(strip $1))
+
+ALL_MODULES := $(FindAllModules)
+
+# Generate the src dirs in the first make invocation and then call this makefile
+# again to create src.zip.
+$(foreach m, $(ALL_MODULES), \
+ $(foreach d, $(call FindModuleSrcDirs, $m) $(call ExtraSrcDirs, $m), \
+ $(eval $d_TARGET := $(SRC_ZIP_WORK_DIR)/$(patsubst $(TOPDIR)/%,%,$d)/$m) \
+ $(if $(SRC_GENERATED), , \
+ $(eval $$($d_TARGET): $d ; \
+ $$(if $(filter $(TOPDIR)/%, $d), $$(link-file-relative), $$(link-file-absolute)) \
+ ) \
+ ) \
+ $(eval SRC_ZIP_SRCS += $$($d_TARGET)) \
+ $(eval SRC_ZIP_SRCS_$m += $$($d_TARGET)) \
+ ) \
+)
+
+TARGETS += $(SRC_ZIP_SRCS)
+
+################################################################################
+# Only evaluate the creation of src.zip in a sub make call when the symlinked
+# src directory structure has been generated.
+ifeq ($(SRC_GENERATED), true)
+ $(eval $(call SetupZipArchive, BUILD_SRC_ZIP, \
+ SRC := $(dir $(SRC_ZIP_SRCS)), \
+ INCLUDES := $(SRC_ZIP_INCLUDES), \
+ INCLUDE_FILES := $(SRC_ZIP_INCLUDE_FILES), \
+ EXCLUDES := $(SRC_ZIP_EXCLUDES), \
+ EXCLUDE_FILES := $(SRC_ZIP_EXCLUDE_FILES), \
+ SUFFIXES := .java, \
+ ZIP := $(SUPPORT_OUTPUTDIR)/src.zip, \
+ ))
+
+ do-zip: $(BUILD_SRC_ZIP)
+
+ .PHONY: do-zip
+endif
+
+zip: $(SRC_ZIP_SRCS)
+ +$(MAKE) $(MAKE_ARGS) -f ZipSource.gmk do-zip SRC_GENERATED=true
+
+TARGETS += zip
+
+################################################################################
+
+all: $(TARGETS)
+
+.PHONY: default all zip
diff --git a/make/common/FindTests.gmk b/make/common/FindTests.gmk
new file mode 100644
index 0000000..8394e54
--- /dev/null
+++ b/make/common/FindTests.gmk
@@ -0,0 +1,77 @@
+#
+# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+ifndef _FIND_TESTS_GMK
+_FIND_TESTS_GMK := 1
+
+# Hook to include the corresponding custom file, if present.
+$(eval $(call IncludeCustomExtension, , common/FindTests.gmk))
+
+# JTREG_COMPONENTS might have been set by a custom extension
+JTREG_COMPONENTS += hotspot jdk langtools nashorn jaxp
+
+################################################################################
+# Find the Jtreg test groups for the given component.
+#
+# Parameter 1 is the name of the component. This name is used as variable prefix.
+#
+# After this macro has been evaluated, the following variables are defined for
+# the component:
+# JTREG_TESTROOT - The path to the root of the test directory
+# JTREG_GROUP_FILES - The file(s) containing the group definitions
+# JTREG_TEST_GROUPS - The name of the test groups that the component defines
+#
+FindJtregGroups = $(NamedParamsMacroTemplate)
+define FindJtregGroupsBody
+ $1_JTREG_TESTROOT := $$(TOPDIR)/$1/test
+ ifneq ($$(wildcard $$($1_JTREG_TESTROOT)), )
+ $1_JTREG_GROUP_FILENAMES := $$(shell $$(SED) -n -e 's/\[\(.*\)\]/\1/g' \
+ -e 's/^groups\w*=//p' $$($1_JTREG_TESTROOT)/TEST.ROOT)
+ $1_JTREG_GROUP_FILES := $$(addprefix $$($1_JTREG_TESTROOT)/, \
+ $$($1_JTREG_GROUP_FILENAMES))
+ $1_JTREG_TEST_GROUPS := $$(strip $$(shell $$(SED) -n \
+ -e 's/\([^ ]*\)\w*=.*/\1/gp' $$(wildcard $$($1_JTREG_GROUP_FILES)) \
+ | $$(SORT) -u))
+ endif
+endef
+
+# Configure definitions for all available test components
+$(foreach component, $(JTREG_COMPONENTS), \
+ $(eval $(call FindJtregGroups, $(component))))
+
+# Create a list of all available Jtreg test groups in all components
+JTREG_TEST_GROUPS += $(sort $(foreach component, $(JTREG_COMPONENTS), \
+ $($(component)_JTREG_TEST_GROUPS)))
+
+# Add Jtreg test groups to list of named tests (test groups, test list, etc)
+# ALL_NAMED_TESTS might have been set by a custom extension
+ALL_NAMED_TESTS += $(JTREG_TEST_GROUPS)
+
+# Add Gtest
+ALL_NAMED_TESTS += gtest
+
+################################################################################
+
+endif # _FIND_TESTS_GMK
diff --git a/make/common/IdlCompilation.gmk b/make/common/IdlCompilation.gmk
new file mode 100644
index 0000000..ab08004
--- /dev/null
+++ b/make/common/IdlCompilation.gmk
@@ -0,0 +1,113 @@
+#
+# Copyright (c) 2011, 2014, 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.
+#
+
+PREFIXES=-pkgPrefix CORBA org.omg \
+ -pkgPrefix CosNaming org.omg \
+ -pkgPrefix CosTransactions org.omg \
+ -pkgPrefix CosTSInteroperation org.omg \
+ -pkgPrefix DynamicAny org.omg \
+ -pkgPrefix Dynamic org.omg \
+ -pkgPrefix IOP org.omg \
+ -pkgPrefix Messaging org.omg \
+ -pkgPrefix PortableInterceptor org.omg \
+ -pkgPrefix PortableServer org.omg \
+ -pkgPrefix activation com.sun.corba.se.spi \
+ -pkgPrefix GIOP com.sun.corba.se \
+ -pkgPrefix PortableActivationIDL com.sun.corba.se \
+ -pkgPrefix messages com.sun.corba.se
+
+define add_idl_package
+ # param 1 = MYPACKAGE
+ # param 2 = src root
+ # param 3 = gensrc root
+ # param 4 = source idl to compile
+ # param 5 = target idl package
+ # param 6 = delete these files that were output from the idlj
+ # param 7 = idls that match these patterns should be compiled with -oldImplBase
+ # param 8 = the idlj command
+ # Save the generated java files to a temporary directory so
+ # that we can find them and create proper dependencies.
+ # After that, we move them to the real gensrc target dir.
+ $4_TMPDIR:=tmp___$(subst /,_,$(patsubst $2/%,%,$4))___
+ ifneq ($$(filter $7,$4),)
+ $4_OLDIMPLBASE:=-oldImplBase
+ $4_OLDIMPLBASE_MSG:=with -oldImplBase
+ endif
+ $5 : $4
+ $$(call LogInfo, Compiling IDL $(patsubst $2/%,%,$4))
+ $$(call MakeDir, $$(@D))
+ $(RM) -rf $3/$$($4_TMPDIR)
+ $8 -td $3/$$($4_TMPDIR) \
+ -i $2/org/omg/CORBA \
+ -i $2/org/omg/PortableInterceptor \
+ -i $2/org/omg/PortableServer \
+ -D CORBA3 -corba 3.0 \
+ -fall \
+ $$($4_OLDIMPLBASE) \
+ $(PREFIXES) \
+ $4
+ $(RM) -f $$(addprefix $3/$$($4_TMPDIR)/,$6)
+ $(CP) -r $3/$$($4_TMPDIR)/* $3
+ ($(CD) $3/$$($4_TMPDIR) && $(FIND) . -type f | $(SED) 's!\./!$3/!g' | $(NAWK) '{ print $$$$1 ": $4" }' > $5)
+ $(RM) -rf $3/$$($4_TMPDIR)
+endef
+
+# Setup make rules for creating an IDL compilation.
+#
+# Parameter 1 is the name of the rule. This name is used as variable prefix,
+# and the targets generated are listed in a variable by that name.
+#
+# Remaining parameters are named arguments. These include:
+# IDLJ
+# SRC
+# BIN
+# INCLUDES
+# EXCLUDES
+# OLDIMPLBASES
+# DELETES
+SetupIdlCompilation = $(NamedParamsMacroTemplate)
+define SetupIdlCompilationBody
+
+ # Find all existing java files and existing class files.
+ $$(call MakeDir,$$($1_BIN))
+ $1_SRCS := $$(shell find $$($1_SRC) -name "*.idl")
+ $1_BINS := $$(shell find $$($1_BIN) -name "*.java")
+ # Prepend the source/bin path to the filter expressions.
+ $1_SRC_INCLUDES := $$(addprefix $$($1_SRC)/,$$($1_INCLUDES))
+ $1_SRC_EXCLUDES := $$(addprefix $$($1_SRC)/,$$($1_EXCLUDES))
+ $1_BIN_INCLUDES := $$(addprefix $$($1_BIN)/,$$($1_INCLUDES))
+ $1_BIN_EXCLUDES := $$(addprefix $$($1_BIN)/,$$($1_EXCLUDES))
+ $1_OLDIMPLBASES := $$(addprefix $$($1_SRC)/,$$($1_OLDIMPLBASES))
+ # Now remove unwanted java/class files.
+ $1_SRCS := $$(filter $$($1_SRC_INCLUDES),$$($1_SRCS))
+ $1_SRCS := $$(filter-out $$($1_SRC_EXCLUDES),$$($1_SRCS))
+ $1_BINS := $$(filter $$($1_BIN_INCLUDES),$$($1_BINS))
+ $1_BINS := $$(filter-out $$($1_BIN_EXCLUDES),$$($1_BINS))
+ $1 := $$(sort $$(patsubst $$($1_SRC)/%.idl,$$($1_BIN)/%.idl.d,$$($1_SRCS)))
+ # Now create the dependencies for each idl target.
+ $$(foreach p,$$($1),$$(eval $$(call add_idl_package,$1,$$($1_SRC),$$($1_BIN),$$(patsubst $$($1_BIN)/%.idl.d,$$($1_SRC)/%.idl,$$p),$$p,$$($1_DELETES),$$($1_OLDIMPLBASES),$$($1_IDLJ))))
+endef
+
+.SUFFIXES: .java .class .package
diff --git a/make/common/JarArchive.gmk b/make/common/JarArchive.gmk
new file mode 100644
index 0000000..1d6d455
--- /dev/null
+++ b/make/common/JarArchive.gmk
@@ -0,0 +1,276 @@
+#
+# Copyright (c) 2011, 2016, 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.
+#
+
+ifndef _JAR_ARCHIVE_GMK
+_JAR_ARCHIVE_GMK := 1
+
+ifeq (,$(_MAKEBASE_GMK))
+ $(error You must include MakeBase.gmk prior to including JarArchive.gmk)
+endif
+
+FALSE_FIND_PATTERN:=-name FILE_NAME_THAT_DOESNT_EXIST
+
+# Setup make rules for creating a jar archive.
+#
+# Parameter 1 is the name of the rule. This name is used as variable prefix,
+# and the targets generated are listed in a variable by that name.
+#
+# Remaining parameters are named arguments. These include:
+# DEPENDENCIES:=List of dependencies for the jar target. If left empty,
+# dependencies are calculated automatically from the source files found.
+# For this to work, the source files must exist when the makefile is
+# parsed.
+# SRCS:=List of directories in where to find files to add to archive
+# SUFFIXES:=File suffixes to include in jar
+# INCLUDES:=List of directories/packages in SRCS that should be included
+# EXCLUDES:=List of directories/packages in SRCS that should be excluded
+# EXCLUDE_FILES:=List of files in SRCS that should be excluded
+# EXTRA_FILES:=List of files in SRCS that should be included regardless of suffix match.
+# JAR:=Jar file to create
+# MANIFEST:=Optional manifest file template.
+# JARMAIN:=Optional main class to add to manifest
+# 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.
+# CHECK_COMPRESS_JAR Check the COMPRESS_JAR variable
+SetupJarArchive = $(NamedParamsMacroTemplate)
+define SetupJarArchiveBody
+
+ $1_JARMAIN:=$(strip $$($1_JARMAIN))
+ $1_JARNAME:=$$(notdir $$($1_JAR))
+ $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_BIN:=$$(dir $$($1_JAR))
+
+ ifeq (,$$($1_SUFFIXES))
+ # No suffix was set, default to classes.
+ $1_SUFFIXES:=.class
+ endif
+ # Convert suffixes to a find expression
+ $1_FIND_PATTERNS:=$(FALSE_FIND_PATTERN) $$(patsubst %,$(SPACE)-o$(SPACE)-name$(SPACE)$(DQUOTE)*%$(DQUOTE),$$($1_SUFFIXES))
+ # On windows, a lot of includes/excludes risk making the command line too long, so
+ # writing the grep patterns to files.
+ # Grep returns 1 if nothing is matched. Do not fail the build for this.
+ ifneq (,$$($1_INCLUDES))
+ $1_GREP_INCLUDE_PATTERNS:=$$(call EscapeDollar, \
+ $$(foreach src,$$($1_SRCS), $$(addprefix $$(src)/,$$($1_INCLUDES))))
+ # If there are a lot of include patterns, output to file to shorten command lines
+ ifeq ($$(word 20,$$($1_GREP_INCLUDE_PATTERNS)),)
+ $1_GREP_INCLUDES:=| ( $(GREP) $$(patsubst %,$(SPACE)-e$(SPACE)$(DQUOTE)%$(DQUOTE),$$($1_GREP_INCLUDE_PATTERNS)) \
+ || test "$$$$?" = "1" )
+ else
+ $1_GREP_INCLUDE_OUTPUT = \
+ $$(eval $$(call ListPathsSafely,$1_GREP_INCLUDE_PATTERNS, \
+ $$($1_BIN)/_the.$$($1_JARNAME)_include))
+ $1_GREP_INCLUDES:=| ( $(GREP) -f $$($1_BIN)/_the.$$($1_JARNAME)_include \
+ || test "$$$$?" = "1" )
+ endif
+ endif
+ ifneq (,$$($1_EXCLUDES)$$($1_EXCLUDE_FILES))
+ $1_GREP_EXCLUDE_PATTERNS:=$$(call EscapeDollar, \
+ $$(foreach src,$$($1_SRCS),$$(addprefix $$(src)/, \
+ $$($1_EXCLUDES) $$($1_EXCLUDE_FILES))))
+ # If there are a lot of include patterns, output to file to shorten command lines
+ ifeq ($$(word 20,$$($1_GREP_EXCLUDE_PATTERNS)),)
+ $1_GREP_EXCLUDES:=| ( $(GREP) -v $$(patsubst %,$(SPACE)-e$(SPACE)$(DQUOTE)%$(DQUOTE),$$($1_GREP_EXCLUDE_PATTERNS)) \
+ || test "$$$$?" = "1" )
+ else
+ $1_GREP_EXCLUDE_OUTPUT = \
+ $$(eval $$(call ListPathsSafely,$1_GREP_EXCLUDE_PATTERNS, \
+ $$($1_BIN)/_the.$$($1_JARNAME)_exclude))
+ $1_GREP_EXCLUDES:=| ( $(GREP) -v -f $$($1_BIN)/_the.$$($1_JARNAME)_exclude \
+ || test "$$$$?" = "1" )
+ endif
+ endif
+
+ # Check if this jar needs to have its index generated.
+ ifneq (,$$($1_JARINDEX))
+ $1_JARINDEX = (cd $$(dir $$@) && $(JAR) -i $$(notdir $$@))
+ else
+ $1_JARINDEX = true
+ endif
+ # 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_ORIG_DEPS := $$($1_DEPENDENCIES)
+ ifeq ($$($1_DEPENDENCIES), )
+ # Add all source roots to the find cache since we are likely going to run find
+ # on these more than once. The cache will only be updated if necessary.
+ $$(eval $$(call FillCacheFind, $$($1_FIND_LIST)))
+ $1_DEPENDENCIES:=$$(filter $$(addprefix %,$$($1_SUFFIXES)), \
+ $$(call CacheFind,$$($1_SRCS)))
+ ifneq (,$$($1_GREP_INCLUDE_PATTERNS))
+ $1_DEPENDENCIES:=$$(filter $$(addsuffix %,$$($1_GREP_INCLUDE_PATTERNS)),$$($1_DEPENDENCIES))
+ endif
+ ifneq (,$$($1_GREP_EXCLUDE_PATTERNS))
+ $1_DEPENDENCIES:=$$(filter-out $$(addsuffix %,$$($1_GREP_EXCLUDE_PATTERNS)),$$($1_DEPENDENCIES))
+ endif
+ # Look for EXTRA_FILES in all SRCS dirs and as absolute paths.
+ $1_DEPENDENCIES+=$$(wildcard $$(foreach src, $$($1_SRCS), \
+ $$(addprefix $$(src)/, $$($1_EXTRA_FILES))) $$($1_EXTRA_FILES))
+ ifeq (,$$($1_SKIP_METAINF))
+ $1_DEPENDENCIES+=$$(call CacheFind,$$(wildcard $$(addsuffix /META-INF,$$($1_SRCS))))
+ endif
+ endif
+ # The dependency list should never be empty
+ ifeq ($$(strip $$($1_DEPENDENCIES)), )
+ $$(warning No dependencies found for $1)
+ endif
+
+ # Utility macros, to make the shell script receipt somewhat easier to decipher.
+
+ # Capture extra files is the same for both CAPTURE_CONTENTS and SCAPTURE_CONTENTS so
+ # only define it once to avoid duplication.
+ # The list of extra files might be long, so need to use ListPathsSafely to print
+ # them out to a separte file. Then process the contents of that file to rewrite
+ # into -C <dir> <file> lines.
+ # The EXTRA_FILES_RESOLVED varible must be set in the macro so that it's evaluated
+ # in the recipe when the files are guaranteed to exist.
+ $1_CAPTURE_EXTRA_FILES=\
+ $$(eval $1_EXTRA_FILES_RESOLVED:=$$(call DoubleDollar, \
+ $$(wildcard $$(foreach src, $$($1_SRCS), \
+ $$(addprefix $$(src)/, $$($1_EXTRA_FILES))) $$($1_EXTRA_FILES)))) \
+ $$(if $$($1_EXTRA_FILES_RESOLVED), \
+ $$(eval $$(call ListPathsSafely,$1_EXTRA_FILES_RESOLVED, \
+ $$($1_BIN)/_the.$$($1_JARNAME)_contents.extra)) \
+ $(SED) $$(foreach src,$$($1_SRCS), -e 's|$$(src)/|-C $$(src) |g') \
+ $$($1_BIN)/_the.$$($1_JARNAME)_contents.extra \
+ >> $$($1_BIN)/_the.$$($1_JARNAME)_contents $$(NEWLINE))
+
+ # The capture contents macro finds all files (matching the patterns, typically
+ # .class and .prp) that are newer than the jar-file, ie the new content to be put into the jar.
+ # NOTICE: please leave the parentheses space separated otherwise the AIX build will break!
+ $1_CAPTURE_CONTENTS=\
+ $(RM) $$($1_BIN)/_the.$$($1_JARNAME)_contents $$(NEWLINE) \
+ $$(foreach src,$$($1_SRCS), \
+ $(FIND) $$(src) -type f -a \( $$($1_FIND_PATTERNS) \) -a -newer $$@ $$($1_GREP_INCLUDES) \
+ $$($1_GREP_EXCLUDES) | $(SED) 's|$$(src)/|-C $$(src) |g' \
+ >> $$($1_BIN)/_the.$$($1_JARNAME)_contents $$(NEWLINE)) \
+ $$($1_CAPTURE_EXTRA_FILES)
+
+ # The capture metainf macro finds all files below the META-INF directory that are newer than the jar-file.
+ # Find returns non zero if the META-INF dir does not exist, ignore this.
+ ifeq (,$$($1_SKIP_METAINF))
+ $1_CAPTURE_METAINF =$$(foreach src,$$($1_SRCS), \
+ ( ( $(FIND) $$(src)/META-INF -type f -a -newer $$@ 2> /dev/null || true ) \
+ | $(SED) 's|$$(src)/|-C $$(src) |g' >> \
+ $$($1_BIN)/_the.$$($1_JARNAME)_contents ) $$(NEWLINE) )
+ endif
+ # 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) \;) $$(NEWLINE))
+ # The update contents macro updates the jar file with the previously capture contents.
+ # Use 'wc -w' to see if the contents file is empty.
+ $1_UPDATE_CONTENTS=\
+ if [ "`$(WC) -l $$($1_BIN)/_the.$$($1_JARNAME)_contents | $(AWK) '{ print $$$$1 }'`" -gt "0" ]; then \
+ $(ECHO) " updating" `$(WC) -l $$($1_BIN)/_the.$$($1_JARNAME)_contents | $(AWK) '{ print $$$$1 }'` files && \
+ $(JAR) $$($1_JAR_UPDATE_OPTIONS) $$@ @$$($1_BIN)/_the.$$($1_JARNAME)_contents; \
+ fi $$(NEWLINE)
+ # The s-variants of the above macros are used when the jar is created from scratch.
+ # NOTICE: please leave the parentheses space separated otherwise the AIX build will break!
+ $1_SCAPTURE_CONTENTS=\
+ $(RM) $$($1_BIN)/_the.$$($1_JARNAME)_contents $$(NEWLINE) \
+ $$(foreach src,$$($1_SRCS), \
+ $(FIND) $$(src) -type f -a \( $$($1_FIND_PATTERNS) \) $$($1_GREP_INCLUDES) \
+ $$($1_GREP_EXCLUDES) | $(SED) 's|$$(src)/|-C $$(src) |g' \
+ >> $$($1_BIN)/_the.$$($1_JARNAME)_contents $$(NEWLINE)) \
+ $$($1_CAPTURE_EXTRA_FILES)
+
+ # Find returns non zero if the META-INF dir does not exist, ignore this.
+ ifeq (,$$($1_SKIP_METAINF))
+ $1_SCAPTURE_METAINF=$$(foreach src,$$($1_SRCS), \
+ ( ( $(FIND) $$(src)/META-INF -type f 2> /dev/null || true ) \
+ | $(SED) 's|$$(src)/|-C $$(src) |g' >> \
+ $$($1_BIN)/_the.$$($1_JARNAME)_contents) $$(NEWLINE) )
+ endif
+ $1_SUPDATE_CONTENTS=$(JAR) $$($1_JAR_UPDATE_OPTIONS) $$@ @$$($1_BIN)/_the.$$($1_JARNAME)_contents $$(NEWLINE)
+
+ # 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
+
+ # Include all variables of significance in the vardeps file
+ $1_VARDEPS := $(JAR) $$($1_JAR_CREATE_OPTIONS) $$($1_MANIFEST) \
+ $$($1_JARMAIN) $$($1_EXTRA_MANIFEST_ATTR) $$($1_ORIG_DEPS) $$($1_SRCS) \
+ $$($1_INCLUDES) $$($1_EXCLUDES) $$($1_EXCLUDE_FILES) $$($1_EXTRA_FILES)
+ $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, $$(dir $$($1_JAR))_the.$$($1_JARNAME).vardeps)
+
+ # Here is the rule that creates/updates the jar file.
+ $$($1_JAR) : $$($1_DEPENDENCIES) $$($1_MANIFEST) $$($1_VARDEPS_FILE)
+ $(MKDIR) -p $$($1_BIN)
+ $$($1_GREP_INCLUDE_OUTPUT)
+ $$($1_GREP_EXCLUDE_OUTPUT)
+ # If the vardeps file is part of the newer prereq list, it means that
+ # either the jar file does not exist, or we need to recreate it from
+ # from scratch anyway since a simple update will not catch all the
+ # potential changes.
+ $$(if $$(filter $$($1_VARDEPS_FILE) $$($1_MANIFEST), $$?), \
+ $$(if $$($1_MANIFEST), \
+ $(CP) $$($1_MANIFEST) $$($1_MANIFEST_FILE) $$(NEWLINE) \
+ , \
+ $(RM) $$($1_MANIFEST_FILE) && $(TOUCH) $$($1_MANIFEST_FILE) $$(NEWLINE)) \
+ $$(if $$($1_JARMAIN), \
+ $(ECHO) "Main-Class: $$(strip $$($1_JARMAIN))" >> $$($1_MANIFEST_FILE) $$(NEWLINE)) \
+ $$(if $$($1_EXTRA_MANIFEST_ATTR), \
+ $(PRINTF) "$$($1_EXTRA_MANIFEST_ATTR)\n" >> $$($1_MANIFEST_FILE) $$(NEWLINE)) \
+ $(ECHO) Creating $$($1_NAME) $$(NEWLINE) \
+ $(JAR) $$($1_JAR_CREATE_OPTIONS) $$@ $$($1_MANIFEST_FILE) $$(NEWLINE) \
+ $$($1_SCAPTURE_CONTENTS) \
+ $$($1_SCAPTURE_METAINF) \
+ $$($1_SUPDATE_CONTENTS) \
+ $$($1_JARINDEX) && true \
+ , \
+ $(ECHO) Modifying $$($1_NAME) $$(NEWLINE) \
+ $$($1_CAPTURE_CONTENTS) \
+ $$($1_CAPTURE_METAINF) \
+ $(RM) $$($1_DELETES_FILE) $$(NEWLINE) \
+ $$($1_CAPTURE_DELETES) \
+ $(CAT) $$($1_DELETES_FILE) > $$($1_DELETESS_FILE) $$(NEWLINE) \
+ if [ -s $$($1_DELETESS_FILE) ]; then \
+ $(ECHO) " deleting" `$(WC) -l $$($1_DELETESS_FILE) | $(AWK) '{ print $$$$1 }'` files && \
+ $(ZIPEXE) -q -d $$@ `$(CAT) $$($1_DELETESS_FILE)` ; \
+ fi $$(NEWLINE) \
+ $$($1_UPDATE_CONTENTS) true $$(NEWLINE) \
+ $$($1_JARINDEX) && true )
+
+ # Add jar to target list
+ $1 += $$($1_JAR)
+endef
+
+endif # _JAR_ARCHIVE_GMK
diff --git a/make/common/JavaCompilation.gmk b/make/common/JavaCompilation.gmk
new file mode 100644
index 0000000..21e8517
--- /dev/null
+++ b/make/common/JavaCompilation.gmk
@@ -0,0 +1,496 @@
+#
+# Copyright (c) 2011, 2016, 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.
+#
+
+# 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!
+
+ifndef _JAVA_COMPILATION_GMK
+_JAVA_COMPILATION_GMK := 1
+
+ifeq (,$(_MAKEBASE_GMK))
+ $(error You must include MakeBase.gmk prior to including JavaCompilation.gmk)
+endif
+
+# Java compilation needs SetupJarArchive and/or SetupZipArchive, if we're
+# generating a jar file or a source zip.
+include JarArchive.gmk
+include ZipArchive.gmk
+
+# Setup make rules for defining a Java compiler, which is needed to compile
+# Java code. This rule generates no output.
+#
+# Parameter 1 is the name of the compiler definition. This name needs to be
+# passed to SetupJavaCompilation. This name is used as variable prefix.
+#
+# Remaining parameters are named arguments. These include:
+# 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
+# FLAGS:=Flags to be supplied to javac
+# 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.
+# DISABLE_SJAVAC:=Set to true if this setup does not support sjavac
+SetupJavaCompiler = $(NamedParamsMacroTemplate)
+define SetupJavaCompilerBody
+ # The port file contains the tcp/ip on which the server listens
+ # and the cookie necessary to talk to the server.
+ $1_SJAVAC_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
+endef
+
+define add_file_to_copy
+ # param 1 = BUILD_MYPACKAGE
+ # parma 2 = The source file to copy.
+ $2_TARGET:=$2
+ # Remove the source prefix.
+ $$(foreach i,$$($1_SRC),$$(eval $$(call remove_string,$$i,$2_TARGET)))
+ # To allow for automatic overrides, do not create a rule for a target file that
+ # already has one
+ ifneq ($$($1_COPY_$$($2_TARGET)), 1)
+ $1_COPY_$$($2_TARGET) := 1
+ # Now we can setup the dependency that will trigger the copying.
+ $$($1_BIN)$$($1_MODULE_SUBDIR)$$($2_TARGET) : $2
+ $(MKDIR) -p $$(@D)
+ $(CP) $$< $$@
+ $(CHMOD) -f ug+w $$@
+
+ # And do not forget this target
+ $1_ALL_COPY_TARGETS += $$($1_BIN)$$($1_MODULE_SUBDIR)$$($2_TARGET)
+ endif
+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. Though it is to be superseded by
+# a standard annotation processor from with sjavac.
+#
+# An empty echo ensures that the input to sed always ends with a newline.
+# Certain implementations (e.g. Solaris) will skip the last line without
+# it.
+#
+# The sed expression does this:
+# 1. Add a backslash before any :, = or ! that do not have a backslash already.
+# 2. Apply the file unicode2x.sed which does a whole bunch of \u00XX to \xXX
+# conversions.
+# 3. Delete all lines starting with #.
+# 4. Delete empty lines.
+# 5. Append lines ending with \ with the next line.
+# 6. Remove leading and trailing white space. Note that tabs must be explicit
+# as sed on macosx does not understand '\t'.
+# 7. Replace the first \= with just =.
+# 8. Finally it's all sorted to create a stable output.
+#
+# It is assumed that = is the character used for separating names and values.
+define add_file_to_clean
+ # param 1 = BUILD_MYPACKAGE
+ # parma 2 = The source file to copy and clean.
+ $2_TARGET:=$2
+ # Remove the source prefix.
+ $$(foreach i,$$($1_SRC),$$(eval $$(call remove_string,$$i,$2_TARGET)))
+ # Now we can setup the depency that will trigger the copying.
+ # To allow for automatic overrides, do not create a rule for a target file that
+ # already has one
+ ifneq ($$($1_CLEAN_$$($2_TARGET)), 1)
+ $1_CLEAN_$$($2_TARGET) := 1
+ $$($1_BIN)$$($1_MODULE_SUBDIR)$$($2_TARGET) : $2
+ $(MKDIR) -p $$(@D)
+ export LC_ALL=C ; ( $(CAT) $$< && $(ECHO) "" ) \
+ | $(SED) -e 's/\([^\\]\):/\1\\:/g' -e 's/\([^\\]\)=/\1\\=/g' \
+ -e 's/\([^\\]\)!/\1\\!/g' -e 's/^[ ]*#.*/#/g' \
+ | $(SED) -f "$(SRC_ROOT)/make/common/support/unicode2x.sed" \
+ | $(SED) -e '/^#/d' -e '/^$$$$/d' \
+ -e :a -e '/\\$$$$/N; s/\\\n//; ta' \
+ -e 's/^[ ]*//;s/[ ]*$$$$//' \
+ -e 's/\\=/=/' \
+ | $(SORT) > $$@
+ $(CHMOD) -f ug+w $$@
+
+ # And do not forget this target
+ $1_ALL_COPY_CLEAN_TARGETS += $$($1_BIN)$$($1_MODULE_SUBDIR)$$($2_TARGET)
+ endif
+endef
+
+define remove_string
+ $2 := $$(subst $1,,$$($2))
+endef
+
+# Setup make rules for compiling Java source code to class files and/or a
+# resulting jar file.
+#
+# Parameter 1 is the name of the rule. This name is used as variable prefix,
+# and the targets generated are listed in a variable by that name.
+#
+# Remaining parameters are named arguments. These include:
+# SETUP:=must point to a previously setup java compiler, for example: SETUP:=BOOTJAVAC
+# JVM:=path to ..bin/java
+# ADD_JAVAC_FLAGS:=javac flags to append to the default ones.
+# SRC:=one or more directories to search for sources. The order of the source roots
+# is significant. The first found file of a certain name has priority.
+# BIN:=store classes here
+# MODULE:=Name of module being compiled. If set, classes are put in BIN/MODULE.
+# CLASSPATH:=a list of additional entries to set as classpath to javac
+# INCLUDES:=myapp.foo means will only compile java files in myapp.foo or any of its sub-packages.
+# EXCLUDES:=myapp.foo means will do not compile java files in myapp.foo or any of its sub-packages.
+# COPY:=.prp means copy all prp files to the corresponding package in BIN.
+# COPY_FILES:=myapp/foo/setting.txt means copy this file over to the package myapp/foo
+# CLEAN:=.properties means copy and clean all properties file to the corresponding package in BIN.
+# CLEAN_FILES:=myapp/foo/setting.txt means clean this file over to the package myapp/foo
+# SRCZIP:=Create a src.zip based on the found sources and copied files.
+# INCLUDE_FILES:="com/sun/SolarisFoobar.java" means only compile this file!
+# EXCLUDE_FILES:="com/sun/SolarisFoobar.java" means do not compile this particular file!
+# "SolarisFoobar.java" means do not compile SolarisFoobar, wherever it is found.
+# HEADERS:=path to directory where all generated c-headers are written.
+# DEPENDS:=Extra dependecy
+# DISABLE_SJAVAC:=Explicitly disable the use of sjavac for this compilation unit.
+# KEEP_DUPS:=Do not remove duplicate file names from different source roots.
+# FAIL_NO_SRC:=Set to false to not fail the build if no source files are found,
+# default is true.
+# DEBUG_SYMBOLS:=Set to false to disable generation of debug symbols.
+SetupJavaCompilation = $(NamedParamsMacroTemplate)
+define SetupJavaCompilationBody
+
+ # Verify arguments
+ ifeq ($$($1_BIN),)
+ $$(error Must specify BIN (in $1))
+ endif
+
+ # Extract the info from the java compiler setup.
+ $1_JVM := $$($$($1_SETUP)_JVM)
+ $1_JAVAC := $$($$($1_SETUP)_JAVAC)
+ $1_FLAGS :=
+ ifneq ($$($1_DEBUG_SYMBOLS), false)
+ $1_FLAGS := -g
+ endif
+ $1_FLAGS += $$($$($1_SETUP)_FLAGS) $$($1_ADD_JAVAC_FLAGS) $(JAVAC_FLAGS)
+ ifneq ($$($1_CLASSPATH), )
+ $1_FLAGS += -cp $$(call PathList, $$($1_CLASSPATH))
+ endif
+ ifeq ($$($1_JAVAC),)
+ $$(error The Java compilation $1 refers to a non-existant java compiler setup $$($1_SETUP))
+ endif
+ $1_SJAVAC_PORTFILE := $$($$($1_SETUP)_SJAVAC_PORTFILE)
+ $1_SERVER_JVM := $$($$($1_SETUP)_SERVER_JVM)
+ $1_DISABLE_SJAVAC := $$($$($1_SETUP)_DISABLE_SJAVAC)
+
+ ifneq ($$($1_MODULE), )
+ $1_MODULE_SUBDIR := /$$($1_MODULE)
+ endif
+
+ # Make sure the dirs exist.
+ $$(foreach d,$$($1_SRC), $$(if $$(wildcard $$d),,$$(error SRC specified to SetupJavaCompilation $1 contains missing directory >$$d<)))
+ $$(call MakeDir,$$($1_BIN))
+ # Add all source roots to the find cache since we are likely going to run find
+ # on these more than once. The cache will only be updated if necessary.
+ $$(eval $$(call FillCacheFind,$$($1_SRC)))
+ # Find all files in the source trees. Preserve order of source roots so that
+ # the first version in case of multiple instances of the same file is selected.
+ # CacheFind does not preserve order so need to call it for each root.
+ $1_ALL_SRCS += $$(foreach s, $$($1_SRC), $$(call CacheFind, $$(s)))
+ # Extract the java files.
+ $1_SRCS := $$(filter %.java, $$($1_ALL_SRCS))
+
+ # Translate include/exclude into patterns
+ ifneq ($$($1_EXCLUDE_FILES), )
+ $1_EXCLUDE_PATTERN := $$(addprefix %, $$($1_EXCLUDE_FILES))
+ endif
+ ifneq ($$($1_INCLUDE_FILES), )
+ $1_INCLUDE_PATTERN := $$(foreach i, $$($1_SRC), $$(addprefix $$i/, $$($1_INCLUDE_FILES)))
+ endif
+ ifneq ($$($1_EXCLUDES), )
+ $1_EXCLUDE_PATTERN += $$(foreach i, $$($1_SRC), $$(addprefix $$i/, $$(addsuffix /%, $$($1_EXCLUDES))))
+ endif
+ ifneq ($$($1_INCLUDES), )
+ $1_INCLUDE_PATTERN += $$(foreach i, $$($1_SRC), $$(addprefix $$i/, $$(addsuffix /%, $$($1_INCLUDES))))
+ endif
+
+ # Apply include/exclude patterns to java sources
+ ifneq ($$($1_EXCLUDE_PATTERN), )
+ $1_SRCS := $$(filter-out $$($1_EXCLUDE_PATTERN), $$($1_SRCS))
+ endif
+ ifneq ($$($1_INCLUDE_PATTERN), )
+ $1_SRCS := $$(filter $$($1_INCLUDE_PATTERN), $$($1_SRCS))
+ endif
+
+ ifneq ($$($1_KEEP_DUPS), true)
+ # Remove duplicate source files by keeping the first found of each duplicate.
+ # This allows for automatic overrides with custom or platform specific versions
+ # source files.
+ #
+ # For the smart javac wrapper case, add each removed file to an extra exclude
+ # file list to prevent sjavac from finding duplicate sources.
+ $1_SRCS := $$(strip $$(foreach s, $$($1_SRCS), \
+ $$(eval relative_src := $$(call remove-prefixes, $$($1_SRC), $$(s))) \
+ $$(if $$($1_$$(relative_src)), \
+ $$(eval $1_SJAVAC_EXCLUDE_FILES += $$(s)), \
+ $$(eval $1_$$(relative_src) := 1) $$(s))))
+ endif
+
+ ifeq ($$(strip $$($1_SRCS)), )
+ ifneq ($$($1_FAIL_NO_SRC), false)
+ $$(error No source files found for $1)
+ endif
+ else
+
+ $1_SAFE_NAME := $$(strip $$(subst /,_, $1))
+
+ # All files below META-INF are always copied.
+ $1_ALL_COPIES := $$(filter $$(addsuffix /META-INF%,$$($1_SRC)),$$($1_ALL_SRCS))
+ # Find all files to be copied from source to bin.
+ ifneq (,$$($1_COPY)$$($1_COPY_FILES))
+ # Search for all files to be copied.
+ $1_ALL_COPIES += $$(filter $$(addprefix %,$$($1_COPY)),$$($1_ALL_SRCS))
+ # Copy these explicitly
+ $1_ALL_COPIES += $$($1_COPY_FILES)
+ endif
+ # Copy must also respect filters.
+ ifneq (,$$($1_INCLUDE_PATTERN))
+ $1_ALL_COPIES := $$(filter $$($1_INCLUDE_PATTERN),$$($1_ALL_COPIES))
+ endif
+ ifneq (,$$($1_EXCLUDE_PATTERN))
+ $1_ALL_COPIES := $$(filter-out $$($1_EXCLUDE_PATTERN),$$($1_ALL_COPIES))
+ endif
+ 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
+
+ # Find all property files to be copied and cleaned from source to bin.
+ ifneq (,$$($1_CLEAN)$$($1_CLEAN_FILES))
+ # Search for all files to be copied.
+ $1_ALL_CLEANS := $$(filter $$(addprefix %,$$($1_CLEAN)),$$($1_ALL_SRCS))
+ # Clean these explicitly
+ $1_ALL_CLEANS += $$($1_CLEAN_FILES)
+ # Copy and clean must also respect filters.
+ ifneq (,$$($1_INCLUDE_PATTERN))
+ $1_ALL_CLEANS := $$(filter $$($1_INCLUDE_PATTERN),$$($1_ALL_CLEANS))
+ endif
+ ifneq (,$$($1_EXCLUDE_PATTERN))
+ $1_ALL_CLEANS := $$(filter-out $$($1_EXCLUDE_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_clean,$1,$$i)))
+ # Now we can depend on $$($1_ALL_COPY_CLEAN_TARGETS) to copy all files!
+ endif
+ 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'
+
+ # Create SJAVAC variable from JAVAC variable. Expects $1_JAVAC to be
+ # "bootclasspathprepend -cp .../javac.jar com.sun.tools.javac.Main"
+ # and javac is simply replaced with sjavac.
+ $1_SJAVAC:=$$(subst com.sun.tools.javac.Main,com.sun.tools.sjavac.Main,$$($1_JAVAC))
+
+ # Set the $1_REMOTE to spawn a background javac server.
+ $1_REMOTE:=--server:portfile=$$($1_SJAVAC_PORTFILE),id=$1,sjavac=$$(subst \
+ $$(SPACE),%20,$$(subst $$(COMMA),%2C,$$(strip $$($1_SERVER_JVM) $$($1_SJAVAC))))
+
+ $1_COMPILE_TARGET := $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1_batch
+
+ ifeq ($$($1_DISABLE_SJAVAC)x$$(ENABLE_SJAVAC),xyes)
+ # Using sjavac to compile.
+
+ # Create the sjavac wrapper command line. Sjavac doesn't handle patterns that
+ # match the absolute path, only the part inside each src dir. Instead -i and
+ # -x flags apply only to the next -src arg on the command line.
+ $1_EXCLUDE_FILES_ABS := $$(filter /%, $$($1_EXCLUDE_FILES)) $$($1_SJAVAC_EXCLUDE_FILES)
+ $1_EXCLUDE_FILES_REL := $$(filter-out /%, $$($1_EXCLUDE_FILES))
+ $1_SJAVAC_ARGS_STRING := $$(foreach s, $$(patsubst %/, %, $$($1_SRC)), \
+ $$(addprefix -x ,$$(addsuffix /**,$$($1_EXCLUDES))) \
+ $$(addprefix -i ,$$(addsuffix /**,$$($1_INCLUDES))) \
+ $$(addprefix -x **,$$(strip $$($1_EXCLUDE_FILES_REL))) \
+ $$(addprefix -i **,$$(strip $$($1_INCLUDE_FILES))) \
+ $$(addprefix -x , $$(strip $$(patsubst $$(s)/%, %, $$(filter $$(s)/%, $$($1_EXCLUDE_FILES_ABS))))) \
+ -src $$(s))
+
+ ifneq ($$(word 20, $$($1_SJAVAC_ARGS_STRING)), )
+ $1_SJAVAC_ARGS_FILE := $$($1_BIN)/_the.$1_args
+ $1_SJAVAC_ARGS := @$$($1_SJAVAC_ARGS_FILE)
+ else
+ $1_SJAVAC_ARGS := $$($1_SJAVAC_ARGS_STRING)
+ endif
+
+
+ ifneq (,$$($1_HEADERS))
+ $1_HEADERS_ARG := -h $$($1_HEADERS)
+ endif
+
+ $1_VARDEPS := $$($1_JVM) $$($1_SJAVAC) $$($1_SJAVAC_ARGS_STRING) $$($1_FLAGS) \
+ $$($1_HEADERS_ARG) $$($1_BIN) $$($1_EXCLUDES) $$($1_INCLUDES) \
+ $$($1_EXCLUDE_FILES) $$($1_INCLUDE_FILES)
+ $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \
+ $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1.vardeps)
+
+ $$($1_COMPILE_TARGET): $$($1_SRCS) $$($1_DEPENDS) $$($1_VARDEPS_FILE)
+ $$(call MakeDir, $$(@D) $$(dir $$($1_SJAVAC_PORTFILE)))
+ $$(eval $$(call ListPathsSafely,$1_SRCS, $$@.tmp))
+ ifneq ($$($1_SJAVAC_ARGS_FILE), )
+ $$(eval $$(call ListPathsSafely,$1_SJAVAC_ARGS_STRING, $$($1_SJAVAC_ARGS_FILE)))
+ endif
+ $$(call LogWarn, Compiling $1)
+ $$(call ExecuteWithLog, $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$$($1_SAFE_NAME)_batch, \
+ $$($1_JVM) $$($1_SJAVAC) \
+ $$($1_REMOTE) \
+ -j 1 \
+ --permit-unidentified-artifacts \
+ --permit-sources-without-package \
+ --compare-found-sources $$@.tmp \
+ --log=$(LOG_LEVEL) \
+ --state-dir=$$($1_BIN)$$($1_MODULE_SUBDIR) \
+ $$($1_SJAVAC_ARGS) \
+ $$($1_FLAGS) \
+ $$($1_HEADERS_ARG) \
+ -d $$($1_BIN)) && \
+ $(MV) $$@.tmp $$@
+ # Create a pubapi file that only changes when the pubapi changes. Dependent
+ # compilations can use this file to only get recompiled when pubapi has changed.
+ # Grep returns 1 if no matching lines are found. Do not fail for this.
+ $(GREP) -e "^I" $$($1_BIN)$$($1_MODULE_SUBDIR)/javac_state > $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1_pubapi.tmp \
+ || test "$$$$?" = "1"
+ if [ ! -f $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1_pubapi ] \
+ || [ "`$(DIFF) $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1_pubapi \
+ $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1_pubapi.tmp`" != "" ]; then \
+ $(MV) $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1_pubapi.tmp \
+ $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1_pubapi; \
+ fi
+
+ else
+ # Using plain javac to batch compile everything.
+
+ # When building in batch, put headers in a temp dir to filter out those that actually
+ # changed before copying them to the real header dir.
+ ifneq (,$$($1_HEADERS))
+ $1_HEADERS_ARG := -h $$($1_HEADERS).$1.tmp
+
+ $$($1_HEADERS)/_the.$1_headers: $$($1_COMPILE_TARGET)
+ $(MKDIR) -p $$(@D)
+ if [ -d "$$($1_HEADERS).$1.tmp" ]; then \
+ for f in `$(CD) $$($1_HEADERS).$1.tmp && $(FIND) . -type f`; do \
+ if [ ! -f "$$($1_HEADERS)/$$$$f" ] \
+ || [ "`$(DIFF) $$($1_HEADERS)/$$$$f $$($1_HEADERS).$1.tmp/$$$$f`" != "" ]; then \
+ $(MKDIR) -p `$(DIRNAME) $$($1_HEADERS)/$$$$f`; \
+ $(CP) -f $$($1_HEADERS).$1.tmp/$$$$f $$($1_HEADERS)/$$$$f; \
+ fi; \
+ done; \
+ fi
+ $(RM) -r $$($1_HEADERS).$1.tmp
+ $(TOUCH) $$@
+
+ $1_HEADER_TARGETS := $$($1_HEADERS)/_the.$1_headers
+ endif
+
+ $1_VARDEPS := $$($1_JVM) $$($1_JAVAC) $$($1_FLAGS) $$($1_BIN) \
+ $$($1_HEADERS_ARG) $$($1_EXCLUDES) $$($1_INCLUDES) \
+ $$($1_EXCLUDE_FILES) $$($1_INCLUDE_FILES)
+ $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \
+ $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$1.vardeps)
+
+ ifeq ($$($1_DISABLE_SJAVAC)x$(ENABLE_JAVAC_SERVER), xyes)
+ $1_JAVAC_CMD := $$($1_SJAVAC) $$($1_REMOTE)
+ else
+ $1_JAVAC_CMD := $$($1_JAVAC)
+ endif
+
+ # When not using sjavac, pass along all sources to javac using an @file.
+ $$($1_COMPILE_TARGET): $$($1_SRCS) $$($1_DEPENDS) $$($1_VARDEPS_FILE)
+ $$(call MakeDir, $$(@D))
+ $$(eval $$(call ListPathsSafely,$1_SRCS, $$@.tmp))
+ $$(call LogWarn, Compiling $$(words $$($1_SRCS)) files for $1)
+ $$(call ExecuteWithLog, $$($1_BIN)$$($1_MODULE_SUBDIR)/_the.$$($1_SAFE_NAME)_batch, \
+ $$($1_JVM) $$($1_JAVAC_CMD) $$($1_FLAGS) \
+ -implicit:none \
+ -d $$($1_BIN) $$($1_HEADERS_ARG) @$$@.tmp) && \
+ $(MV) $$@.tmp $$@
+ endif
+
+ # Add all targets to main variable
+ $1 := $$($1_ALL_COPY_TARGETS) $$($1_ALL_COPY_CLEAN_TARGETS) $$($1_COMPILE_TARGET) \
+ $$($1_HEADER_TARGETS)
+
+ # 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
+
+ $$(eval $$(call SetupJarArchive, ARCHIVE_$1, \
+ DEPENDENCIES:=$$($1), \
+ SRCS:=$$($1_BIN)$$($1_MODULE_SUBDIR), \
+ 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), \
+ ))
+
+ # Add jar to target list
+ $1 += $$($1_JAR)
+ endif
+
+ # Check if a srczip was specified, then setup the rules for the srczip.
+ ifneq (,$$($1_SRCZIP))
+ $$(eval $$(call SetupZipArchive, ZIP_ARCHIVE_$1, \
+ SRC:=$$($1_SRC), \
+ ZIP:=$$($1_SRCZIP), \
+ INCLUDES:=$$($1_INCLUDES), \
+ EXCLUDES:=$$($1_EXCLUDES), \
+ EXCLUDE_FILES:=$$($1_EXCLUDE_FILES)))
+
+ # Add zip to target list
+ $1 += $$($1_SRCZIP)
+ endif
+ endif # Source files found
+endef
+
+# Use this macro to find the correct target to depend on when the original
+# SetupJavaCompilation is declared in a different makefile, to avoid having
+# to declare and evaluate it again.
+# param 1 is for example BUILD_MYPACKAGE
+# param 2 is the output directory (BIN)
+define SetupJavaCompilationCompileTarget
+ $(if $(findstring yes, $(ENABLE_SJAVAC)), $(strip $2)/_the.$(strip $1)_pubapi, \
+ $(strip $2)/_the.$(strip $1)_batch)
+endef
+
+endif # _JAVA_COMPILATION_GMK
diff --git a/make/common/MakeBase.gmk b/make/common/MakeBase.gmk
new file mode 100644
index 0000000..ff8ced0
--- /dev/null
+++ b/make/common/MakeBase.gmk
@@ -0,0 +1,985 @@
+#
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+################################################################
+#
+# Setup common utility functions.
+#
+################################################################
+
+ifndef _MAKEBASE_GMK
+_MAKEBASE_GMK := 1
+
+ifeq ($(wildcard $(SPEC)),)
+ $(error MakeBase.gmk needs SPEC set to a proper spec.gmk)
+endif
+
+# By defining this pseudo target, make will automatically remove targets
+# if their recipe fails so that a rebuild is automatically triggered on the
+# next make invocation.
+.DELETE_ON_ERROR:
+
+################################################################################
+# Definitions for special characters
+################################################################################
+
+# When calling macros, the spaces between arguments are
+# often semantically important! Sometimes we need to subst
+# spaces and commas, therefore we need the following macros.
+X:=
+SPACE:=$(X) $(X)
+COMMA:=,
+DOLLAR:=$$
+HASH:=\#
+LEFT_PAREN:=(
+RIGHT_PAREN:=)
+SQUOTE:='
+#'
+DQUOTE:="
+#"
+define NEWLINE
+
+
+endef
+
+# In GNU Make 4.0 and higher, there is a file function for writing to files.
+ifeq (4.0, $(firstword $(sort 4.0 $(MAKE_VERSION))))
+ HAS_FILE_FUNCTION := true
+endif
+
+##############################
+# Functions
+##############################
+
+### Debug functions
+
+# Prints the name and value of a variable
+PrintVar = \
+ $(info $(strip $1) >$($(strip $1))<)
+
+### Functions for timers
+
+# Store the build times in this directory.
+BUILDTIMESDIR=$(OUTPUT_ROOT)/make-support/build-times
+
+# Record starting time for build of a sub repository.
+define RecordStartTime
+ $(DATE) '+%Y %m %d %H %M %S' | $(NAWK) '{ print $$1,$$2,$$3,$$4,$$5,$$6,($$4*3600+$$5*60+$$6) }' > $(BUILDTIMESDIR)/build_time_start_$(strip $1) && \
+ $(DATE) '+%Y-%m-%d %H:%M:%S' > $(BUILDTIMESDIR)/build_time_start_$(strip $1)_human_readable
+endef
+
+# Record ending time and calculate the difference and store it in a
+# easy to read format. Handles builds that cross midnight. Expects
+# that a build will never take 24 hours or more.
+define RecordEndTime
+ $(DATE) '+%Y %m %d %H %M %S' | $(NAWK) '{ print $$1,$$2,$$3,$$4,$$5,$$6,($$4*3600+$$5*60+$$6) }' > $(BUILDTIMESDIR)/build_time_end_$(strip $1)
+ $(DATE) '+%Y-%m-%d %H:%M:%S' > $(BUILDTIMESDIR)/build_time_end_$(strip $1)_human_readable
+ $(ECHO) `$(CAT) $(BUILDTIMESDIR)/build_time_start_$(strip $1)` `$(CAT) $(BUILDTIMESDIR)/build_time_end_$(strip $1)` $1 | \
+ $(NAWK) '{ F=$$7; T=$$14; if (F > T) { T+=3600*24 }; D=T-F; H=int(D/3600); \
+ M=int((D-H*3600)/60); S=D-H*3600-M*60; printf("%02d:%02d:%02d %s\n",H,M,S,$$15); }' \
+ > $(BUILDTIMESDIR)/build_time_diff_$(strip $1)
+endef
+
+# Hook to be called when starting to execute a top-level target
+define TargetEnter
+ $(PRINTF) "## Starting $(patsubst %-only,%,$@)\n"
+ $(call RecordStartTime,$(patsubst %-only,%,$@))
+endef
+
+# Hook to be called when finish executing a top-level target
+define TargetExit
+ $(call RecordEndTime,$(patsubst %-only,%,$@))
+ $(PRINTF) "## Finished $(patsubst %-only,%,$@) (build time %s)\n\n" \
+ "`$(CAT) $(BUILDTIMESDIR)/build_time_diff_$(patsubst %-only,%,$@) | $(CUT) -f 1 -d ' '`"
+endef
+
+################################################################################
+# This macro translates $ into \$ to protect the $ from expansion in the shell.
+# To make this macro resilient against already escaped strings, first remove
+# any present escapes before escaping so that no double escapes are added.
+EscapeDollar = $(subst $$,\$$,$(subst \$$,$$,$(strip $1)))
+
+################################################################################
+# This macro works just like EscapeDollar above, but for #.
+EscapeHash = $(subst \#,\\\#,$(subst \\\#,\#,$(strip $1)))
+
+################################################################################
+# This macro translates $ into $$ to protect the string from make itself.
+DoubleDollar = $(subst $$,$$$$,$(strip $1))
+
+################################################################################
+# ListPathsSafely can be used to print command parameters to a file. This is
+# typically done if the command line lenght risk being too long for the
+# OS/shell. In later make versions, the file function can be used for this
+# purpose. For earlier versions, a more complex implementation is provided.
+#
+# The function ListPathsSafely can be called either directly or, more commonly
+# from a recipe line. If called from a recipe, it will be executed in the
+# evaluation phase of that recipe, which means that it will write to the file
+# before any other line in the recipe has been run.
+ifeq ($(HAS_FILE_FUNCTION), true)
+ # Param 1 - Name of variable containing paths/arguments to output
+ # Param 2 - File to print to
+ # Param 3 - Set to true to append to file instead of overwriting
+ define ListPathsSafely
+ $$(call MakeDir, $$(dir $$(strip $2)))
+ $$(file $$(if $$(filter true, $$(strip $3)),>>,>) \
+ $$(strip $2),$$(subst $$(SPACE),$$(NEWLINE),$$(strip $$($$(strip $1)))))
+ endef
+
+else # HAS_FILE_FUNCTION = false
+
+ $(eval compress_paths = \
+ $(strip $(shell $(CAT) $(SRC_ROOT)/make/common/support/ListPathsSafely-pre-compress.incl)))
+ compress_paths += \
+ $(subst $(SRC_ROOT),X97, \
+ $(subst $(OUTPUT_ROOT),X98, \
+ $(subst X,X00, \
+ $(subst $(SPACE),\n,$(strip $1)))))
+ $(eval compress_paths += \
+ $(strip $(shell $(CAT) $(SRC_ROOT)/make/common/support/ListPathsSafely-post-compress.incl)))
+
+ decompress_paths=$(SED) -f $(SRC_ROOT)/make/common/support/ListPathsSafely-uncompress.sed \
+ -e 's|X99|\\n|g' \
+ -e 's|X98|$(OUTPUT_ROOT)|g' -e 's|X97|$(SRC_ROOT)|g' \
+ -e 's|X00|X|g'
+
+ ListPathsSafely_IfPrintf = \
+ $(if $(word $3,$($(strip $1))), \
+ $(shell $(PRINTF) -- "$(strip $(call EscapeDollar, \
+ $(call compress_paths, $(wordlist $3,$4,$($(strip $1))))))\n" \
+ | $(decompress_paths) >> $2))
+
+ # Param 1 - Name of variable containing paths/arguments to output
+ # Param 2 - File to print to
+ # Param 3 - Set to true to append to file instead of overwriting
+ define ListPathsSafely
+ ifneq (,$$(word 30001,$$($$(strip $1))))
+ $$(error Cannot list safely more than 30000 paths. $1 has $$(words $$($$(strip $1))) paths!)
+ endif
+ $$(call MakeDir, $$(dir $2))
+ ifneq ($$(strip $3), true)
+ $$(shell $(RM) $$(strip $2))
+ endif
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,1,250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,251,500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,501,750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,751,1000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,1001,1250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,1251,1500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,1501,1750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,1751,2000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,2001,2250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,2251,2500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,2501,2750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,2751,3000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,3001,3250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,3251,3500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,3501,3750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,3751,4000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,4001,4250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,4251,4500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,4501,4750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,4751,5000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,5001,5250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,5251,5500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,5501,5750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,5751,6000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,6001,6250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,6251,6500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,6501,6750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,6751,7000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,7001,7250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,7251,7500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,7501,7750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,7751,8000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,8001,8250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,8251,8500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,8501,8750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,8751,9000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,9001,9250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,9251,9500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,9501,9750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,9751,10000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,10001,10250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,10251,10500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,10501,10750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,10751,11000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,11001,11250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,11251,11500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,11501,11750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,11751,12000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,12001,12250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,12251,12500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,12501,12750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,12751,13000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,13001,13250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,13251,13500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,13501,13750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,13751,14000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,14001,14250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,14251,14500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,14501,14750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,14751,15000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,15001,15250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,15251,15500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,15501,15750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,15751,16000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,16001,16250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,16251,16500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,16501,16750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,16751,17000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,17001,17250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,17251,17500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,17501,17750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,17751,18000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,18001,18250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,18251,18500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,18501,18750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,18751,19000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,19001,19250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,19251,19500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,19501,19750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,19751,20000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,20001,20250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,20251,20500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,20501,20750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,20751,21000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,21001,21250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,21251,21500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,21501,21750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,21751,22000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,22001,22250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,22251,22500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,22501,22750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,22751,23000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,23001,23250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,23251,23500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,23501,23750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,23751,24000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,24001,24250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,24251,24500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,24501,24750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,24751,25000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,25001,25250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,25251,25500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,25501,25750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,25751,26000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,26001,26250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,26251,26500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,26501,26750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,26751,27000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,27001,27250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,27251,27500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,27501,27750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,27751,28000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,28001,28250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,28251,28500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,28501,28750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,28751,29000)
+
+ $$(call ListPathsSafely_IfPrintf,$1,$2,29001,29250)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,29251,29500)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,29501,29750)
+ $$(call ListPathsSafely_IfPrintf,$1,$2,29751,30000)
+ endef
+endif # HAS_FILE_FUNCTION
+
+################################################################################
+
+# A file containing a way to uniquely identify the source code revision that
+# the build was created from
+SOURCE_REVISION_TRACKER := $(SUPPORT_OUTPUTDIR)/src-rev/source-revision-tracker
+
+# Locate all hg repositories included in the forest, as absolute paths
+FindAllReposAbs = \
+ $(strip $(sort $(dir $(filter-out $(SRC_ROOT)/build/%, $(wildcard \
+ $(addprefix $(SRC_ROOT)/, .hg */.hg */*/.hg */*/*/.hg) \
+ )))))
+
+# Locate all hg repositories included in the forest, as relative paths
+FindAllReposRel = \
+ $(strip $(subst $(SRC_ROOT)/,.,$(patsubst $(SRC_ROOT)/%/, %, $(FindAllReposAbs))))
+
+################################################################################
+
+define SetupLogging
+ ifeq ($$(LOG_LEVEL), trace)
+ # Shell redefinition trick inspired by http://www.cmcrossroads.com/ask-mr-make/6535-tracing-rule-execution-in-gnu-make
+ # For each target executed, will print
+ # Building <TARGET> (from <FIRST PREREQUISITE>) (<ALL NEWER PREREQUISITES> newer)
+ # but with a limit of 20 on <ALL NEWER PREREQUISITES>, to avoid cluttering logs too much
+ # (and causing a crash on Cygwin).
+ # Default shell seems to always be /bin/sh. Must override with bash to get this to work on Solaris.
+ # Only use time if it's GNU time which supports format and output file.
+ WRAPPER_SHELL := $$(BASH) $$(SRC_ROOT)/common/bin/shell-tracer.sh $$(if $$(findstring yes,$$(IS_GNU_TIME)),$$(TIME),-) $$(OUTPUT_ROOT)/build-trace-time.log $$(SHELL)
+ SHELL = $$(warning $$(if $$@,Building $$@,Running shell command) $$(if $$<, (from $$<))$$(if $$?, ($$(wordlist 1, 20, $$?) $$(if $$(wordlist 21, 22, $$?), ... [in total $$(words $$?) files]) newer)))$$(WRAPPER_SHELL)
+ endif
+ # The warn level can never be turned off
+ LogWarn = $$(info $$(strip $$1))
+ LOG_WARN :=
+ ifneq ($$(findstring $$(LOG_LEVEL), info debug trace),)
+ LogInfo = $$(info $$(strip $$1))
+ LOG_INFO :=
+ else
+ LogInfo =
+ LOG_INFO := > /dev/null
+ endif
+ ifneq ($$(findstring $$(LOG_LEVEL), debug trace),)
+ LogDebug = $$(info $$(strip $$1))
+ LOG_DEBUG :=
+ else
+ LogDebug =
+ LOG_DEBUG := > /dev/null
+ endif
+ ifneq ($$(findstring $$(LOG_LEVEL), trace),)
+ LogTrace = $$(info $$(strip $$1))
+ LOG_TRACE :=
+ else
+ LogTrace =
+ LOG_TRACE := > /dev/null
+ endif
+endef
+
+# Make sure logging is setup for everyone that includes MakeBase.gmk.
+$(eval $(call SetupLogging))
+
+################################################################################
+# Creates a sequence of increasing numbers (inclusive).
+# Param 1 - starting number
+# Param 2 - ending number
+sequence = \
+ $(wordlist $1, $2, $(strip \
+ $(eval SEQUENCE_COUNT :=) \
+ $(call _sequence-do,$(strip $2))))
+
+_sequence-do = \
+ $(if $(word $1, $(SEQUENCE_COUNT)),, \
+ $(eval SEQUENCE_COUNT += .) \
+ $(words $(SEQUENCE_COUNT)) \
+ $(call _sequence-do,$1))
+
+################################################################################
+
+MAX_PARAMS := 35
+PARAM_SEQUENCE := $(call sequence, 2, $(MAX_PARAMS))
+
+# Template for creating a macro taking named parameters. To use it, assign the
+# template to a variable with the name you want for your macro, using '='
+# assignment. Then define a macro body with the suffix "Body". The Body macro
+# should take 1 parameter which should be a unique string for that invocation
+# of the macro.
+# Ex:
+# SetupFoo = $(NamedParamsMacroTemplate)
+# define SetupFooBody
+# # do something
+# # access parameters as $$($1_BAR)
+# endef
+# Call it like this
+# $(eval $(call SetupFoo, BUILD_SOMETHING, \
+# BAR := some parameter value, \
+# ))
+define NamedParamsMacroTemplate
+ $(if $($(MAX_PARAMS)),$(error Internal makefile error: \
+ Too many named arguments to macro, please update MAX_PARAMS in MakeBase.gmk))
+ # Iterate over 2 3 4... and evaluate the named parameters with $1_ as prefix
+ $(foreach i,$(PARAM_SEQUENCE), $(if $(strip $($i)),\
+ $(strip $1)_$(strip $(call EscapeHash, $(call DoubleDollar, $($i))))$(NEWLINE)))
+ # Debug print all named parameter names and values
+ $(if $(findstring $(LOG_LEVEL),debug trace), \
+ $(info $0 $(strip $1) $(foreach i,$(PARAM_SEQUENCE), \
+ $(if $(strip $($i)),$(NEWLINE) $(strip [$i] $(if $(filter $(LOG_LEVEL), trace), \
+ $($i), $(wordlist 1, 20, $($(i))) $(if $(word 21, $($(i))), ...)))))))
+
+ $(if $(DEBUG_$(strip $1)),
+ $(info -------- <<< Begin expansion of $(strip $1)) \
+ $(info $(call $(0)Body,$(strip $1))) \
+ $(info -------- >>> End expansion of $(strip $1)) \
+ )
+
+ $(call $(0)Body,$(strip $1))
+endef
+
+################################################################################
+# Make directory without forking mkdir if not needed
+# 1: List of directories to create
+MakeDir = \
+ $(strip \
+ $(eval MakeDir_dirs_to_make := $(strip $(foreach d, $1, $(if $(wildcard $d), , $d)))) \
+ $(if $(MakeDir_dirs_to_make), $(shell $(MKDIR) -p $(MakeDir_dirs_to_make))) \
+ )
+
+################################################################################
+# Assign a variable only if it is empty
+# Param 1 - Variable to assign
+# Param 2 - Value to assign
+SetIfEmpty = \
+ $(if $($(strip $1)),,$(eval $(strip $1) := $2))
+
+################################################################################
+
+ifeq ($(OPENJDK_TARGET_OS),solaris)
+ # On Solaris, if the target is a symlink and exists, cp won't overwrite.
+ # Cp has to operate in recursive mode to allow for -P flag, to preserve soft links. If the
+ # name of the target file differs from the source file, rename after copy.
+ # If the source and target parent directories are the same, recursive copy doesn't work
+ # so we fall back on regular copy, which isn't preserving symlinks.
+ define install-file
+ $(MKDIR) -p '$(@D)'
+ $(RM) '$@'
+ if [ "$(@D)" != "$(<D)" ]; then \
+ $(CP) -f -r -P '$<' '$(@D)'; \
+ if [ "$(@F)" != "$(<F)" ]; then \
+ $(MV) '$(@D)/$(<F)' '$@'; \
+ fi; \
+ else \
+ if [ -L '$<' ]; then \
+ $(ECHO) "Source file is a symlink and target is in the same directory: $< $@" ; \
+ exit 1; \
+ fi; \
+ $(CP) -f '$<' '$@'; \
+ fi
+ endef
+else ifeq ($(OPENJDK_TARGET_OS),macosx)
+ # On mac, extended attributes sometimes creep into the source files, which may later
+ # cause the creation of ._* files which confuses testing. Clear these with xattr if
+ # set. Some files get their write permissions removed after being copied to the
+ # output dir. When these are copied again to images, xattr would fail. By only clearing
+ # attributes when they are present, failing on this is avoided.
+ #
+ # If copying a soft link to a directory, need to delete the target first to avoid
+ # weird errors.
+ define install-file
+ $(MKDIR) -p '$(@D)'
+ $(RM) '$@'
+ $(CP) -fRP '$<' '$@'
+ if [ -n "`$(XATTR) -l '$@'`" ]; then $(XATTR) -c '$@'; fi
+ endef
+else
+ define install-file
+ $(call MakeDir, $(@D))
+ $(CP) -fP '$<' '$@'
+ endef
+endif
+
+# Variant of install file that does not preserve symlinks
+define install-file-nolink
+ $(call MakeDir, $(@D))
+ $(CP) -f '$<' '$@'
+endef
+
+################################################################################
+# Take two paths and return the path of the last common directory.
+# Ex: /foo/bar/baz, /foo/bar/banan -> /foo/bar
+# foo/bar/baz, /foo/bar -> <empty>
+#
+# The x prefix is used to preserve the presence of the initial slash
+#
+# $1 - Path to compare
+# $2 - Other path to compare
+FindCommonPathPrefix = \
+ $(patsubst x%,%,$(subst $(SPACE),/,$(strip \
+ $(call FindCommonPathPrefixHelper, \
+ $(subst /,$(SPACE),x$(strip $1)), $(subst /,$(SPACE),x$(strip $2))) \
+ )))
+
+FindCommonPathPrefixHelper = \
+ $(if $(call equals, $(firstword $1), $(firstword $2)), \
+ $(firstword $1) \
+ $(call FindCommonPathPrefixHelper, \
+ $(wordlist 2, $(words $1), $1), $(wordlist 2, $(words $2), $2) \
+ ) \
+ )
+
+# Convert a partial path into as many directory levels of ../, removing
+# leading and following /.
+# Ex: foo/bar/baz/ -> ../../..
+# foo/bar -> ../..
+# /foo -> ..
+DirToDotDot = \
+ $(subst $(SPACE),/,$(foreach d, $(subst /,$(SPACE),$1),..))
+
+# Computes the relative path from a directory to a file
+# $1 - File to compute the relative path to
+# $2 - Directory to compute the relative path from
+RelativePath = \
+ $(eval $1_prefix := $(call FindCommonPathPrefix, $1, $2)) \
+ $(eval $1_dotdots := $(call DirToDotDot, $(patsubst $($(strip $1)_prefix)/%, %, $2))) \
+ $(eval $1_suffix := $(patsubst $($(strip $1)_prefix)/%, %, $1)) \
+ $($(strip $1)_dotdots)/$($(strip $1)_suffix)
+
+################################################################################
+# link-file-* works similarly to install-file but creates a symlink instead.
+# There are two versions, either creating a relative or an absolute link. Be
+# careful when using this on Windows since the symlink created is only valid in
+# the unix emulation environment.
+define link-file-relative
+ $(call MakeDir, $(@D))
+ $(RM) $@
+ $(LN) -s $(call RelativePath, $<, $(@D)) $@
+endef
+
+define link-file-absolute
+ $(call MakeDir, $(@D))
+ $(RM) $@
+ $(LN) -s $< $@
+endef
+
+################################################################################
+# Filter out duplicate sub strings while preserving order. Keeps the first occurance.
+uniq = \
+ $(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1)))
+
+# Returns all whitespace-separated words in $2 where at least one of the
+# whitespace-separated words in $1 is a substring.
+containing = \
+ $(strip \
+ $(foreach v,$(strip $2),\
+ $(call uniq,$(foreach p,$(strip $1),$(if $(findstring $p,$v),$v)))))
+
+# Returns all whitespace-separated words in $2 where none of the
+# whitespace-separated words in $1 is a substring.
+not-containing = \
+ $(strip $(filter-out $(call containing,$1,$2),$2))
+
+# Return a list of all string elements that are duplicated in $1.
+dups = \
+ $(strip $(foreach v, $(sort $1), $(if $(filter-out 1, \
+ $(words $(filter $v, $1))), $v)))
+
+# String equals
+equals = \
+ $(and $(findstring $(strip $1),$(strip $2)),\
+ $(findstring $(strip $2),$(strip $1)))
+
+# Remove a whole list of prefixes
+# $1 - List of prefixes
+# $2 - List of elements to process
+remove-prefixes = \
+ $(strip $(if $1,$(patsubst $(firstword $1)%,%,\
+ $(call remove-prefixes,$(filter-out $(firstword $1),$1),$2)),$2))
+
+# Convert the string given to upper case, without any $(shell)
+# Inspired by http://lists.gnu.org/archive/html/help-make/2013-09/msg00009.html
+uppercase_table := a,A b,B c,C d,D e,E f,F g,G h,H i,I j,J k,K l,L m,M n,N o,O \
+ p,P q,Q r,R s,S t,T u,U v,V w,W x,X y,Y z,Z
+
+uppercase_internal = \
+ $(if $(strip $1), $$(subst $(firstword $1), $(call uppercase_internal, \
+ $(wordlist 2, $(words $1), $1), $2)), $2)
+
+# Convert a string to upper case. Works only on a-z.
+# $1 - The string to convert
+uppercase = \
+ $(strip \
+ $(eval uppercase_result := $(call uppercase_internal, $(uppercase_table), $1)) \
+ $(uppercase_result) \
+ )
+
+################################################################################
+
+ifneq ($(DISABLE_CACHE_FIND), true)
+ # In Cygwin, finds are very costly, both because of expensive forks and because
+ # of bad file system caching. Find is used extensively in $(shell) commands to
+ # find source files. This makes rerunning make with no or few changes rather
+ # expensive. To speed this up, these two macros are used to cache the results
+ # of simple find commands for reuse.
+ #
+ # Runs a find and stores both the directories where it was run and the results.
+ # This macro can be called multiple times to add to the cache. Only finds files
+ # with no filters.
+ #
+ # Needs to be called with $(eval )
+ #
+ # Even if the performance benifit is negligible on other platforms, keep the
+ # functionality active unless explicitly disabled to exercise it more.
+ #
+ # Initialize FIND_CACHE_DIRS with := to make it a non recursively-expanded variable
+ FIND_CACHE_DIRS :=
+ # Param 1 - Dirs to find in
+ # Param 2 - (optional) specialization. Normally "-a \( ... \)" expression.
+ define FillCacheFind
+ # Filter out already cached dirs. The - is needed when FIND_CACHE_DIRS is empty
+ # since filter out will then return empty.
+ FIND_CACHE_NEW_DIRS := $$(filter-out $$(addsuffix /%,\
+ - $(FIND_CACHE_DIRS)) $(FIND_CACHE_DIRS), $1)
+ ifneq ($$(FIND_CACHE_NEW_DIRS), )
+ # Remove any trailing slash from dirs in the cache dir list
+ FIND_CACHE_DIRS += $$(patsubst %/,%, $$(FIND_CACHE_NEW_DIRS))
+ FIND_CACHE := $$(sort $$(FIND_CACHE) $$(shell $(FIND) $$(FIND_CACHE_NEW_DIRS) \( -type f -o -type l \) $2))
+ endif
+ endef
+
+ # Mimics find by looking in the cache if all of the directories have been cached.
+ # Otherwise reverts to shell find. This is safe to call on all platforms, even if
+ # cache is deactivated.
+ #
+ # $1 can be either a directory or a file. If it's a directory, make
+ # sure we have exactly one trailing slash before the wildcard.
+ # The extra - is needed when FIND_CACHE_DIRS is empty but should be harmless.
+ #
+ # Param 1 - Dirs to find in
+ # Param 2 - (optional) specialization. Normally "-a \( ... \)" expression.
+ define CacheFind
+ $(if $(filter-out $(addsuffix /%,- $(FIND_CACHE_DIRS)) $(FIND_CACHE_DIRS),$1), \
+ $(if $(wildcard $1), $(shell $(FIND) $1 \( -type f -o -type l \) $2)), \
+ $(filter $(addsuffix /%,$(patsubst %/,%,$1)) $1,$(FIND_CACHE)))
+ endef
+
+else
+ # If CacheFind is disabled, just run the find command.
+ # Param 1 - Dirs to find in
+ # Param 2 - (optional) specialization. Normally "-a \( ... \)" expression.
+ define CacheFind
+ $(shell $(FIND) $1 \( -type f -o -type l \) $2)
+ endef
+endif
+
+################################################################################
+
+define AddFileToCopy
+ # Helper macro for SetupCopyFiles
+ # 1 : Source file
+ # 2 : Dest file
+ # 3 : Variable to add targets to
+ # 4 : Macro to call for copy operation
+ # 5 : Action text to log
+ $2: $1
+ $$(call LogInfo, $(strip $5) $$(patsubst $(OUTPUT_ROOT)/%,%,$$@))
+ $$($$(strip $4))
+
+ $3 += $2
+endef
+
+# Returns the value of the first argument
+identity = \
+ $(strip $1)
+
+# Setup make rules for copying files, with an option to do more complex
+# processing instead of copying.
+#
+# Parameter 1 is the name of the rule. This name is used as variable prefix,
+# and the targets generated are listed in a variable by that name.
+#
+# Remaining parameters are named arguments. These include:
+# SRC : Source root dir (defaults to dir of first file)
+# DEST : Dest root dir
+# FILES : List of files to copy with absolute paths, or path relative to SRC.
+# Must be in SRC.
+# FLATTEN : Set to flatten the directory structure in the DEST dir.
+# MACRO : Optionally override the default macro used for making the copy.
+# Default is 'install-file'
+# NAME_MACRO : Optionally supply a macro that rewrites the target file name
+# based on the source file name
+# LOG_ACTION : Optionally specify a different action text for log messages
+SetupCopyFiles = $(NamedParamsMacroTemplate)
+define SetupCopyFilesBody
+
+ ifeq ($$($1_MACRO), )
+ $1_MACRO := install-file
+ endif
+
+ # Default SRC to the dir of the first file.
+ ifeq ($$($1_SRC), )
+ $1_SRC := $$(dir $$(firstword $$($1_FILES)))
+ endif
+
+ ifeq ($$($1_NAME_MACRO), )
+ $1_NAME_MACRO := identity
+ endif
+
+ ifeq ($$($1_LOG_ACTION), )
+ $1_LOG_ACTION := Copying
+ endif
+
+ # Remove any trailing slash from SRC and DEST
+ $1_SRC := $$(patsubst %/,%,$$($1_SRC))
+ $1_DEST := $$(patsubst %/,%,$$($1_DEST))
+
+ $$(foreach f, $$(patsubst $$($1_SRC)/%,%,$$($1_FILES)), \
+ $$(eval $$(call AddFileToCopy, $$($1_SRC)/$$f, \
+ $$($1_DEST)/$$(call $$(strip $$($1_NAME_MACRO)),$$(if $$($1_FLATTEN),$$(notdir $$f),$$f)), \
+ $1, $$($1_MACRO), $$($1_LOG_ACTION))))
+
+endef
+
+################################################################################
+# Parse a multiple-keyword variable, like FOO="KEYWORD1=val1;KEYWORD2=val2;..."
+# These will be converted into a series of variables like FOO_KEYWORD1=val1,
+# FOO_KEYWORD2=val2, etc. Unknown keywords will cause an error.
+#
+# Parameter 1 is the name of the rule, and is also the name of the variable.
+#
+# Remaining parameters are named arguments. These include:
+# KEYWORDS A list of valid keywords
+# STRING_KEYWORDS A list of valid keywords, processed as string. This means
+# that '%20' will be replaced by ' ' to allow for multi-word strings.
+#
+ParseKeywordVariable = $(NamedParamsMacroTemplate)
+define ParseKeywordVariableBody
+ ifneq ($$($1), )
+ # To preserve spaces, substitute them with a hopefully unique pattern
+ # before splitting and then re-substitute spaces back.
+ $1_MANGLED := $$(subst $$(SPACE),||||,$$($1))
+ $$(foreach mangled_part, $$(subst ;, , $$($1_MANGLED)), \
+ $$(eval mangled_part_eval := $$(call DoubleDollar, $$(mangled_part))) \
+ $$(eval part := $$$$(subst ||||,$$$$(SPACE),$$$$(mangled_part_eval))) \
+ $$(eval $1_NO_MATCH := true) \
+ $$(foreach keyword, $$($1_KEYWORDS), \
+ $$(eval keyword_eval := $$(call DoubleDollar, $$(keyword))) \
+ $$(if $$(filter $$(keyword)=%, $$(part)), \
+ $$(eval $(strip $1)_$$$$(keyword_eval) := $$$$(strip $$$$(patsubst $$$$(keyword_eval)=%, %, $$$$(part)))) \
+ $$(eval $1_NO_MATCH := ) \
+ ) \
+ ) \
+ $$(foreach keyword, $$($1_STRING_KEYWORDS), \
+ $$(eval keyword_eval := $$(call DoubleDollar, $$(keyword))) \
+ $$(if $$(filter $$(keyword)=%, $$(part)), \
+ $$(eval $(strip $1)_$$$$(keyword_eval) := $$$$(strip $$$$(subst %20, , $$$$(patsubst $$$$(keyword_eval)=%, %, $$$$(part))))) \
+ $$(eval $1_NO_MATCH := ) \
+ ) \
+ ) \
+ $$(if $$($1_NO_MATCH), \
+ $$(if $$(filter $$(part), $$($1_KEYWORDS) $$($1_STRING_KEYWORDS)), \
+ $$(info Keyword $$(part) for $1 needs to be assigned a value.) \
+ , \
+ $$(info $$(part) is not a valid keyword for $1.) \
+ $$(info Valid keywords: $$($1_KEYWORDS) $$($1_STRING_KEYWORDS).) \
+ ) \
+ $$(error Cannot continue) \
+ ) \
+ )
+ endif
+endef
+
+################################################################################
+# ShellQuote
+#
+# Quotes a string with single quotes and replaces single quotes with '\'' so
+# that the contents survives being given to the shell.
+
+ShellQuote = \
+ $(SQUOTE)$(subst $(SQUOTE),$(SQUOTE)\$(SQUOTE)$(SQUOTE),$(strip $1))$(SQUOTE)
+
+################################################################################
+# FixPath
+#
+# On Windows, converts a path from cygwin/unix style (e.g. /bin/foo) into
+# "mixed mode" (e.g. c:/cygwin/bin/foo). On other platforms, return the path
+# unchanged.
+# This is normally not needed since we use the FIXPATH prefix for command lines,
+# but might be needed in certain circumstances.
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ FixPath = \
+ $(shell $(CYGPATH) -m $1)
+else
+ FixPath = \
+ $1
+endif
+
+################################################################################
+# Write to and read from file
+
+# Param 1 - File to read
+ReadFile = \
+ $(shell $(CAT) $1)
+
+# Param 1 - Text to write
+# Param 2 - File to write to
+ifeq ($(HAS_FILE_FUNCTION), true)
+ WriteFile = \
+ $(file >$2,$(strip $1))
+else
+ # Use printf to get consistent behavior on all platforms.
+ WriteFile = \
+ $(shell $(PRINTF) "%s" $(call ShellQuote, $1) > $2)
+endif
+
+################################################################################
+# DependOnVariable
+#
+# This macro takes a variable name and puts the value in a file only if the
+# value has changed since last. The name of the file is returned. This can be
+# used to create rule dependencies on make variable values. The following
+# example would get rebuilt if the value of SOME_VAR was changed:
+#
+# path/to/some-file: $(call DependOnVariable, SOME_VAR)
+# echo $(SOME_VAR) > $@
+#
+# Note that leading and trailing white space in the value is ignored.
+#
+
+# Defines the sub directory structure to store variable value file in
+DependOnVariableDirName = \
+ $(strip $(addsuffix $(if $(MODULE),/$(MODULE)), \
+ $(subst $(SRC_ROOT)/,, $(if $(filter /%, $(firstword $(MAKEFILE_LIST))), \
+ $(firstword $(MAKEFILE_LIST)), \
+ $(CURDIR)/$(firstword $(MAKEFILE_LIST))))))
+
+# Defines the name of the file to store variable value in. Generates a name
+# unless parameter 2 is given.
+# Param 1 - Name of variable
+# Param 2 - (optional) name of file to store value in
+DependOnVariableFileName = \
+ $(strip $(if $(strip $2), $2, \
+ $(MAKESUPPORT_OUTPUTDIR)/vardeps/$(DependOnVariableDirName)/$(strip $1).vardeps))
+
+# Does the actual work with parameters stripped.
+# If the file exists AND the contents is the same as the variable, do nothing
+# else print a new file.
+# Always returns the name of the file where the value was printed.
+# Param 1 - Name of variable
+# Param 2 - (optional) name of file to store value in
+DependOnVariableHelper = \
+ $(strip \
+ $(eval -include $(call DependOnVariableFileName, $1, $2)) \
+ $(if $(call equals, $(strip $($1)), $(strip $($1_old))),,\
+ $(call MakeDir, $(dir $(call DependOnVariableFileName, $1, $2))) \
+ $(if $(findstring $(LOG_LEVEL), trace), \
+ $(info NewVariable $1: >$(strip $($1))<) \
+ $(info OldVariable $1: >$(strip $($1_old))<)) \
+ $(call WriteFile, $1_old:=$(call DoubleDollar,$(call EscapeHash,$($1))), \
+ $(call DependOnVariableFileName, $1, $2))) \
+ $(call DependOnVariableFileName, $1, $2) \
+ )
+
+# Main macro
+# Param 1 - Name of variable
+# Param 2 - (optional) name of file to store value in
+DependOnVariable = \
+ $(call DependOnVariableHelper,$(strip $1),$(strip $2))
+
+# LogCmdlines is only intended to be used by ExecuteWithLog
+ifeq ($(LOG_CMDLINES), true)
+ LogCmdlines = $(info $(strip $1))
+else
+ LogCmdlines =
+endif
+
+################################################################################
+# ExecuteWithLog will run a command and log the output appropriately. This is
+# meant to be used by commands that do "real" work, like a compilation.
+# The output is stored in a specified log file, which is displayed at the end
+# of the build in case of failure. The command line itself is stored in a file,
+# and also logged to stdout if the LOG=cmdlines option has been given.
+#
+# NOTE: If the command redirects stdout, the caller needs to wrap it in a
+# subshell (by adding parentheses around it), otherwise the redirect to the
+# subshell tee process will create a race condition where the target file may
+# not be fully written when the make recipe is done.
+#
+# Param 1 - The path to base the name of the log file / command line file on
+# Param 2 - The command to run
+ExecuteWithLog = \
+ $(call LogCmdlines, Exececuting: [$(strip $2)]) \
+ $(call WriteFile, $2, $(strip $1).cmdline) \
+ ( $(strip $2) > >($(TEE) $(strip $1).log) 2> >($(TEE) $(strip $1).log >&2) || \
+ ( exitcode=$(DOLLAR)? && \
+ $(CP) $(strip $1).log $(MAKESUPPORT_OUTPUTDIR)/failure-logs/$(subst /,_,$(patsubst $(BUILD_OUTPUT)/%,%,$(strip $1))).log && \
+ $(CP) $(strip $1).cmdline $(MAKESUPPORT_OUTPUTDIR)/failure-logs/$(subst /,_,$(patsubst $(BUILD_OUTPUT)/%,%,$(strip $1))).cmdline && \
+ exit $(DOLLAR)exitcode ) )
+
+################################################################################
+# Find lib dir for module
+# Param 1 - module name
+FindLibDirForModule = \
+ $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)
+
+################################################################################
+# Return a string suitable for use after a -classpath or --module-path option. It
+# will be correct and safe to use on all platforms. Arguments are given as space
+# separate classpath entries. Safe for multiple nested calls.
+# param 1 : A space separated list of classpath entries
+# The surrounding strip is needed to keep additional whitespace out
+PathList = \
+ "$(subst $(SPACE),$(PATH_SEP),$(strip $(subst $(DQUOTE),,$1)))"
+
+################################################################################
+# Check if a specified hotspot variant is being built, or at least one of a
+# list of variants. Will return 'true' or 'false'.
+# $1 - the variant to test for
+check-jvm-variant = \
+ $(strip \
+ $(if $(filter-out $(VALID_JVM_VARIANTS), $1), \
+ $(error Internal error: Invalid variant tested: $1)) \
+ $(if $(filter $1, $(JVM_VARIANTS)), true, false))
+
+################################################################################
+# Converts a space separated list to a comma separated list.
+#
+# Replacing double-comma with a single comma is to workaround the issue with
+# some version of make on windows that doesn't substitute spaces with one comma
+# properly.
+CommaList = \
+ $(strip \
+ $(subst $(COMMA)$(COMMA),$(COMMA),$(subst $(SPACE),$(COMMA),$(strip $1))) \
+ )
+
+################################################################################
+# Converts a space separated list to a colon separated list.
+#
+# Replacing double-colon with a single colon is to workaround the issue with
+# some version of make on windows that doesn't substitute spaces with one colon
+# properly.
+ColonList = \
+ $(strip \
+ $(subst ::,:,$(subst $(SPACE),:,$(strip $1))) \
+ )
+
+################################################################################
+
+# Hook to include the corresponding custom file, if present.
+$(eval $(call IncludeCustomExtension, , common/MakeBase.gmk))
+
+endif # _MAKEBASE_GMK
diff --git a/make/common/Modules.gmk b/make/common/Modules.gmk
new file mode 100644
index 0000000..9bbcf6c
--- /dev/null
+++ b/make/common/Modules.gmk
@@ -0,0 +1,450 @@
+#
+# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+ifndef _MODULES_GMK
+_MODULES_GMK := 1
+
+################################################################################
+#
+# BOOT_MODULES are modules defined by the boot loader
+# PLATFORM_MODULES are modules defined by the platform loader
+# JRE_TOOL_MODULES are tools included in JRE and defined by the application loader
+#
+# All other modules not declared below are defined by the application loader
+# and are not included in JRE.
+
+BOOT_MODULES :=
+PLATFORM_MODULES :=
+JRE_TOOL_MODULES :=
+UPGRADEABLE_MODULES :=
+AGGREGATOR_MODULES :=
+DOCS_MODULES :=
+
+# Hook to include the corresponding custom file, if present.
+$(eval $(call IncludeCustomExtension, , common/Modules.gmk))
+
+BOOT_MODULES += \
+ java.base \
+ java.datatransfer \
+ java.desktop \
+ java.instrument \
+ java.logging \
+ java.management \
+ java.management.rmi \
+ java.naming \
+ java.prefs \
+ java.rmi \
+ java.security.sasl \
+ java.xml \
+ jdk.httpserver \
+ jdk.internal.vm.ci \
+ jdk.management \
+ jdk.management.agent \
+ jdk.net \
+ jdk.sctp \
+ jdk.unsupported \
+ #
+
+# to be deprivileged
+BOOT_MODULES += \
+ jdk.naming.rmi \
+ #
+
+# Modules that directly or indirectly requiring upgradeable modules
+# should carefully be considered if it should be upgradeable or not.
+UPGRADEABLE_MODULES += \
+ java.activation \
+ java.compiler \
+ java.corba \
+ java.transaction \
+ java.xml.bind \
+ java.xml.ws \
+ java.xml.ws.annotation \
+ jdk.internal.vm.compiler \
+ #
+
+UPGRADEABLE_TOOL_MODULES += \
+ jdk.xml.bind \
+ jdk.xml.ws \
+ #
+
+AGGREGATOR_MODULES += \
+ java.se \
+ java.se.ee \
+ #
+
+PLATFORM_MODULES += \
+ $(UPGRADEABLE_MODULES) \
+ $(AGGREGATOR_MODULES)
+ #
+
+PLATFORM_MODULES += \
+ java.scripting \
+ java.security.jgss \
+ java.smartcardio \
+ java.sql \
+ java.sql.rowset \
+ java.xml.crypto \
+ jdk.accessibility \
+ jdk.charsets \
+ jdk.crypto.cryptoki \
+ jdk.crypto.ec \
+ jdk.dynalink \
+ jdk.incubator.httpclient \
+ jdk.jsobject \
+ jdk.localedata \
+ jdk.naming.dns \
+ jdk.scripting.nashorn \
+ jdk.security.auth \
+ jdk.security.jgss \
+ jdk.xml.dom \
+ jdk.zipfs \
+ #
+
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ PLATFORM_MODULES += jdk.crypto.mscapi
+endif
+
+ifeq ($(OPENJDK_TARGET_OS), solaris)
+ PLATFORM_MODULES += jdk.crypto.ucrypto
+endif
+
+JRE_TOOL_MODULES += \
+ jdk.jdwp.agent \
+ jdk.pack \
+ jdk.scripting.nashorn.shell \
+ #
+
+################################################################################
+
+# DOCS_MODULES defines the root modules for javadoc generation.
+# All of their `require transitive` modules directly and indirectly will be included.
+DOCS_MODULES += \
+ java.se.ee \
+ java.smartcardio \
+ jdk.accessibility \
+ jdk.attach \
+ jdk.charsets \
+ jdk.compiler \
+ jdk.crypto.cryptoki \
+ jdk.crypto.ec \
+ jdk.dynalink \
+ jdk.editpad \
+ jdk.hotspot.agent \
+ jdk.httpserver \
+ jdk.incubator.httpclient \
+ jdk.jartool \
+ jdk.javadoc \
+ jdk.jcmd \
+ jdk.jconsole \
+ jdk.jdeps \
+ jdk.jdi \
+ jdk.jdwp.agent \
+ jdk.jlink \
+ jdk.jsobject \
+ jdk.jshell \
+ jdk.jstatd \
+ jdk.localedata \
+ jdk.management \
+ jdk.management.agent \
+ jdk.naming.dns \
+ jdk.naming.rmi \
+ jdk.net \
+ jdk.pack \
+ jdk.policytool \
+ jdk.rmic \
+ jdk.scripting.nashorn \
+ jdk.sctp \
+ jdk.security.auth \
+ jdk.security.jgss \
+ jdk.xml.dom \
+ jdk.zipfs \
+ #
+
+# These modules are included in the interim image which is used to run profiling
+# before building the real images.
+INTERIM_IMAGE_MODULES := java.base java.logging
+
+################################################################################
+# Some platforms don't have the serviceability agent
+
+ifeq ($(INCLUDE_SA), false)
+ MODULES_FILTER += jdk.hotspot.agent
+endif
+
+################################################################################
+# Filter out Graal specific modules if Graal build is disabled
+
+ifeq ($(INCLUDE_GRAAL), false)
+ MODULES_FILTER += jdk.internal.vm.compiler
+endif
+
+################################################################################
+# Filter out aot specific modules if aot is disabled
+
+ifeq ($(ENABLE_AOT), false)
+ MODULES_FILTER += jdk.aot
+endif
+
+################################################################################
+# Module list macros
+
+# Use append so that the custom extension may add to these variables
+
+GENERATED_SRC_DIRS += \
+ $(SUPPORT_OUTPUTDIR)/gensrc \
+ #
+
+TOP_SRC_DIRS += \
+ $(CORBA_TOPDIR)/src \
+ $(HOTSPOT_TOPDIR)/src \
+ $(JDK_TOPDIR)/src \
+ $(LANGTOOLS_TOPDIR)/src \
+ $(JAXP_TOPDIR)/src \
+ $(JAXWS_TOPDIR)/src \
+ $(NASHORN_TOPDIR)/src \
+ #
+
+SRC_SUBDIRS += $(OPENJDK_TARGET_OS)/classes
+ifneq ($(OPENJDK_TARGET_OS), $(OPENJDK_TARGET_OS_TYPE))
+ SRC_SUBDIRS += $(OPENJDK_TARGET_OS_TYPE)/classes
+endif
+SRC_SUBDIRS += share/classes
+
+SPEC_SUBDIRS += share/specs
+
+# Find all module-info.java files for the current build target platform and
+# configuration.
+# Param 1 - Module to find for, set to * for finding all
+FindAllModuleInfos = \
+ $(wildcard \
+ $(foreach sub, $(SRC_SUBDIRS), \
+ $(patsubst %,%/$(strip $1)/$(sub)/module-info.java, $(TOP_SRC_DIRS))) \
+ $(patsubst %,%/$(strip $1)/module-info.java, $(IMPORT_MODULES_SRC)))
+
+# Find module-info.java files in the specific source dir
+# Param 1 - Src dir to find module-info.java files in
+FindModuleInfosForSrcDir = \
+ $(wildcard \
+ $(foreach sub, $(SRC_SUBDIRS), \
+ $(patsubst %,%/*/$(sub)/module-info.java, $(strip $1)) \
+ ) \
+ $(patsubst %,%/*/module-info.java, $(strip $1)) \
+ )
+
+# Extract the module names from the paths of module-info.java files. The
+# position of the module directory differs depending on if this is an imported
+# src dir or not.
+GetModuleNameFromModuleInfo = \
+ $(strip $(foreach mi, $1, \
+ $(if $(filter $(addsuffix %, $(IMPORT_MODULES_SRC)), $(mi)), \
+ $(notdir $(patsubst %/,%, $(dir $(mi)))), \
+ $(notdir $(patsubst %/,%, $(dir $(patsubst %/,%, $(dir $(patsubst %/,%, $(dir $(mi)))))))))))
+
+# Find all modules by looking for module-info.java files and looking at parent
+# directories.
+FindAllModules = \
+ $(sort $(filter-out $(MODULES_FILTER), \
+ $(call GetModuleNameFromModuleInfo, $(MODULE_INFOS))))
+
+# Find all modules in a specific src dir
+# Param 1 - Src dir to find modules in
+FindModulesForSrcDir = \
+ $(sort $(filter-out $(MODULES_FILTER), \
+ $(call GetModuleNameFromModuleInfo, $(call FindModuleInfosForSrcDir, $1)) \
+ ))
+
+FindImportedModules = \
+ $(filter-out $(MODULES_FILTER), \
+ $(if $(IMPORT_MODULES_CLASSES), $(notdir $(wildcard $(IMPORT_MODULES_CLASSES)/*))))
+
+# Find all source dirs for a particular module
+# $1 - Module to find source dirs for
+FindModuleSrcDirs = \
+ $(strip $(wildcard \
+ $(addsuffix /$(strip $1), $(GENERATED_SRC_DIRS) $(IMPORT_MODULES_SRC)) \
+ $(foreach sub, $(SRC_SUBDIRS), $(addsuffix /$(strip $1)/$(sub), $(TOP_SRC_DIRS)))))
+
+# Find all specs dirs for a particular module
+# $1 - Module to find specs dirs for
+FindModuleSpecsDirs = \
+ $(strip $(wildcard \
+ $(foreach sub, $(SPEC_SUBDIRS), $(addsuffix /$(strip $1)/$(sub), $(TOP_SRC_DIRS)))))
+
+# Construct the complete module source path
+GetModuleSrcPath = \
+ $(call PathList, \
+ $(addsuffix /*, $(GENERATED_SRC_DIRS) $(IMPORT_MODULES_SRC)) \
+ $(foreach sub, $(SRC_SUBDIRS), $(addsuffix /*/$(sub), $(TOP_SRC_DIRS))))
+
+################################################################################
+# Extract module dependencies from module-info.java files, both normal
+# dependencies ("requires"), and indirect exports ("requires transitive").
+
+MODULE_DEPS_MAKEFILE := $(MAKESUPPORT_OUTPUTDIR)/module-deps.gmk
+
+MODULE_INFOS := $(call FindAllModuleInfos, *)
+
+$(MODULE_DEPS_MAKEFILE): $(MODULE_INFOS) \
+ $(call DependOnVariable, MODULE_INFOS, $(MAKESUPPORT_OUTPUTDIR)/MODULE_INFOS.vardeps)
+ $(MKDIR) -p $(@D)
+ $(RM) $@
+ $(foreach m, $(MODULE_INFOS), \
+ ( $(PRINTF) "DEPS_$(call GetModuleNameFromModuleInfo, $m) :=" && \
+ $(NAWK) -v MODULE=$(call GetModuleNameFromModuleInfo, $m) '\
+ BEGIN { if (MODULE != "java.base") printf(" java.base"); } \
+ /^ *requires/ { sub(/;/, ""); \
+ sub(/requires/, ""); \
+ sub(/transitive/, ""); \
+ sub(/\/\/.*/, ""); \
+ sub(/\/\*.*\*\//, ""); \
+ gsub(/^ +\*.*/, ""); \
+ gsub(/ /, ""); \
+ printf(" %s", $$0) } \
+ END { printf("\n") }' $m && \
+ $(PRINTF) "TRANSITIVE_MODULES_$(call GetModuleNameFromModuleInfo, $m) :=" && \
+ $(NAWK) -v MODULE=$(call GetModuleNameFromModuleInfo, $m) '\
+ BEGIN { if (MODULE != "java.base") printf(" java.base"); } \
+ /^ *requires *transitive/ { \
+ sub(/;/, ""); \
+ sub(/requires/, ""); \
+ sub(/transitive/, ""); \
+ sub(/\/\/.*/, ""); \
+ sub(/\/\*.*\*\//, ""); \
+ gsub(/^ +\*.*/, ""); \
+ gsub(/ /, ""); \
+ printf(" %s", $$0) } \
+ END { printf("\n") }' $m \
+ ) >> $@ $(NEWLINE))
+
+-include $(MODULE_DEPS_MAKEFILE)
+
+# Find dependencies ("requires") for a given module.
+# Param 1: Module to find dependencies for.
+FindDepsForModule = \
+ $(DEPS_$(strip $1))
+
+# Find dependencies ("requires") transitively in 3 levels for a given module.
+# Param 1: Module to find dependencies for.
+FindTransitiveDepsForModule = \
+ $(sort $(call FindDepsForModule, $1) \
+ $(foreach m, $(call FindDepsForModule, $1), \
+ $(call FindDepsForModule, $m) \
+ $(foreach n, $(call FindDepsForModule, $m), \
+ $(call FindDepsForModule, $n))))
+
+# Find dependencies ("requires") transitively in 3 levels for a set of modules.
+# Param 1: List of modules to find dependencies for.
+FindTransitiveDepsForModules = \
+ $(sort $(foreach m, $1, $(call FindTransitiveDepsForModule, $m)))
+
+# Find indirect exported modules ("requires transitive") for a given module .
+# Param 1: Module to find indirect exported modules for.
+FindIndirectExportsForModule = \
+ $(TRANSITIVE_MODULES_$(strip $1))
+
+# Finds indirect exported modules transitively in 3 levels for a given module.
+# Param 1: Module to find indirect exported modules for.
+FindTransitiveIndirectDepsForModule = \
+ $(sort $(call FindIndirectExportsForModule, $1) \
+ $(foreach m, $(call FindIndirectExportsForModule, $1), \
+ $(call FindIndirectExportsForModule, $m) \
+ $(foreach n, $(call FindIndirectExportsForModule, $m), \
+ $(call FindIndirectExportsForModule, $n))))
+
+# Finds indirect exported modules transitively in 3 levels for a set of modules.
+# Param 1: List of modules to find indirect exported modules for.
+FindTransitiveIndirectDepsForModules = \
+ $(sort $(foreach m, $1, $(call FindTransitiveIndirectDepsForModule, $m)))
+
+# Upgradeable modules are those that are either defined as upgradeable or that
+# require an upradeable module.
+FindAllUpgradeableModules = \
+ $(sort $(filter-out $(MODULES_FILTER), $(UPGRADEABLE_MODULES) $(UPGRADEABLE_TOOL_MODULES)))
+
+
+################################################################################
+
+LEGAL_SUBDIRS += $(OPENJDK_TARGET_OS)/legal
+ifneq ($(OPENJDK_TARGET_OS), $(OPENJDK_TARGET_OS_TYPE))
+ LEGAL_SUBDIRS += $(OPENJDK_TARGET_OS_TYPE)/legal
+endif
+LEGAL_SUBDIRS += share/legal
+
+# Find all legal dirs for a particular module
+# $1 - Module to find legal dirs for
+FindModuleLegalDirs = \
+ $(strip $(wildcard \
+ $(addsuffix /$(strip $1), $(IMPORT_MODULES_LEGAL)) \
+ $(foreach sub, $(LEGAL_SUBDIRS), $(addsuffix /$(strip $1)/$(sub), $(TOP_SRC_DIRS)))))
+
+################################################################################
+
+# Param 1 - Name of module
+define ReadSingleImportMetaData
+ ifneq ($$(wildcard $(IMPORT_MODULES_MAKE)/$$(strip $1)/build.properties), )
+ classloader :=
+ include_in_jre :=
+ include_in_jdk :=
+ include $(IMPORT_MODULES_MAKE)/$$(strip $1)/build.properties
+ ifeq ($$(include_in_jre), true)
+ JRE_MODULES += $1
+ endif
+ ifeq ($$(include_in_jdk), true)
+ JDK_MODULES += $1
+ endif
+ ifeq ($$(classloader), boot)
+ BOOT_MODULES += $1
+ else ifeq ($$(classloader), ext)
+ PLATFORM_MODULES += $1
+ endif
+ ifneq ($$(include_in_docs), false)
+ # defaults to true if unspecified
+ DOCS_MODULES += $1
+ endif
+ else
+ # Default to include in all
+ JRE_MODULES += $1
+ JDK_MODULES += $1
+ endif
+endef
+
+# Reading the imported modules metadata has a cost, so to make it available,
+# a makefile needs to eval-call this macro first. After calling this, the
+# following variables are populated with data from the imported modules:
+# * JRE_MODULES
+# * JDK_MODULES
+# * BOOT_MODULES
+# * PLATFORM_MODULES
+# * JRE_TOOL_MODULES
+define ReadImportMetaData
+ IMPORTED_MODULES := $$(call FindImportedModules)
+ $$(foreach m, $$(IMPORTED_MODULES), \
+ $$(eval $$(call ReadSingleImportMetaData, $$m)))
+endef
+
+################################################################################
+
+endif # _MODULES_GMK
diff --git a/make/common/NativeCompilation.gmk b/make/common/NativeCompilation.gmk
new file mode 100644
index 0000000..2891188
--- /dev/null
+++ b/make/common/NativeCompilation.gmk
@@ -0,0 +1,1031 @@
+#
+# Copyright (c) 2011, 2016, 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.
+#
+
+# 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!
+
+ifndef _NATIVE_COMPILATION_GMK
+_NATIVE_COMPILATION_GMK := 1
+
+ifeq (,$(_MAKEBASE_GMK))
+ $(error You must include MakeBase.gmk prior to including NativeCompilation.gmk)
+endif
+
+################################################################################
+# Create exported symbols file for static libraries
+################################################################################
+
+# get the exported symbols from mapfiles and if there
+# is no mapfile, get them from the archive
+define GetSymbols
+ $(RM) $$(@D)/$$(basename $$(@F)).symbols; \
+ if [ ! -z $$($1_MAPFILE) -a -e $$($1_MAPFILE) ]; then \
+ $(ECHO) "Getting symbols from mapfile $$($1_MAPFILE)"; \
+ $(AWK) '/global:/','/local:/' $$($1_MAPFILE) | \
+ $(SED) -e 's/#.*//;s/global://;s/local://;s/\;//;s/^[ ]*/_/;/^_$$$$/d' | \
+ $(EGREP) -v "JNI_OnLoad|JNI_OnUnload|Agent_OnLoad|Agent_OnUnload|Agent_OnAttach" > \
+ $$(@D)/$$(basename $$(@F)).symbols || true; \
+ $(NM) $$($1_TARGET) | $(GREP) " T " | \
+ $(EGREP) "JNI_OnLoad|JNI_OnUnload|Agent_OnLoad|Agent_OnUnload|Agent_OnAttach" | \
+ $(CUT) -d ' ' -f 3 >> $$(@D)/$$(basename $$(@F)).symbols || true;\
+ else \
+ $(ECHO) "Getting symbols from nm"; \
+ $(NM) -m $$($1_TARGET) | $(GREP) "__TEXT" | \
+ $(EGREP) -v "non-external|private extern|__TEXT,__eh_frame" | \
+ $(SED) -e 's/.* //' > $$(@D)/$$(basename $$(@F)).symbols; \
+ fi
+endef
+
+################################################################################
+# Define a native toolchain configuration that can be used by
+# SetupNativeCompilation calls
+#
+# Parameter 1 is the name of the toolchain definition
+#
+# Remaining parameters are named arguments:
+# EXTENDS - Optional parent definition to get defaults from
+# CC - The C compiler
+# CXX - The C++ compiler
+# LD - The Linker
+# AR - Static linker
+# AS - Assembler
+# MT - Windows MT tool
+# RC - Windows RC tool
+# OBJCOPY - The objcopy tool for debug symbol handling
+# STRIP - The tool to use for stripping debug symbols
+# SYSROOT_CFLAGS - Compiler flags for using the specific sysroot
+# SYSROOT_LDFLAGS - Linker flags for using the specific sysroot
+DefineNativeToolchain = $(NamedParamsMacroTemplate)
+define DefineNativeToolchainBody
+ # If extending another definition, get default values from that,
+ # otherwise, nothing more needs to be done as variable assignments
+ # already happened in NamedParamsMacroTemplate.
+ ifneq ($$($1_EXTENDS), )
+ $$(call SetIfEmpty, $1_CC, $$($$($1_EXTENDS)_CC))
+ $$(call SetIfEmpty, $1_CXX, $$($$($1_EXTENDS)_CXX))
+ $$(call SetIfEmpty, $1_LD, $$($$($1_EXTENDS)_LD))
+ $$(call SetIfEmpty, $1_AR, $$($$($1_EXTENDS)_AR))
+ $$(call SetIfEmpty, $1_AS, $$($$($1_EXTENDS)_AS))
+ $$(call SetIfEmpty, $1_MT, $$($$($1_EXTENDS)_MT))
+ $$(call SetIfEmpty, $1_RC, $$($$($1_EXTENDS)_RC))
+ $$(call SetIfEmpty, $1_OBJCOPY, $$($$($1_EXTENDS)_OBJCOPY))
+ $$(call SetIfEmpty, $1_STRIP, $$($$($1_EXTENDS)_STRIP))
+ $$(call SetIfEmpty, $1_SYSROOT_CFLAGS, $$($$($1_EXTENDS)_SYSROOT_CFLAGS))
+ $$(call SetIfEmpty, $1_SYSROOT_LDFLAGS, $$($$($1_EXTENDS)_SYSROOT_LDFLAGS))
+ endif
+endef
+
+# Create a default toolchain with the main compiler and linker
+$(eval $(call DefineNativeToolchain, TOOLCHAIN_DEFAULT, \
+ CC := $(CC), \
+ CXX := $(CXX), \
+ LD := $(LD), \
+ AR := $(AR), \
+ AS := $(AS), \
+ MT := $(MT), \
+ RC := $(RC), \
+ OBJCOPY := $(OBJCOPY), \
+ STRIP := $(STRIP), \
+ SYSROOT_CFLAGS := $(SYSROOT_CFLAGS), \
+ SYSROOT_LDFLAGS := $(SYSROOT_LDFLAGS), \
+))
+
+# Create a toolchain where linking is done with the C++ linker
+$(eval $(call DefineNativeToolchain, TOOLCHAIN_LINK_CXX, \
+ EXTENDS := TOOLCHAIN_DEFAULT, \
+ LD := $(LDCXX), \
+))
+
+# Create a toolchain with the BUILD compiler, used for build tools that
+# are to be run during the build.
+$(eval $(call DefineNativeToolchain, TOOLCHAIN_BUILD, \
+ CC := $(BUILD_CC), \
+ CXX := $(BUILD_CXX), \
+ LD := $(BUILD_LD), \
+ AR := $(BUILD_AR), \
+ AS := $(BUILD_AS), \
+ OBJCOPY := $(BUILD_OBJCOPY), \
+ STRIP := $(BUILD_STRIP), \
+ SYSROOT_CFLAGS := $(BUILD_SYSROOT_CFLAGS), \
+ SYSROOT_LDFLAGS := $(BUILD_SYSROOT_LDFLAGS), \
+))
+
+# BUILD toolchain with the C++ linker
+$(eval $(call DefineNativeToolchain, TOOLCHAIN_BUILD_LINK_CXX, \
+ EXTENDS := TOOLCHAIN_BUILD, \
+ LD := $(BUILD_LDCXX), \
+))
+
+################################################################################
+
+# Extensions of files handled by this macro.
+NATIVE_SOURCE_EXTENSIONS := %.s %.S %.c %.cpp %.cc %.m %.mm
+
+# Replaces native source extensions with the object file extension in a string.
+# Param 1: the string containing source file names with extensions
+# The surrounding strip is needed to keep additional whitespace out
+define replace_with_obj_extension
+$(strip \
+ $(foreach extension, $(NATIVE_SOURCE_EXTENSIONS), \
+ $(patsubst $(extension),%$(OBJ_SUFFIX),$(filter $(extension),$1))) \
+)
+endef
+
+ifeq ($(OPENJDK_BUILD_OS_ENV), windows.cygwin)
+ UNIX_PATH_PREFIX := /cygdrive
+else ifeq ($(OPENJDK_BUILD_OS_ENV), windows.msys)
+ UNIX_PATH_PREFIX :=
+endif
+
+# This pattern is used to transform the output of the microsoft CL compiler
+# into a make syntax dependency file (.d)
+WINDOWS_SHOWINCLUDE_SED_PATTERN := \
+ -e '/^Note: including file:/!d' \
+ -e 's|Note: including file: *||' \
+ -e 's|\r||g' \
+ -e 's|\\|/|g' \
+ -e 's|^\([a-zA-Z]\):|$(UNIX_PATH_PREFIX)/\1|g' \
+ -e '\|$(TOPDIR)|I !d' \
+ -e 's|$$$$| \\|g' \
+ #
+
+# This pattern is used to transform a dependency file (.d) to a list
+# of make targets for dependent files (.d.targets)
+DEPENDENCY_TARGET_SED_PATTERN := \
+ -e 's/\#.*//' \
+ -e 's/^[^:]*: *//' \
+ -e 's/ *\\$$$$//' \
+ -e 's/^[ ]*//' \
+ -e '/^$$$$/ d' \
+ -e 's/$$$$/ :/' \
+ #
+
+define add_native_source
+ # param 1 = BUILD_MYPACKAGE
+ # parma 2 = the source file name (..../alfa.c or .../beta.cpp)
+ # param 3 = the bin dir that stores all .o (.obj) and .d files.
+ # param 4 = the c flags to the compiler
+ # param 5 = the c compiler
+ # param 6 = the c++ flags to the compiler
+ # param 7 = the c++ compiler
+ # param 8 = the flags to the assembler
+ # param 9 = set to disable THIS_FILE
+
+ ifeq ($9, )
+ $1_$2_THIS_FILE = -DTHIS_FILE='"$$(<F)"'
+ endif
+
+ ifeq ($$($1_$(notdir $2)_OPTIMIZATION), )
+ $1_$(notdir $2)_OPT_CFLAGS := $$($1_OPT_CFLAGS)
+ $1_$(notdir $2)_OPT_CXXFLAGS := $$($1_OPT_CXXFLAGS)
+ else
+ ifeq (NONE, $$($1_$(notdir $2)_OPTIMIZATION))
+ $1_$(notdir $2)_OPT_CFLAGS := $(C_O_FLAG_NONE)
+ $1_$(notdir $2)_OPT_CXXFLAGS := $(CXX_O_FLAG_NONE)
+ else ifeq (LOW, $$($1_$(notdir $2)_OPTIMIZATION))
+ $1_$(notdir $2)_OPT_CFLAGS := $(C_O_FLAG_NORM)
+ $1_$(notdir $2)_OPT_CXXFLAGS := $(CXX_O_FLAG_NORM)
+ else ifeq (HIGH, $$($1_$(notdir $2)_OPTIMIZATION))
+ $1_$(notdir $2)_OPT_CFLAGS := $(C_O_FLAG_HI)
+ $1_$(notdir $2)_OPT_CXXFLAGS := $(CXX_O_FLAG_HI)
+ else ifeq (HIGHEST, $$($1_$(notdir $2)_OPTIMIZATION))
+ $1_$(notdir $2)_OPT_CFLAGS := $(C_O_FLAG_HIGHEST)
+ $1_$(notdir $2)_OPT_CXXFLAGS := $(CXX_O_FLAG_HIGHEST)
+ else ifeq (HIGHEST_JVM, $$($1_$(notdir $2)_OPTIMIZATION))
+ $1_$(notdir $2)_OPT_CFLAGS := $(C_O_FLAG_HIGHEST_JVM)
+ $1_$(notdir $2)_OPT_CXXFLAGS := $(CXX_O_FLAG_HIGHEST_JVM)
+ else ifeq (SIZE, $$($1_$(notdir $2)_OPTIMIZATION))
+ $1_$(notdir $2)_OPT_CFLAGS := $(C_O_FLAG_SIZE)
+ $1_$(notdir $2)_OPT_CXXFLAGS := $(CXX_O_FLAG_SIZE)
+ else
+ $$(error Unknown value for OPTIMIZATION: $$($1_$(notdir $2)_OPTIMIZATION))
+ endif
+ endif
+
+ ifneq ($$($1_PRECOMPILED_HEADER), )
+ ifeq ($$(filter $$(notdir $2), $$($1_PRECOMPILED_HEADER_EXCLUDE)), )
+ $1_$2_USE_PCH_FLAGS := $$($1_USE_PCH_FLAGS)
+ endif
+ endif
+
+ ifneq (,$$(filter %.c,$2))
+ # Compile as a C file
+ $1_$2_FLAGS=$(CFLAGS_CCACHE) $$($1_$2_USE_PCH_FLAGS) $4 \
+ $$($1_$(notdir $2)_OPT_CFLAGS) \
+ $$($1_$(notdir $2)_CFLAGS) $$($1_$2_THIS_FILE) -c
+ $1_$2_COMP=$5
+ $1_$2_DEP_FLAG:=$(C_FLAG_DEPS)
+ else ifneq (,$$(filter %.m,$2))
+ # Compile as an Objective-C file
+ $1_$2_FLAGS=-x objective-c $(CFLAGS_CCACHE) $$($1_$2_USE_PCH_FLAGS) $4 \
+ $$($1_$(notdir $2)_OPT_CFLAGS) \
+ $$($1_$(notdir $2)_CFLAGS) $$($1_$2_THIS_FILE) -c
+ $1_$2_COMP=$5
+ $1_$2_DEP_FLAG:=$(C_FLAG_DEPS)
+ else ifneq (,$$(filter %.s %.S,$2))
+ # Compile as assembler file
+ $1_$2_FLAGS=$8
+ $1_$2_COMP=$(AS)
+ $1_$2_DEP_FLAG:=
+ else ifneq (,$$(filter %.cpp,$2)$$(filter %.cc,$2)$$(filter %.mm,$2))
+ # Compile as a C++ or Objective-C++ file
+ $1_$2_FLAGS=$(CFLAGS_CCACHE) $$($1_$2_USE_PCH_FLAGS) $6 \
+ $$($1_$(notdir $2)_OPT_CXXFLAGS) \
+ $$($1_$(notdir $2)_CXXFLAGS) $$($1_$2_THIS_FILE) -c
+ $1_$2_COMP=$7
+ $1_$2_DEP_FLAG:=$(CXX_FLAG_DEPS)
+ else
+ $$(error Internal error in NativeCompilation.gmk: no compiler for file $2)
+ endif
+ # Generate the .o (.obj) file name and place it in the bin dir.
+ $1_$2_OBJ := $3/$$(call replace_with_obj_extension, $$(notdir $2))
+ # Only continue if this object file hasn't been processed already. This lets the first found
+ # source file override any other with the same name.
+ ifeq (,$$(findstring $$($1_$2_OBJ),$$($1_OBJS_SO_FAR)))
+ $1_OBJS_SO_FAR+=$$($1_$2_OBJ)
+ ifeq (,$$(filter %.s %.S,$2))
+ # And this is the dependency file for this obj file.
+ $1_$2_DEP:=$$(patsubst %$(OBJ_SUFFIX),%.d,$$($1_$2_OBJ))
+ # The dependency target file lists all dependencies as empty targets
+ # to avoid make error "No rule to make target" for removed files
+ $1_$2_DEP_TARGETS:=$$(patsubst %$(OBJ_SUFFIX),%.d.targets,$$($1_$2_OBJ))
+
+ # Include previously generated dependency information. (if it exists)
+ -include $$($1_$2_DEP)
+ -include $$($1_$2_DEP_TARGETS)
+
+ ifeq ($(TOOLCHAIN_TYPE), microsoft)
+ # To avoid name clashes between pdbs for objects and libs/execs, put
+ # object pdbs in a separate subdir.
+ $1_$2_DEBUG_OUT_FLAGS:=-Fd$$(strip $$(patsubst $$($1_OBJECT_DIR)/%, \
+ $$($1_OBJECT_DIR)/pdb/%, $$(patsubst %$(OBJ_SUFFIX),%.pdb,$$($1_$2_OBJ))))
+ endif
+ endif
+
+ ifneq ($$(strip $$($1_$(notdir $2)_CFLAGS) $$($1_$(notdir $2)_CXXFLAGS) \
+ $$($1_$(notdir $2)_OPTIMIZATION)), )
+ $1_$2_VARDEPS := $$($1_$(notdir $2)_CFLAGS) $$($1_$(notdir $2)_CXXFLAGS) \
+ $$($1_$(notdir $2)_OPT_CFLAGS) $$($1_$(notdir $2)_OPT_CXXFLAGS)
+ $1_$2_VARDEPS_FILE := $$(call DependOnVariable, $1_$2_VARDEPS, $$($1_$2_OBJ).vardeps)
+ endif
+
+ $$($1_$2_OBJ) : $2 $$($1_COMPILE_VARDEPS_FILE) $$($1_$2_VARDEPS_FILE) | $$($1_BUILD_INFO)
+ $$(call LogInfo, Compiling $$(notdir $2) (for $$(notdir $$($1_TARGET))))
+ $$(call MakeDir, $$(@D) $$(@D)/pdb)
+ ifneq ($(TOOLCHAIN_TYPE), microsoft)
+ ifeq ($(TOOLCHAIN_TYPE)$$(filter %.s,$2), solstudio)
+ # The Solaris studio compiler doesn't output the full path to the object file in the
+ # generated deps files. Fixing it with sed. If compiling assembly, don't try this.
+ $$(call ExecuteWithLog, $$@, \
+ $$($1_$2_COMP) $$($1_$2_FLAGS) $$($1_$2_DEP_FLAG) $$($1_$2_DEP).tmp $(CC_OUT_OPTION)$$($1_$2_OBJ) $2)
+ $(SED) 's|^$$(@F):|$$@:|' $$($1_$2_DEP).tmp > $$($1_$2_DEP)
+ else
+ $$(call ExecuteWithLog, $$@, \
+ $$($1_$2_COMP) $$($1_$2_FLAGS) $$($1_$2_DEP_FLAG) $$($1_$2_DEP) $(CC_OUT_OPTION)$$($1_$2_OBJ) $2)
+ endif
+ # Create a dependency target file from the dependency file.
+ # Solution suggested by http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/
+ ifneq ($$($1_$2_DEP),)
+ $(SED) $(DEPENDENCY_TARGET_SED_PATTERN) $$($1_$2_DEP) > $$($1_$2_DEP_TARGETS)
+ endif
+ else
+ # The Visual Studio compiler lacks a feature for generating make dependencies, but by
+ # setting -showIncludes, all included files are printed. These are filtered out and
+ # parsed into make dependences.
+ # Keep as much as possible on one execution line for best performance on Windows.
+ # No need to save exit code from compilation since pipefail is always active on
+ # Windows.
+ $$(call ExecuteWithLog, $$@, \
+ $$($1_$2_COMP) $$($1_$2_FLAGS) -showIncludes $$($1_$2_DEBUG_OUT_FLAGS) \
+ $(CC_OUT_OPTION)$$($1_$2_OBJ) $2) \
+ | $(GREP) -v -e "^Note: including file:" \
+ -e "^$(notdir $2)$$$$" || test "$$$$?" = "1" ; \
+ $(ECHO) $$@: \\ > $$($1_$2_DEP) ; \
+ $(SED) $(WINDOWS_SHOWINCLUDE_SED_PATTERN) $$($1_$2_OBJ).log \
+ | $(SORT) -u >> $$($1_$2_DEP) ; \
+ $(SED) $(DEPENDENCY_TARGET_SED_PATTERN) $$($1_$2_DEP) > $$($1_$2_DEP_TARGETS)
+ endif
+ endif
+endef
+
+# Setup make rules for creating a native binary (a shared library or an
+# executable).
+#
+# Parameter 1 is the name of the rule. This name is used as variable prefix,
+# and the targets generated are listed in a variable by that name.
+#
+# Remaining parameters are named arguments. These include:
+# TOOLCHAIN Name of toolchain setup to use. Defaults to TOOLCHAIN_DEFAULT.
+# SRC one or more directory roots to scan for C/C++ files.
+# CFLAGS the compiler flags to be used, used both for C and C++.
+# CXXFLAGS the compiler flags to be used for c++, if set overrides CFLAGS.
+# LDFLAGS the linker flags to be used, used both for C and C++.
+# LIBS the libraries to link to
+# ARFLAGS the archiver flags to be used
+# OBJECT_DIR the directory where we store the object files
+# OUTPUT_DIR the directory where the resulting binary is put
+# LIBRARY the resulting library file
+# PROGRAM the resulting exec file
+# INCLUDES only pick source from these directories
+# EXCLUDES do not pick source from these directories
+# INCLUDE_FILES only compile exactly these files!
+# EXCLUDE_FILES with these names
+# EXCLUDE_PATTERN exclude files matching any of these substrings
+# EXTRA_FILES List of extra files not in any of the SRC dirs
+# EXTRA_OBJECT_FILES List of extra object files to include when linking
+# VERSIONINFO_RESOURCE Input file for RC. Setting this implies that RC will be run
+# RC_FLAGS flags for RC.
+# EMBED_MANIFEST if true, embed manifest on Windows.
+# MAPFILE mapfile
+# REORDER reorder file
+# USE_MAPFILE_FOR_SYMBOLS if true and this is a STATIC_BUILD, just copy the
+# mapfile for the output symbols file
+# CC the compiler to use, default is $(CC)
+# LD the linker to use, default is $(LD)
+# OPTIMIZATION sets optimization level to NONE, LOW, HIGH, HIGHEST, HIGHEST_JVM, SIZE
+# DISABLED_WARNINGS_<toolchain> Disable the given warnings for the specified toolchain
+# DISABLED_WARNINGS_C_<toolchain> Disable the given warnings for the specified toolchain
+# when compiling C code
+# DISABLED_WARNINGS_CXX_<toolchain> Disable the given warnings for the specified
+# toolchain when compiling C++ code
+# STRIP_SYMBOLS Set to false to override global strip policy and always leave
+# symbols in the binary, if the toolchain allows for it
+# DEBUG_SYMBOLS Set to false to disable generation of debug symbols
+# COPY_DEBUG_SYMBOLS Set to false to override global setting of debug symbol copying
+# ZIP_EXTERNAL_DEBUG_SYMBOLS Set to false to override global setting of debug symbol
+# zipping
+# CFLAGS_DEBUG_SYMBOLS Overrides the default cflags for enabling debug symbols
+# CXXFLAGS_DEBUG_SYMBOLS Overrides the default cxxflags for enabling debug symbols
+# STRIPFLAGS Optionally change the flags given to the strip command
+# PRECOMPILED_HEADER Header file to use as precompiled header
+# PRECOMPILED_HEADER_EXCLUDE List of source files that should not use PCH
+SetupNativeCompilation = $(NamedParamsMacroTemplate)
+define SetupNativeCompilationBody
+
+ # If we're doing a static build and producing a library
+ # force it to be a static library and remove the -l libraries
+ ifeq ($(STATIC_BUILD), true)
+ ifneq ($$($1_LIBRARY),)
+ $1_STATIC_LIBRARY := $$($1_LIBRARY)
+ $1_LIBRARY :=
+ endif
+ endif
+
+ ifneq (,$$($1_BIN))
+ $$(error BIN has been replaced with OBJECT_DIR)
+ endif
+
+ ifneq (,$$($1_LIB))
+ $$(error LIB has been replaced with LIBRARY)
+ endif
+
+ ifneq (,$$($1_EXE))
+ $$(error EXE has been replaced with PROGRAM)
+ endif
+
+ ifneq (,$$($1_LIBRARY))
+ ifeq (,$$($1_OUTPUT_DIR))
+ $$(error LIBRARY requires OUTPUT_DIR)
+ endif
+
+ ifneq ($$($1_LIBRARY),$(basename $$($1_LIBRARY)))
+ $$(error directory of LIBRARY should be specified using OUTPUT_DIR)
+ endif
+
+ ifneq (,$(findstring $(SHARED_LIBRARY_SUFFIX),$$($1_LIBRARY)))
+ $$(error LIBRARY should be specified without SHARED_LIBRARY_SUFFIX: $(SHARED_LIBRARY_SUFFIX))
+ endif
+
+ ifneq (,$(findstring $(LIBRARY_PREFIX),$$($1_LIBRARY)))
+ $$(error LIBRARY should be specified without LIBRARY_PREFIX: $(LIBRARY_PREFIX))
+ endif
+
+ ifeq ($$($1_SUFFIX), )
+ $1_SUFFIX := $(SHARED_LIBRARY_SUFFIX)
+ endif
+
+ $1_BASENAME:=$(LIBRARY_PREFIX)$$($1_LIBRARY)$$($1_SUFFIX)
+ $1_TARGET:=$$($1_OUTPUT_DIR)/$$($1_BASENAME)
+ $1_NOSUFFIX:=$(LIBRARY_PREFIX)$$($1_LIBRARY)
+ endif
+
+ ifneq (,$$($1_STATIC_LIBRARY))
+ ifeq (,$$($1_OUTPUT_DIR))
+ $$(error STATIC_LIBRARY requires OUTPUT_DIR)
+ endif
+
+ ifneq ($$($1_STATIC_LIBRARY),$(basename $$($1_STATIC_LIBRARY)))
+ $$(error directory of STATIC_LIBRARY should be specified using OUTPUT_DIR)
+ endif
+
+ ifneq (,$(findstring $(STATIC_LIBRARY_SUFFIX),$$($1_STATIC_LIBRARY)))
+ $$(error STATIC_LIBRARY should be specified without STATIC_LIBRARY_SUFFIX: $(STATIC_LIBRARY_SUFFIX))
+ endif
+
+ ifneq (,$(findstring $(LIBRARY_PREFIX),$$($1_STATIC_LIBRARY)))
+ $$(error STATIC_LIBRARY should be specified without LIBRARY_PREFIX: $(LIBRARY_PREFIX))
+ endif
+
+ ifeq ($$($1_SUFFIX), )
+ $1_SUFFIX := $(STATIC_LIBRARY_SUFFIX)
+ endif
+
+ $1_BASENAME:=$(LIBRARY_PREFIX)$$($1_STATIC_LIBRARY)$$($1_SUFFIX)
+ $1_TARGET:=$$($1_OUTPUT_DIR)/$$($1_BASENAME)
+ $1_NOSUFFIX:=$(LIBRARY_PREFIX)$$($1_STATIC_LIBRARY)
+ endif
+
+ ifneq (,$$($1_PROGRAM))
+ ifeq (,$$($1_OUTPUT_DIR))
+ $$(error PROGRAM requires OUTPUT_DIR)
+ endif
+
+ ifneq ($$($1_PROGRAM),$(basename $$($1_PROGRAM)))
+ $$(error directory of PROGRAM should be specified using OUTPUT_DIR)
+ endif
+
+ ifneq (,$(findstring $(EXE_SUFFIX),$$($1_PROGRAM)))
+ $$(error PROGRAM should be specified without EXE_SUFFIX: $(EXE_SUFFIX))
+ endif
+
+ ifeq ($$($1_SUFFIX), )
+ $1_SUFFIX := $(EXE_SUFFIX)
+ endif
+
+ $1_BASENAME:=$$($1_PROGRAM)$$($1_SUFFIX)
+ $1_TARGET:=$$($1_OUTPUT_DIR)/$$($1_BASENAME)
+ $1_NOSUFFIX:=$$($1_PROGRAM)
+ endif
+ $1_SAFE_NAME := $$(strip $$(subst /,_, $1))
+
+ ifeq (,$$($1_TARGET))
+ $$(error Neither PROGRAM, LIBRARY nor STATIC_LIBRARY has been specified for SetupNativeCompilation)
+ endif
+
+ # Setup the toolchain to be used
+ $$(call SetIfEmpty, $1_TOOLCHAIN, TOOLCHAIN_DEFAULT)
+ $$(call SetIfEmpty, $1_CC, $$($$($1_TOOLCHAIN)_CC))
+ $$(call SetIfEmpty, $1_CXX, $$($$($1_TOOLCHAIN)_CXX))
+ $$(call SetIfEmpty, $1_LD, $$($$($1_TOOLCHAIN)_LD))
+ $$(call SetIfEmpty, $1_AR, $$($$($1_TOOLCHAIN)_AR))
+ $$(call SetIfEmpty, $1_AS, $$($$($1_TOOLCHAIN)_AS))
+ $$(call SetIfEmpty, $1_MT, $$($$($1_TOOLCHAIN)_MT))
+ $$(call SetIfEmpty, $1_RC, $$($$($1_TOOLCHAIN)_RC))
+ $$(call SetIfEmpty, $1_OBJCOPY, $$($$($1_TOOLCHAIN)_OBJCOPY))
+ $$(call SetIfEmpty, $1_STRIP, $$($$($1_TOOLCHAIN)_STRIP))
+ $$(call SetIfEmpty, $1_SYSROOT_CFLAGS, $$($$($1_TOOLCHAIN)_SYSROOT_CFLAGS))
+ $$(call SetIfEmpty, $1_SYSROOT_LDFLAGS, $$($$($1_TOOLCHAIN)_SYSROOT_LDFLAGS))
+
+ ifneq ($$($1_MANIFEST), )
+ ifeq ($$($1_MANIFEST_VERSION), )
+ $$(error If MANIFEST is provided, then MANIFEST_VERSION is required in $1)
+ endif
+ endif
+
+ # Make sure the dirs exist.
+ $$(call MakeDir,$$($1_OBJECT_DIR) $$($1_OUTPUT_DIR))
+ $$(foreach d,$$($1_SRC), $$(if $$(wildcard $$d),, \
+ $$(error SRC specified to SetupNativeCompilation $1 contains missing directory $$d)))
+
+ # Find all files in the source trees. Sort to remove duplicates.
+ $1_SRCS := $$(sort $$(call CacheFind,$$($1_SRC)))
+ $1_SRCS := $$(filter $$(NATIVE_SOURCE_EXTENSIONS), $$($1_SRCS))
+ # Extract the C/C++ files.
+ ifneq ($$($1_EXCLUDE_PATTERNS), )
+ # We must not match the exclude pattern against the src root(s).
+ $1_SRCS_WITHOUT_ROOTS := $$($1_SRCS)
+ $$(foreach i,$$($1_SRC),$$(eval $1_SRCS_WITHOUT_ROOTS := $$(patsubst \
+ $$i/%,%, $$($1_SRCS_WITHOUT_ROOTS))))
+ $1_ALL_EXCLUDE_FILES := $$(call containing, $$($1_EXCLUDE_PATTERNS), \
+ $$($1_SRCS_WITHOUT_ROOTS))
+ endif
+ ifneq ($$($1_EXCLUDE_FILES),)
+ $1_ALL_EXCLUDE_FILES += $$($1_EXCLUDE_FILES)
+ endif
+ ifneq ($$($1_ALL_EXCLUDE_FILES),)
+ $1_EXCLUDE_FILES_PAT := $$($1_ALL_EXCLUDE_FILES) \
+ $$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$($1_ALL_EXCLUDE_FILES)))
+ $1_EXCLUDE_FILES_PAT := $$(addprefix %,$$($1_EXCLUDE_FILES_PAT))
+ $1_SRCS := $$(filter-out $$($1_EXCLUDE_FILES_PAT),$$($1_SRCS))
+ endif
+ ifneq ($$($1_INCLUDE_FILES), )
+ $1_INCLUDE_FILES_PAT := $$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$($1_INCLUDE_FILES)))
+ $1_SRCS := $$(filter $$($1_INCLUDE_FILES_PAT),$$($1_SRCS))
+ endif
+ # There can be only a single bin dir root, no need to foreach over the roots.
+ $1_BINS := $$(wildcard $$($1_OBJECT_DIR)/*$(OBJ_SUFFIX))
+ # Now we have a list of all c/c++ files to compile: $$($1_SRCS)
+ # and we have a list of all existing object files: $$($1_BINS)
+
+ # Prepend the source/bin path to the filter expressions. Then do the filtering.
+ 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 := $$(addsuffix /%,$$($1_EXCLUDES))
+ $1_SRC_EXCLUDES += $$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$(addsuffix /%,$$($1_EXCLUDES))))
+ $1_SRCS := $$(filter-out $$($1_SRC_EXCLUDES),$$($1_SRCS))
+ endif
+
+ $1_SRCS += $$($1_EXTRA_FILES)
+
+ ifeq (,$$($1_SRCS))
+ $$(error No sources found for $1 when looking inside the dirs $$($1_SRC))
+ endif
+
+ # Calculate the expected output from compiling the sources
+ $1_EXPECTED_OBJS_FILENAMES := $$(call replace_with_obj_extension, $$(notdir $$($1_SRCS)))
+ $1_EXPECTED_OBJS := $$(addprefix $$($1_OBJECT_DIR)/,$$($1_EXPECTED_OBJS_FILENAMES))
+ # Are there too many object files on disk? Perhaps because some source file was removed?
+ $1_SUPERFLOUS_OBJS:=$$(sort $$(filter-out $$($1_EXPECTED_OBJS),$$($1_BINS)))
+ # Clean out the superfluous object files.
+ ifneq ($$($1_SUPERFLUOUS_OBJS),)
+ $$(shell $(RM) -f $$($1_SUPERFLUOUS_OBJS))
+ endif
+ # Sort to remove dupliates and provide a reproducable order on the input files to the linker.
+ $1_ALL_OBJS := $$(sort $$($1_EXPECTED_OBJS) $$($1_EXTRA_OBJECT_FILES))
+
+ # Pickup extra OPENJDK_TARGET_OS_TYPE, OPENJDK_TARGET_OS, and/or OPENJDK_TARGET_OS plus
+ # OPENJDK_TARGET_CPU pair dependent variables for CFLAGS.
+ $1_EXTRA_CFLAGS:=$$($1_CFLAGS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_CFLAGS_$(OPENJDK_TARGET_OS)) \
+ $$($1_CFLAGS_$(OPENJDK_TARGET_OS)_$(OPENJDK_TARGET_CPU))
+ ifneq ($(DEBUG_LEVEL),release)
+ # Pickup extra debug dependent variables for CFLAGS
+ $1_EXTRA_CFLAGS+=$$($1_CFLAGS_debug)
+ $1_EXTRA_CFLAGS+=$$($1_CFLAGS_$(OPENJDK_TARGET_OS_TYPE)_debug)
+ $1_EXTRA_CFLAGS+=$$($1_CFLAGS_$(OPENJDK_TARGET_OS)_debug)
+ $1_EXTRA_CFLAGS+=$$($1_CFLAGS_$(OPENJDK_TARGET_OS)_$(OPENJDK_TARGET_CPU)_debug)
+ else
+ $1_EXTRA_CFLAGS+=$$($1_CFLAGS_release)
+ $1_EXTRA_CFLAGS+=$$($1_CFLAGS_$(OPENJDK_TARGET_OS_TYPE)_release)
+ $1_EXTRA_CFLAGS+=$$($1_CFLAGS_$(OPENJDK_TARGET_OS)_release)
+ $1_EXTRA_CFLAGS+=$$($1_CFLAGS_$(OPENJDK_TARGET_OS)_$(OPENJDK_TARGET_CPU)_release)
+ endif
+
+ # Pickup extra OPENJDK_TARGET_OS_TYPE and/or OPENJDK_TARGET_OS dependent variables for CXXFLAGS.
+ $1_EXTRA_CXXFLAGS:=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_CXXFLAGS_$(OPENJDK_TARGET_OS))
+ ifneq ($(DEBUG_LEVEL),release)
+ # Pickup extra debug dependent variables for CXXFLAGS
+ $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_debug)
+ $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS_TYPE)_debug)
+ $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS)_debug)
+ else
+ $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_release)
+ $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS_TYPE)_release)
+ $1_EXTRA_CXXFLAGS+=$$($1_CXXFLAGS_$(OPENJDK_TARGET_OS)_release)
+ endif
+
+ # If no C++ flags are explicitly set, default to using the C flags.
+ # After that, we can set additional C++ flags that should not interfere
+ # with the mechanism for copying the C flags by default.
+ ifeq ($$($1_CXXFLAGS),)
+ $1_CXXFLAGS:=$$($1_CFLAGS)
+ endif
+ ifeq ($$(strip $$($1_EXTRA_CXXFLAGS)),)
+ $1_EXTRA_CXXFLAGS:=$$($1_EXTRA_CFLAGS)
+ endif
+
+ ifeq ($(COMPILE_WITH_DEBUG_SYMBOLS), true)
+ $$(call SetIfEmpty, $1_CFLAGS_DEBUG_SYMBOLS, $(CFLAGS_DEBUG_SYMBOLS))
+ $$(call SetIfEmpty, $1_CXXFLAGS_DEBUG_SYMBOLS, $(CXXFLAGS_DEBUG_SYMBOLS))
+ $1_EXTRA_CFLAGS += $$($1_CFLAGS_DEBUG_SYMBOLS)
+ $1_EXTRA_CXXFLAGS += $$($1_CXXFLAGS_DEBUG_SYMBOLS)
+ endif
+
+ ifneq (,$$($1_REORDER))
+ $1_EXTRA_CFLAGS += $$(C_FLAG_REORDER)
+ $1_EXTRA_CXXFLAGS += $$(CXX_FLAG_REORDER)
+ endif
+
+ # Pass the library name for static JNI library naming
+ ifneq ($$($1_STATIC_LIBRARY),)
+ $1_EXTRA_CFLAGS += -DLIBRARY_NAME=$$($1_STATIC_LIBRARY)
+ $1_EXTRA_CXXFLAGS += -DLIBRARY_NAME=$$($1_STATIC_LIBRARY)
+ endif
+
+ # Pick up disabled warnings, if possible on this platform.
+ ifneq ($(DISABLE_WARNING_PREFIX),)
+ $1_EXTRA_CFLAGS += $$(addprefix $(DISABLE_WARNING_PREFIX), \
+ $$($1_DISABLED_WARNINGS_$(TOOLCHAIN_TYPE)) \
+ $$($1_DISABLED_WARNINGS_C_$(TOOLCHAIN_TYPE)))
+ $1_EXTRA_CXXFLAGS += $$(addprefix $(DISABLE_WARNING_PREFIX), \
+ $$($1_DISABLED_WARNINGS_$(TOOLCHAIN_TYPE)) \
+ $$($1_DISABLED_WARNINGS_CXX_$(TOOLCHAIN_TYPE)))
+ endif
+
+ # Check if warnings should be considered errors.
+ # Pick first binary and toolchain specific, then binary specific, then general setting.
+ ifeq ($$($1_WARNINGS_AS_ERRORS_$(TOOLCHAIN_TYPE)),)
+ ifeq ($$($1_WARNINGS_AS_ERRORS),)
+ $1_WARNINGS_AS_ERRORS_$(TOOLCHAIN_TYPE) := $$(WARNINGS_AS_ERRORS)
+ else
+ $1_WARNINGS_AS_ERRORS_$(TOOLCHAIN_TYPE) := $$($1_WARNINGS_AS_ERRORS)
+ endif
+ endif
+
+ ifeq ($$($1_WARNINGS_AS_ERRORS_$(TOOLCHAIN_TYPE)), true)
+ $1_EXTRA_CFLAGS += $(CFLAGS_WARNINGS_ARE_ERRORS)
+ $1_EXTRA_CXXFLAGS += $(CFLAGS_WARNINGS_ARE_ERRORS)
+ endif
+
+ ifeq (NONE, $$($1_OPTIMIZATION))
+ $1_OPT_CFLAGS := $(C_O_FLAG_NONE)
+ $1_OPT_CXXFLAGS := $(CXX_O_FLAG_NONE)
+ else ifeq (LOW, $$($1_OPTIMIZATION))
+ $1_OPT_CFLAGS := $(C_O_FLAG_NORM)
+ $1_OPT_CXXFLAGS := $(CXX_O_FLAG_NORM)
+ else ifeq (HIGH, $$($1_OPTIMIZATION))
+ $1_OPT_CFLAGS := $(C_O_FLAG_HI)
+ $1_OPT_CXXFLAGS := $(CXX_O_FLAG_HI)
+ else ifeq (HIGHEST, $$($1_OPTIMIZATION))
+ $1_OPT_CFLAGS := $(C_O_FLAG_HIGHEST)
+ $1_OPT_CXXFLAGS := $(CXX_O_FLAG_HIGHEST)
+ else ifeq (HIGHEST_JVM, $$($1_OPTIMIZATION))
+ $1_OPT_CFLAGS := $(C_O_FLAG_HIGHEST_JVM)
+ $1_OPT_CXXFLAGS := $(CXX_O_FLAG_HIGHEST_JVM)
+ else ifeq (SIZE, $$($1_OPTIMIZATION))
+ $1_OPT_CFLAGS := $(C_O_FLAG_SIZE)
+ $1_OPT_CXXFLAGS := $(CXX_O_FLAG_SIZE)
+ else ifneq (, $$($1_OPTIMIZATION))
+ $$(error Unknown value for OPTIMIZATION: $$($1_OPTIMIZATION))
+ endif
+
+ $1_BUILD_INFO := $$($1_OBJECT_DIR)/_build-info.marker
+
+ # Track variable changes for all variables that affect the compilation command
+ # lines for all object files in this setup. This includes at least all the
+ # variables used in the call to add_native_source below.
+ $1_COMPILE_VARDEPS := $$($1_CFLAGS) $$($1_EXTRA_CFLAGS) $$($1_SYSROOT_CFLAGS) \
+ $$($1_CXXFLAGS) $$($1_EXTRA_CXXFLAGS) $$($1_OPT_CFLAGS) $$($1_OPT_CXXFLAGS) \
+ $$($1_CC) $$($1_CXX) $$($1_AS) $$($1_ASFLAGS)
+ $1_COMPILE_VARDEPS_FILE := $$(call DependOnVariable, $1_COMPILE_VARDEPS, \
+ $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).comp.vardeps)
+
+ ifneq ($$($1_PRECOMPILED_HEADER), )
+ ifeq ($(USE_PRECOMPILED_HEADER), true)
+ ifeq ($(TOOLCHAIN_TYPE), microsoft)
+ $1_PCH_FILE := $$($1_OBJECT_DIR)/$1.pch
+ $1_GENERATED_PCH_SRC := $$($1_OBJECT_DIR)/$1_pch.cpp
+ $1_GENERATED_PCH_OBJ := $$($1_OBJECT_DIR)/$1_pch.obj
+
+ $$(eval $$(call add_native_source,$1,$$($1_GENERATED_PCH_SRC), \
+ $$($1_OBJECT_DIR),,, \
+ $$($1_CXXFLAGS) $$($1_EXTRA_CXXFLAGS) $$($1_SYSROOT_CFLAGS) \
+ -Fp$$($1_PCH_FILE) -Yc$$(notdir $$($1_PRECOMPILED_HEADER)), \
+ $$($1_CXX),,no_this_file))
+
+ $1_USE_PCH_FLAGS := \
+ -Fp$$($1_PCH_FILE) -Yu$$(notdir $$($1_PRECOMPILED_HEADER))
+
+ $$($1_ALL_OBJS): $$($1_GENERATED_PCH_OBJ)
+
+ # Explicitly add the pch obj file first to ease comparing to old
+ # hotspot build.
+ $1_ALL_OBJS := $$($1_GENERATED_PCH_OBJ) $$($1_ALL_OBJS)
+
+ $$($1_GENERATED_PCH_SRC):
+ $(ECHO) "#include \"$$(notdir $$($1_PRECOMPILED_HEADER))\"" > $$@
+
+ else ifneq ($(findstring $(TOOLCHAIN_TYPE), gcc clang), )
+ ifeq ($(TOOLCHAIN_TYPE), gcc)
+ $1_PCH_FILE := $$($1_OBJECT_DIR)/precompiled/$$(notdir $$($1_PRECOMPILED_HEADER)).gch
+ $1_USE_PCH_FLAGS := -I$$($1_OBJECT_DIR)/precompiled
+ else ifeq ($(TOOLCHAIN_TYPE), clang)
+ $1_PCH_FILE := $$($1_OBJECT_DIR)/precompiled/$$(notdir $$($1_PRECOMPILED_HEADER)).pch
+ $1_USE_PCH_FLAGS := -include-pch $$($1_PCH_FILE)
+ endif
+ $1_PCH_DEP := $$($1_PCH_FILE).d
+ $1_PCH_DEP_TARGETS := $$($1_PCH_FILE).d.targets
+
+ -include $$($1_PCH_DEP)
+ -include $$($1_PCH_DEP_TARGETS)
+
+ $$($1_PCH_FILE): $$($1_PRECOMPILED_HEADER) $$($1_COMPILE_VARDEPS_FILE)
+ $$(call LogInfo, Generating precompiled header)
+ $$(call MakeDir, $$(@D))
+ $$(call ExecuteWithLog, $$@, \
+ $$($1_CC) $$($1_CFLAGS) $$($1_EXTRA_CFLAGS) $$($1_SYSROOT_CFLAGS) \
+ $$($1_OPT_CFLAGS) \
+ -x c++-header -c $(C_FLAG_DEPS) $$($1_PCH_DEP) $$< -o $$@)
+ $(SED) $(DEPENDENCY_TARGET_SED_PATTERN) $$($1_PCH_DEP) > $$($1_PCH_DEP_TARGETS)
+
+ $$($1_ALL_OBJS): $$($1_PCH_FILE)
+
+ endif
+ endif
+ endif
+
+ # Now call add_native_source for each source file we are going to compile.
+ $$(foreach p,$$($1_SRCS), \
+ $$(eval $$(call add_native_source,$1,$$p,$$($1_OBJECT_DIR), \
+ $$($1_CFLAGS) $$($1_EXTRA_CFLAGS) $$($1_SYSROOT_CFLAGS), \
+ $$($1_CC), \
+ $$($1_CXXFLAGS) $$($1_EXTRA_CXXFLAGS) $$($1_SYSROOT_CFLAGS), \
+ $$($1_CXX), $$($1_ASFLAGS))))
+
+ # Setup rule for printing progress info when compiling source files.
+ # This is a rough heuristic and may not always print accurate information.
+ $$($1_BUILD_INFO): $$($1_SRCS) $$($1_COMPILE_VARDEPS_FILE)
+ ifeq ($$(wildcard $$($1_TARGET)),)
+ $(ECHO) 'Creating $$(subst $$(BUILD_OUTPUT)/,,$$($1_TARGET)) from $$(words \
+ $$(filter-out %.vardeps, $$?)) file(s)'
+ else
+ $(ECHO) $$(strip 'Updating $$(subst $$(BUILD_OUTPUT)/,,$$($1_TARGET))' \
+ $$(if $$(filter-out %.vardeps, $$?), \
+ 'due to $$(words $$(filter-out %.vardeps, $$?)) file(s)', \
+ $$(if $$(filter %.vardeps, $$?), 'due to makefile changes')))
+ endif
+ $(TOUCH) $$@
+
+ # On windows we need to create a resource file
+ ifeq ($(OPENJDK_TARGET_OS), windows)
+ ifneq (,$$($1_VERSIONINFO_RESOURCE))
+ $1_RES:=$$($1_OBJECT_DIR)/$$($1_BASENAME).res
+ $1_RES_DEP:=$$($1_RES).d
+ $1_RES_DEP_TARGETS:=$$($1_RES).d.targets
+ -include $$($1_RES_DEP)
+ -include $$($1_RES_DEP_TARGETS)
+
+ $1_RES_VARDEPS := $$($1_RC) $$($1_RC_FLAGS)
+ $1_RES_VARDEPS_FILE := $$(call DependOnVariable, $1_RES_VARDEPS, \
+ $$($1_RES).vardeps)
+
+ $$($1_RES): $$($1_VERSIONINFO_RESOURCE) $$($1_RES_VARDEPS_FILE)
+ $$(call LogInfo, Compiling resource $$(notdir $$($1_VERSIONINFO_RESOURCE)) (for $$(notdir $$($1_TARGET))))
+ $$(call MakeDir, $$(@D) $$($1_OBJECT_DIR))
+ $$(call ExecuteWithLog, $$@, \
+ $$($1_RC) $$($1_RC_FLAGS) $$($1_SYSROOT_CFLAGS) $(CC_OUT_OPTION)$$@ \
+ $$($1_VERSIONINFO_RESOURCE))
+ # Windows RC compiler does not support -showIncludes, so we mis-use CL
+ # for this. Filter out RC specific arguments that are unknown to CL.
+ # For some unknown reason, in this case CL actually outputs the show
+ # includes to stderr so need to redirect it to hide the output from the
+ # main log.
+ $$(call ExecuteWithLog, $$($1_RES_DEP).obj, \
+ $$($1_CC) $$(filter-out -l%, $$($1_RC_FLAGS)) \
+ $$($1_SYSROOT_CFLAGS) -showIncludes -nologo -TC \
+ $(CC_OUT_OPTION)$$($1_RES_DEP).obj -P -Fi$$($1_RES_DEP).pp \
+ $$($1_VERSIONINFO_RESOURCE)) 2>&1 \
+ | $(GREP) -v -e "^Note: including file:" \
+ -e "^$$(notdir $$($1_VERSIONINFO_RESOURCE))$$$$" || test "$$$$?" = "1" ; \
+ $(ECHO) $$($1_RES): \\ > $$($1_RES_DEP) ; \
+ $(SED) $(WINDOWS_SHOWINCLUDE_SED_PATTERN) $$($1_RES_DEP).obj.log >> $$($1_RES_DEP) ; \
+ $(SED) $(DEPENDENCY_TARGET_SED_PATTERN) $$($1_RES_DEP) > $$($1_RES_DEP_TARGETS)
+ endif
+ endif
+
+ ifneq ($(DISABLE_MAPFILES),true)
+ $1_REAL_MAPFILE := $$($1_MAPFILE)
+ ifneq ($(OPENJDK_TARGET_OS),windows)
+ ifneq (,$$($1_REORDER))
+ $1_REAL_MAPFILE := $$($1_OBJECT_DIR)/mapfile
+
+ $$($1_REAL_MAPFILE) : $$($1_MAPFILE) $$($1_REORDER)
+ $$(call MakeDir, $$(@D))
+ $$(CP) $$($1_MAPFILE) $$@.tmp
+ $$(SED) -e 's=OUTPUTDIR=$$($1_OBJECT_DIR)=' $$($1_REORDER) >> $$@.tmp
+ $$(MV) $$@.tmp $$@
+ endif
+ endif
+ endif
+
+ # Pickup extra OPENJDK_TARGET_OS_TYPE and/or OPENJDK_TARGET_OS dependent variables
+ # for LDFLAGS and LIBS
+ $1_EXTRA_LDFLAGS:=$$($1_LDFLAGS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LDFLAGS_$(OPENJDK_TARGET_OS))
+ $1_EXTRA_LIBS:=$$($1_LIBS_$(OPENJDK_TARGET_OS_TYPE)) $$($1_LIBS_$(OPENJDK_TARGET_OS))
+ ifneq (,$$($1_REAL_MAPFILE))
+ $1_EXTRA_LDFLAGS += $(call SET_SHARED_LIBRARY_MAPFILE,$$($1_REAL_MAPFILE))
+ endif
+
+ # Need to make sure TARGET is first on list
+ $1 := $$($1_TARGET)
+
+ ifneq ($$($1_COPY_DEBUG_SYMBOLS), false)
+ $1_COPY_DEBUG_SYMBOLS := $(COPY_DEBUG_SYMBOLS)
+ endif
+
+ ifneq ($$($1_ZIP_EXTERNAL_DEBUG_SYMBOLS), false)
+ $1_ZIP_EXTERNAL_DEBUG_SYMBOLS := $(ZIP_EXTERNAL_DEBUG_SYMBOLS)
+ endif
+
+ ifeq ($$($1_COPY_DEBUG_SYMBOLS), true)
+ ifneq ($$($1_DEBUG_SYMBOLS), false)
+ # Only copy debug symbols for dynamic libraries and programs.
+ ifeq ($$($1_STATIC_LIBRARY), )
+ # Generate debuginfo files.
+ ifeq ($(OPENJDK_TARGET_OS), windows)
+ $1_EXTRA_LDFLAGS += -debug "-pdb:$$($1_OUTPUT_DIR)/$$($1_NOSUFFIX).pdb" \
+ "-map:$$($1_OUTPUT_DIR)/$$($1_NOSUFFIX).map"
+ $1_DEBUGINFO_FILES := $$($1_OUTPUT_DIR)/$$($1_NOSUFFIX).pdb \
+ $$($1_OUTPUT_DIR)/$$($1_NOSUFFIX).map
+ # No separate command is needed for debuginfo on windows, instead
+ # touch target to make sure it has a later time stamp than the debug
+ # symbol files to avoid unnecessary relinking on rebuild.
+ $1_CREATE_DEBUGINFO_CMDS := $(TOUCH) $$($1_TARGET)
+
+ else ifneq ($(findstring $(OPENJDK_TARGET_OS), linux solaris), )
+ $1_DEBUGINFO_FILES := $$($1_OUTPUT_DIR)/$$($1_NOSUFFIX).debuginfo
+ # Setup the command line creating debuginfo files, to be run after linking.
+ # It cannot be run separately since it updates the original target file
+ $1_CREATE_DEBUGINFO_CMDS := \
+ $$($1_OBJCOPY) --only-keep-debug $$($1_TARGET) $$($1_DEBUGINFO_FILES) $$(NEWLINE) \
+ $(CD) $$($1_OUTPUT_DIR) && \
+ $$($1_OBJCOPY) --add-gnu-debuglink=$$($1_DEBUGINFO_FILES) $$($1_TARGET)
+
+ else ifeq ($(OPENJDK_TARGET_OS), macosx)
+ $1_DEBUGINFO_FILES := \
+ $$($1_OUTPUT_DIR)/$$($1_BASENAME).dSYM/Contents/Info.plist \
+ $$($1_OUTPUT_DIR)/$$($1_BASENAME).dSYM/Contents/Resources/DWARF/$$($1_BASENAME)
+ # On Macosx, the debuginfo generation doesn't touch the linked binary, but
+ # to avoid always relinking, touch it anyway to force a later timestamp than
+ # the dSYM files.
+ $1_CREATE_DEBUGINFO_CMDS := \
+ $(DSYMUTIL) --out $$($1_OUTPUT_DIR)/$$($1_BASENAME).dSYM $$($1_TARGET) $$(NEWLINE) \
+ $(TOUCH) $$($1_TARGET)
+ endif # OPENJDK_TARGET_OS
+
+ $$($1_DEBUGINFO_FILES): $$($1_TARGET)
+
+ $1 += $$($1_DEBUGINFO_FILES)
+
+ ifeq ($$($1_ZIP_EXTERNAL_DEBUG_SYMBOLS), true)
+ $1_DEBUGINFO_ZIP := $$($1_OUTPUT_DIR)/$$($1_NOSUFFIX).diz
+ $1 += $$($1_DEBUGINFO_ZIP)
+
+ # The dependency on TARGET is needed for debuginfo files
+ # to be rebuilt properly.
+ $$($1_DEBUGINFO_ZIP): $$($1_DEBUGINFO_FILES) $$($1_TARGET)
+ $(CD) $$($1_OUTPUT_DIR) && \
+ $(ZIPEXE) -q -r $$@ $$(subst $$($1_OUTPUT_DIR)/,, $$($1_DEBUGINFO_FILES))
+
+ endif
+ endif # !STATIC_LIBRARY
+ endif # $1_DEBUG_SYMBOLS != false
+ endif # COPY_DEBUG_SYMBOLS
+
+ # Unless specifically set, stripping should only happen if symbols are also
+ # being copied.
+ $$(call SetIfEmpty, $1_STRIP_SYMBOLS, $$($1_COPY_DEBUG_SYMBOLS))
+
+ ifneq ($$($1_STRIP_SYMBOLS), false)
+ ifneq ($$($1_STRIP), )
+ # Default to using the global STRIPFLAGS. Allow for overriding with an empty value
+ $1_STRIPFLAGS ?= $(STRIPFLAGS)
+ $1_STRIP_CMD := $$($1_STRIP) $$($1_STRIPFLAGS) $$($1_TARGET)
+ endif
+ endif
+
+ ifneq (,$$($1_LIBRARY))
+ # Generating a dynamic library.
+ $1_EXTRA_LDFLAGS += $$(call SET_SHARED_LIBRARY_NAME,$$($1_BASENAME))
+ ifeq ($(OPENJDK_TARGET_OS), windows)
+ $1_EXTRA_LDFLAGS += "-implib:$$($1_OBJECT_DIR)/$$($1_LIBRARY).lib"
+ # Create a rule for the import lib so that other rules may depend on it
+ $$($1_OBJECT_DIR)/$$($1_LIBRARY).lib: $$($1_TARGET)
+ endif
+
+ # Create loadmap on AIX. Helps in diagnosing some problems.
+ ifneq ($(COMPILER_BINDCMD_FILE_FLAG),)
+ $1_EXTRA_LDFLAGS += $(COMPILER_BINDCMD_FILE_FLAG)$$($1_OBJECT_DIR)/$$($1_NOSUFFIX).loadmap
+ endif
+
+ $1_VARDEPS := $$($1_LD) $$($1_SYSROOT_LDFLAGS) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) \
+ $$($1_LIBS) $$($1_EXTRA_LIBS) $$($1_CREATE_DEBUGINFO_CMDS) \
+ $$($1_STRIP_CMD)
+ $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \
+ $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).vardeps)
+
+ $1_LD_OBJ_ARG := $$($1_ALL_OBJS)
+
+ # If there are many object files, use an @-file...
+ ifneq ($$(word 17, $$($1_ALL_OBJS)), )
+ $1_OBJ_FILE_LIST := $$($1_OBJECT_DIR)/_$1_objectfilenames.txt
+ ifneq ($(COMPILER_COMMAND_FILE_FLAG),)
+ $1_LD_OBJ_ARG := $(COMPILER_COMMAND_FILE_FLAG)$$($1_OBJ_FILE_LIST)
+ else
+ # ...except for toolchains which don't support them.
+ $1_LD_OBJ_ARG := `cat $$($1_OBJ_FILE_LIST)`
+ endif
+ endif
+
+ $$($1_TARGET): $$($1_ALL_OBJS) $$($1_RES) $$($1_REAL_MAPFILE) \
+ $$($1_VARDEPS_FILE)
+ ifneq ($$($1_OBJ_FILE_LIST), )
+ $$(eval $$(call ListPathsSafely, $1_ALL_OBJS, $$($1_OBJ_FILE_LIST)))
+ endif
+ # Keep as much as possible on one execution line for best performance
+ # on Windows
+ $$(call LogInfo, Linking $$($1_BASENAME))
+ ifeq ($(OPENJDK_TARGET_OS), windows)
+ $$(call ExecuteWithLog, $$($1_OBJECT_DIR)/$$($1_SAFE_NAME)_link, \
+ $$($1_LD) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) $$($1_SYSROOT_LDFLAGS) \
+ $(LD_OUT_OPTION)$$@ $$($1_LD_OBJ_ARG) $$($1_RES) $$($1_LIBS) \
+ $$($1_EXTRA_LIBS)) \
+ | $(GREP) -v "^ Creating library .*\.lib and object .*\.exp" || \
+ test "$$$$?" = "1" ; \
+ $$($1_CREATE_DEBUGINFO_CMDS)
+ $$($1_STRIP_CMD)
+ else
+ $$(call ExecuteWithLog, $$($1_OBJECT_DIR)/$$($1_SAFE_NAME)_link, \
+ $$($1_LD) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) $$($1_SYSROOT_LDFLAGS) \
+ $(LD_OUT_OPTION)$$@ $$($1_LD_OBJ_ARG) $$($1_RES) $$($1_LIBS) \
+ $$($1_EXTRA_LIBS)) ; \
+ $$($1_CREATE_DEBUGINFO_CMDS)
+ $$($1_STRIP_CMD)
+ endif
+
+ endif
+
+ ifneq (,$$($1_STATIC_LIBRARY))
+ $1_VARDEPS := $$($1_AR) $$($1_ARFLAGS) $$($1_LIBS) \
+ $$($1_EXTRA_LIBS)
+ $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \
+ $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).vardeps)
+
+ # Generating a static library, ie object file archive.
+ ifeq ($(STATIC_BUILD), true)
+ ifeq ($$($1_USE_MAPFILE_FOR_SYMBOLS), true)
+ STATIC_MAPFILE_DEP := $$($1_MAPFILE)
+ endif
+ endif
+
+ $$($1_TARGET): $$($1_ALL_OBJS) $$($1_RES) $$($1_VARDEPS_FILE) $$(STATIC_MAPFILE_DEP)
+ $$(call LogInfo, Archiving $$($1_STATIC_LIBRARY))
+ $$(call ExecuteWithLog, $$($1_OBJECT_DIR)/$$($1_SAFE_NAME)_link, \
+ $$($1_AR) $$($1_ARFLAGS) $(AR_OUT_OPTION)$$($1_TARGET) $$($1_ALL_OBJS) \
+ $$($1_RES))
+ ifeq ($(STATIC_BUILD), true)
+ ifeq ($$($1_USE_MAPFILE_FOR_SYMBOLS), true)
+ $(CP) $$($1_MAPFILE) $$(@D)/$$(basename $$(@F)).symbols
+ else
+ $(GetSymbols)
+ endif
+ endif
+ endif
+
+ ifneq (,$$($1_PROGRAM))
+ # A executable binary has been specified, setup the target for it.
+ $1_VARDEPS := $$($1_LD) $$($1_SYSROOT_LDFLAGS) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) \
+ $$($1_LIBS) $$($1_EXTRA_LIBS) $$($1_MT) \
+ $$($1_CODESIGN) $$($1_CREATE_DEBUGINFO_CMDS) $$($1_MANIFEST_VERSION) \
+ $$($1_STRIP_CMD)
+ $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS, \
+ $$($1_OBJECT_DIR)/$$($1_NOSUFFIX).vardeps)
+
+ ifeq ($(OPENJDK_TARGET_OS), windows)
+ ifeq ($$($1_EMBED_MANIFEST), true)
+ $1_EXTRA_LDFLAGS += -manifest:embed
+ endif
+ endif
+
+ $$($1_TARGET): $$($1_ALL_OBJS) $$($1_RES) $$($1_MANIFEST) \
+ $$($1_VARDEPS_FILE)
+ $$(call LogInfo, Linking executable $$($1_BASENAME))
+ $$(call ExecuteWithLog, $$($1_OBJECT_DIR)/$$($1_SAFE_NAME)_link, \
+ $$($1_LD) $$($1_LDFLAGS) $$($1_EXTRA_LDFLAGS) $$($1_SYSROOT_LDFLAGS) \
+ $(EXE_OUT_OPTION)$$($1_TARGET) \
+ $$($1_ALL_OBJS) $$($1_RES) \
+ $$($1_LIBS) $$($1_EXTRA_LIBS))
+ ifeq ($(OPENJDK_TARGET_OS), windows)
+ ifneq ($$($1_MANIFEST), )
+ $$($1_MT) -nologo -manifest $$($1_MANIFEST) -identity:"$$($1_PROGRAM).exe, version=$$($1_MANIFEST_VERSION)" -outputresource:$$@;#1
+ endif
+ endif
+ # This only works if the openjdk_codesign identity is present on the system. Let
+ # silently fail otherwise.
+ ifneq (,$(CODESIGN))
+ ifneq (,$$($1_CODESIGN))
+ $(CODESIGN) -s openjdk_codesign $$@
+ endif
+ endif
+ $$($1_CREATE_DEBUGINFO_CMDS)
+ $$($1_STRIP_CMD)
+
+ endif
+endef
+
+endif # _NATIVE_COMPILATION_GMK
diff --git a/make/common/ProcessMarkdown.gmk b/make/common/ProcessMarkdown.gmk
new file mode 100644
index 0000000..fe4d30e
--- /dev/null
+++ b/make/common/ProcessMarkdown.gmk
@@ -0,0 +1,103 @@
+# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+ifeq (,$(_MAKEBASE_GMK))
+ $(error You must include MakeBase.gmk prior to including ProcessMarkdown.gmk)
+endif
+
+# Helper function for SetupProcessMarkdown
+# $1: The $1 from SetupProcessMarkdown
+# $2: The name of the current source file, relative to $1_SRC
+define ProcessMarkdown
+ $1_$2_OUTPUT_FILE := $$($1_DEST)/$$(basename $2).html
+ $1_$2_TARGET_DIR := $$(dir $$($1_$2_OUTPUT_FILE))
+ ifneq ($$($1_CSS), )
+ ifneq ($$(findstring http:/, $$($1_CSS)), )
+ $1_$2_CSS_OPTION := --css '$$($1_CSS)'
+ else
+ $1_$2_CSS := $$(strip $$(call RelativePath, $$($1_CSS), $$($1_$2_TARGET_DIR)))
+ $1_$2_CSS_OPTION := --css '$$($1_$2_CSS)'
+ endif
+ endif
+ $1_$2_OPTIONS = $$(shell $$(GREP) _pandoc-options_: $$($1_SRC)/$2 | $$(CUT) -d : -f 2-)
+ $1_$2_MARKER := $$(subst /,_,$1_$2)
+
+ $1_$2_VARDEPS := $$($1_OPTIONS) $$($1_CSS)
+ $1_$2_VARDEPS_FILE := $$(call DependOnVariable, $1_$2_VARDEPS, \
+ $$(SUPPORT_OUTPUTDIR)/markdown/$$($1_$2_MARKER).vardeps)
+
+$$($1_$2_OUTPUT_FILE): $$($1_SRC)/$2 $$($1_$2_VARDEPS_FILE)
+ $$(call LogInfo, Converting $2 to html)
+ $$(call MakeDir, $$($1_$2_TARGET_DIR) $$(SUPPORT_OUTPUTDIR)/markdown)
+ $$(call ExecuteWithLog, $$(SUPPORT_OUTPUTDIR)/markdown/$$($1_$2_MARKER), \
+ $$(PANDOC) $$($1_OPTIONS) -f markdown -t html5 --standalone \
+ $$($1_$2_CSS_OPTION) $$($1_$2_OPTIONS) '$$<' -o '$$@')
+ ifneq ($$(findstring $$(LOG_LEVEL), debug trace),)
+ TOO_LONG_LINES=`$$(GREP) -E -e '^.{80}.+$$$$' $$<` || true ; \
+ if [ "x$$$$TOO_LONG_LINES" != x ]; then \
+ $$(ECHO) "Warning: Unsuitable markdown in $$<:" ; \
+ $$(ECHO) "The following lines are longer than 80 characters:" ; \
+ $$(GREP) -E -n -e '^.{80}.+$$$$' $$< || true ; \
+ fi
+ endif
+
+ $1 += $$($1_$2_OUTPUT_FILE)
+endef
+
+################################################################################
+# Setup make rules for converting a markdown file to html.
+#
+# Parameter 1 is the name of the rule. This name is used as variable prefix,
+# and the targets generated are listed in a variable by that name.
+#
+# Remaining parameters are named arguments. These include:
+# SRC : Source root dir (defaults to dir of first file)
+# DEST : Dest root dir
+# FILES : List of files to copy with absolute paths, or path relative to SRC.
+# Must be in SRC.
+# OPTIONS : Additional options to pandoc
+#
+SetupProcessMarkdown = $(NamedParamsMacroTemplate)
+define SetupProcessMarkdownBody
+ ifeq ($$($1_FILES), )
+ $$(error FILES is missing in SetupProcessMarkdown $1)
+ endif
+
+ ifeq ($$($1_DEST), )
+ $$(error DEST is missing in SetupProcessMarkdown $1)
+ endif
+
+ # Default SRC to the dir of the first file.
+ ifeq ($$($1_SRC), )
+ $1_SRC := $$(dir $$(firstword $$($1_FILES)))
+ endif
+
+ # Remove any trailing slash from SRC and DEST
+ $1_SRC := $$(patsubst %/,%,$$($1_SRC))
+ $1_DEST := $$(patsubst %/,%,$$($1_DEST))
+
+ $$(foreach f, $$(patsubst $$($1_SRC)/%,%,$$($1_FILES)), \
+ $$(eval $$(call ProcessMarkdown,$1,$$f)) \
+ )
+endef
diff --git a/make/common/RMICompilation.gmk b/make/common/RMICompilation.gmk
new file mode 100644
index 0000000..6668f68
--- /dev/null
+++ b/make/common/RMICompilation.gmk
@@ -0,0 +1,85 @@
+#
+# Copyright (c) 2011, 2014, 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.
+#
+
+# Setup make rules for creating an RMI compilation.
+#
+# Parameter 1 is the name of the rule. This name is used as variable prefix,
+# and the targets generated are listed in a variable by that name.
+#
+# Remaining parameters are named arguments. These include:
+# CLASSES:=List of classes to generate stubs for
+# CLASSES_DIR:=Directory where to look for classes
+# STUB_CLASSES_DIR:=Directory in where to put stub classes
+# RUN_V11:=Set to run rmic with -v1.1
+# RUN_V12:=Set to run rmic with -v1.2
+# KEEP_GENERATED:=Set to keep generated sources around
+SetupRMICompilation = $(NamedParamsMacroTemplate)
+define SetupRMICompilationBody
+
+ $1_DEP_FILE := $$($1_STUB_CLASSES_DIR)/_the.$1_rmic.generated
+
+ $1_CLASSES_SLASH := $$(subst .,/,$$($1_CLASSES))
+ $1_CLASS_FILES := $$(addprefix $$($1_CLASSES_DIR)/,$$(addsuffix .class,$$($1_CLASSES_SLASH)))
+ $1_STUB_FILES := $$(addprefix $$($1_STUB_CLASSES_DIR)/,$$(addsuffix _Stub.class,$$($1_CLASSES_SLASH)))
+ $1_TARGETS := $$($1_STUB_FILES)
+ $1_ARGS :=
+ ifneq (,$$($1_RUN_V11))
+ $1_SKEL_FILES := $$(addprefix $$($1_STUB_CLASSES_DIR)/,$$(addsuffix _Skel.class,$$($1_CLASSES_SLASH)))
+ $1_TARGETS += $$($1_SKEL_FILES)
+ $1_ARGS += -v1.1
+ endif
+ ifneq (,$$($1_RUN_V12))
+ $1_ARGS += -v1.2
+ endif
+
+ $1_TIE_BASE_FILES := $$(foreach f,$$($1_CLASSES_SLASH),$$(dir $$f)_$$(notdir $$f))
+ $1_TIE_FILES := $$(addprefix $$($1_STUB_CLASSES_DIR)/org/omg/stub/,$$(addsuffix _Tie.class,$$($1_TIE_BASE_FILES)))
+ $1_TIE_STDPKG_FILES := $$(addprefix $$($1_STUB_CLASSES_DIR)/,$$(addsuffix _Tie.class,$$($1_TIE_BASE_FILES)))
+
+ ifneq (,$$($1_KEEP_GENERATED))
+ $1_ARGS += -keepgenerated
+ $1_TARGETS += $$(subst .class,.java,$$($1_TARGETS))
+ endif
+
+ $1_DOLLAR_SAFE_CLASSES := $$(subst $$$$,\$$$$,$$($1_CLASSES))
+
+ $$($1_TARGETS): $$($1_DEP_FILE) $$($1_CLASS_FILES)
+
+ $$($1_DEP_FILE): $$($1_CLASS_FILES)
+ $$(call LogInfo, Running rmic $$($1_ARGS) for $$($1_DOLLAR_SAFE_CLASSES))
+ $$(call MakeDir, $$($1_STUB_CLASSES_DIR))
+ $(RMIC) $$($1_ARGS) -classpath "$$($1_CLASSES_DIR)" \
+ -d $$($1_STUB_CLASSES_DIR) $$($1_DOLLAR_SAFE_CLASSES); \
+ if [ "x$$($1_ARGS2)" != "x" ]; then \
+ $(ECHO) $(LOG_INFO) Running rmic $$($1_ARGS2) for $$($1_DOLLAR_SAFE_CLASSES) && \
+ $(RMIC) $$($1_ARGS2) -classpath "$$($1_CLASSES_DIR)" \
+ -d $$($1_STUB_CLASSES_DIR) $$($1_DOLLAR_SAFE_CLASSES); \
+ fi; \
+ $(TOUCH) $$@
+
+
+ $1 := $$($1_TARGETS) $$($1_DEP_FILE)
+
+endef
diff --git a/make/common/SetupJavaCompilers.gmk b/make/common/SetupJavaCompilers.gmk
new file mode 100644
index 0000000..4e7c8ee
--- /dev/null
+++ b/make/common/SetupJavaCompilers.gmk
@@ -0,0 +1,98 @@
+#
+# Copyright (c) 2011, 2016, 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.
+#
+
+ifndef _SETUP_GMK
+_SETUP_GMK := 1
+
+include JavaCompilation.gmk
+
+DISABLE_WARNINGS := -Xlint:all,-deprecation,-removal,-unchecked,-rawtypes,-cast,-serial,-dep-ann,-static,-fallthrough,-try,-varargs,-empty,-finally
+
+# If warnings needs to be non-fatal for testing purposes use a command like:
+# make JAVAC_WARNINGS="-Xlint:all -Xmaxwarns 10000"
+JAVAC_WARNINGS := -Xlint:all -Werror
+
+# The BOOT_JAVAC setup uses the boot jdk compiler to compile the tools
+# and the interim javac, to be run by the boot jdk.
+$(eval $(call SetupJavaCompiler,BOOT_JAVAC, \
+ JAVAC := $(JAVAC), \
+ FLAGS := \
+ $(JAVA_TOOL_FLAGS_SMALL) \
+ $(BOOT_JDK_SOURCETARGET) \
+ -XDignore.symbol.file=true -g \
+ -Xlint:all$(COMMA)-deprecation$(COMMA)-options -Werror, \
+ DISABLE_SJAVAC := true, \
+))
+
+# Any java code executed during a JDK build to build other parts of the JDK must be
+# executed by the bootstrap JDK (probably with -Xbootclasspath/p: ) and for this
+# purpose must be built with -target PREVIOUS for bootstrapping purposes, which
+# requires restricting to language level and api of previous JDK.
+#
+# The generate old bytecode javac setup uses the new compiler to compile for the
+# boot jdk to generate tools that need to be run with the boot jdk.
+# Thus we force the target bytecode to the previous JDK version.
+# Add -Xlint:-options to avoid the warning about not setting -bootclasspath. Since
+# it's running on the boot jdk, the default bootclasspath is correct.
+$(eval $(call SetupJavaCompiler,GENERATE_OLDBYTECODE, \
+ JVM := $(JAVA_SMALL), \
+ JAVAC := $(NEW_JAVAC), \
+ FLAGS := $(BOOT_JDK_SOURCETARGET) -XDignore.symbol.file=true -XDstringConcat=inline \
+ $(DISABLE_WARNINGS) -Xlint:-options, \
+ SERVER_DIR := $(SJAVAC_SERVER_DIR), \
+ SERVER_JVM := $(SJAVAC_SERVER_JAVA)))
+
+# The generate new bytecode javac setup uses the new compiler to compile for the
+# new jdk. This new bytecode might only be possible to run using the new jvm.
+$(eval $(call SetupJavaCompiler,GENERATE_JDKBYTECODE, \
+ JVM := $(JAVA_JAVAC), \
+ JAVAC := $(NEW_JAVAC), \
+ FLAGS := -source 9 -target 9 --doclint-format html5 \
+ -encoding ascii -XDignore.symbol.file=true $(JAVAC_WARNINGS), \
+ SERVER_DIR := $(SJAVAC_SERVER_DIR), \
+ SERVER_JVM := $(SJAVAC_SERVER_JAVA)))
+
+# The generate new bytecode javac setup uses the new compiler to compile for the
+# new jdk. This new bytecode might only be possible to run using the new jvm.
+$(eval $(call SetupJavaCompiler,GENERATE_JDKBYTECODE_NOWARNINGS, \
+ JVM := $(JAVA_JAVAC), \
+ JAVAC := $(NEW_JAVAC), \
+ FLAGS := -source 9 -target 9 \
+ -encoding ascii -XDignore.symbol.file=true $(DISABLE_WARNINGS), \
+ SERVER_DIR := $(SJAVAC_SERVER_DIR), \
+ SERVER_JVM := $(SJAVAC_SERVER_JAVA)))
+
+# After the jdk is built, we want to build demos using only the recently
+# generated jdk classes and nothing else, no jdk source, etc etc.
+# I.e. the rt.jar, but since rt.jar has not yet been generated
+# (it will be in "make images") therefore we use classes instead.
+$(eval $(call SetupJavaCompiler,GENERATE_USINGJDKBYTECODE, \
+ JVM := $(JAVA_SMALL), \
+ JAVAC := $(NEW_JAVAC), \
+ FLAGS := --upgrade-module-path $(JDK_OUTPUTDIR)/modules --system none $(DISABLE_WARNINGS), \
+ SERVER_DIR := $(SJAVAC_SERVER_DIR), \
+ SERVER_JVM := $(SJAVAC_SERVER_JAVA)))
+
+endif # _SETUP_GMK
diff --git a/make/common/TestFilesCompilation.gmk b/make/common/TestFilesCompilation.gmk
new file mode 100644
index 0000000..62f9722
--- /dev/null
+++ b/make/common/TestFilesCompilation.gmk
@@ -0,0 +1,99 @@
+#
+# Copyright (c) 2015, 2016, 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.
+#
+
+ifndef _TEST_FILES_COMPILATION_GMK
+_TEST_FILES_COMPILATION_GMK := 1
+
+ifeq (,$(_MAKEBASE_GMK))
+ $(error You must include MakeBase.gmk prior to including TestFilesCompilation.gmk)
+endif
+
+
+include NativeCompilation.gmk
+
+# Setup make rules for creating a set of native test files (libraries or
+# executables). This will locate native files matching a certain pattern,
+# and compile these into libraries or executables.
+#
+# Parameter 1 is the name of the rule. This name is used as variable prefix,
+# and the targets generated are listed in a variable by that name.
+#
+# Remaining parameters are named arguments. These include:
+# TYPE Must be either PROGRAM or LIBRARY.
+# SOURCE_DIRS A list of source directories to search
+# OUTPUT_DIR Where to put the resulting files
+SetupTestFilesCompilation = $(NamedParamsMacroTemplate)
+define SetupTestFilesCompilationBody
+
+ # Check for duplicate base file names. That would have failed later anyhow, but
+ # this gives a better error message.
+ $1_DUPLICATED_NAMES := $$(call dups, $$(notdir $$($1_FILE_LIST)))
+ ifneq ($$($1_DUPLICATED_NAMES), )
+ $$(error There are duplicate test file names for $1: $$($1_DUPLICATED_NAMES))
+ endif
+
+ # The list to depend on starts out empty
+ $1 :=
+ ifeq ($$($1_TYPE), LIBRARY)
+ $1_PREFIX = lib
+ $1_OUTPUT_SUBDIR := lib
+ $1_CFLAGS := $(CFLAGS_TESTLIB) $(CFLAGS_WARNINGS_ARE_ERRORS)
+ $1_LDFLAGS := $(LDFLAGS_TESTLIB) $(call SET_SHARED_LIBRARY_ORIGIN)
+ else ifeq ($$($1_TYPE), PROGRAM)
+ $1_PREFIX = exe
+ $1_OUTPUT_SUBDIR := bin
+ $1_CFLAGS := $(CFLAGS_TESTEXE) $(CFLAGS_WARNINGS_ARE_ERRORS)
+ $1_LDFLAGS := $(LDFLAGS_TESTEXE)
+ else
+ $$(error Unknown type: $$($1_TYPE))
+ endif
+
+ # Locate all files with the matching prefix
+ $1_FILE_LIST := \
+ $$(shell $$(FIND) $$($1_SOURCE_DIRS) -type f -name "$$($1_PREFIX)*.c")
+
+ # Setup a compilation for each and every one of them
+ $$(foreach file, $$($1_FILE_LIST),\
+ $$(eval name := $$(strip $$(patsubst $$($1_PREFIX)%, %, $$(basename $$(notdir $$(file)))))) \
+ $$(eval $$(call SetupNativeCompilation, BUILD_TEST_$$(name), \
+ $$($1_TYPE) := $$(name), \
+ SRC := $$(patsubst %/,%,$$(dir $$(file))), \
+ INCLUDE_FILES := $$(notdir $$(file)), \
+ OBJECT_DIR := $$($1_OUTPUT_DIR)/support/$$($1_PREFIX)$$(name), \
+ OUTPUT_DIR := $$($1_OUTPUT_DIR)/$$($1_OUTPUT_SUBDIR), \
+ LANG := C, \
+ CFLAGS := $$($1_CFLAGS) $$($1_CFLAGS_$$($1_PREFIX)$$(name)), \
+ LDFLAGS := $$($1_LDFLAGS) $$($1_LDFLAGS_$$($1_PREFIX)$$(name)), \
+ LIBS := $$($1_LIBS_$$($1_PREFIX)$$(name)), \
+ OPTIMIZATION := LOW, \
+ COPY_DEBUG_SYMBOLS := false, \
+ STRIP_SYMBOLS := false, \
+ )) \
+ $$(eval $1 += $$(BUILD_TEST_$$(name)) ) \
+ )
+
+endef
+
+endif # _TEST_FILES_COMPILATION_GMK
diff --git a/make/common/TextFileProcessing.gmk b/make/common/TextFileProcessing.gmk
new file mode 100644
index 0000000..96eb665
--- /dev/null
+++ b/make/common/TextFileProcessing.gmk
@@ -0,0 +1,226 @@
+#
+# Copyright (c) 2013, 2014, 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.
+#
+
+ifeq (,$(_MAKEBASE_GMK))
+ $(error You must include MakeBase.gmk prior to including TextFileProcessing.gmk)
+endif
+
+# Helper function for SetupTextFileProcessing; adds a rule for a single file
+# to be processed.
+# param 1 = The namespace argument, e.g. BUILD_VERSION_FILE
+# param 2 = the source file name (full path)
+# param 3 = the target base directory
+# param 4 = the target file name (possibly with a partial path)
+define SetupSingleTextFileForProcessing
+ $(strip $3)/$(strip $4): $2 $$($1_VARDEPS_FILE)
+ $$(call LogInfo, Processing $(strip $4))
+ $$(call MakeDir, $$(@D))
+ $(RM) '$$@' '$$@.includes.tmp' '$$@.replacements.tmp' ; \
+ $$($1_INCLUDES_COMMAND_LINE) < '$$<' > '$$@.includes.tmp' ; \
+ $$($1_REPLACEMENTS_COMMAND_LINE) < '$$@.includes.tmp' > '$$@.replacements.tmp' ; \
+ $(RM) '$$@.includes.tmp' ; \
+ $(MV) '$$@.replacements.tmp' '$$@'
+
+ $1 += $(strip $3)/$(strip $4)
+endef
+
+# Setup make rules for processing one or more text files, in which specified
+# markers are replaced with a given text, or with the contents of a given file.
+#
+# Parameter 1 is the name of the rule. This name is used as variable prefix,
+# and the targets generated are listed in a variable by that name.
+#
+# Remaining parameters are named arguments. These include:
+# SOURCE_DIRS one or more directory roots to search for files to process
+# SOURCE_FILES complete paths to one or more files to process
+# OUTPUT_DIR the directory where we store the processed files.
+# OUTPUT_FILE the name of the resulting file. Only allowed if processing a
+# single file.
+# SOURCE_BASE_DIR a common root to all SOURCE_DIRS.
+# If specified, files will keep the path relative to the base in the
+# OUTPUT_DIR. Otherwise, the hierarchy will be flattened into the OUTPUT_DIR.
+# INCLUDE_FILES only include files matching these patterns (used only with
+# SOURCE_DIRS)
+# EXCLUDE_FILES exclude files matching these patterns (used only with
+# SOURCE_DIRS)
+# INCLUDES replace the occurances of a pattern with the contents of a file;
+# one or more such include pattern, using the syntax:
+# PLACEHOLDER => FILE_TO_INCLUDE ; ...
+# Each PLACEHOLDER must be on a single, otherwise empty line (whitespace
+# padding is allowed).
+# REPLACEMENTS one or more text replacement patterns, using the syntax:
+# PATTERN => REPLACEMENT_TEXT ; ...
+#
+# If both INCLUDES or REPLACEMENTS are present, then the includes will be
+# processed first, and replacements will be done on the included fragments as well.
+# If neither is present, the files will just be copied without modifications.
+#
+SetupTextFileProcessing = $(NamedParamsMacroTemplate)
+define SetupTextFileProcessingBody
+
+ ifneq ($$($1_SOURCE_FILES),)
+ ifneq ($$($1_SOURCE_DIRS),)
+ $$(error Cannot use both SOURCE_FILES and SOURCE_DIRS (in $1))
+ endif
+ ifneq ($$($1_SOURCE_BASE_DIR),)
+ $$(error Cannot use SOURCE_BASE_DIR without SOURCE_DIRS (in $1))
+ endif
+ ifneq ($$($1_EXCLUDE_FILES)$$($1_INCLUDE_FILES),)
+ $$(error Cannot INCLUDE/EXCLUDE_FILES with SOURCE_FILES (in $1))
+ endif
+ else
+ ifeq ($$($1_SOURCE_DIRS),)
+ $$(error Must specify either SOURCE_FILES or SOURCE_DIRS (in $1))
+ endif
+ # Find all files in the source trees. Sort to remove duplicates.
+ $$(foreach src, $$($1_SOURCE_DIRS), $$(if $$(wildcard $$(src)), , \
+ $$(error SOURCE_DIRS contains missing directory $$(src) (in $1))))
+ ifneq ($$($1_SOURCE_BASE_DIR),)
+ $$(foreach src, $$($1_SOURCE_DIRS), \
+ $$(if $$(findstring $$($1_SOURCE_BASE_DIR), $$(src)), , \
+ $$(error SOURCE_DIRS contains directory $$(src) outside \
+ SOURCE_BASE_DIR $$($1_SOURCE_BASE_DIR) (in $1))))
+ endif
+ $1_SOURCE_FILES := $$(sort $$(call CacheFind,$$($1_SOURCE_DIRS)))
+ $1_EXCLUDE_FILES:=$$(foreach i,$$($1_SOURCE_DIRS),$$(addprefix $$i/,$$($1_EXCLUDE_FILES)))
+ $1_INCLUDE_FILES:=$$(foreach i,$$($1_SOURCE_DIRS),$$(addprefix $$i/,$$($1_INCLUDE_FILES)))
+ $1_SOURCE_FILES := $$(filter-out $$($1_EXCLUDE_FILES),$$($1_SOURCE_FILES))
+ ifneq (,$$(strip $$($1_INCLUDE_FILES)))
+ $1_SOURCE_FILES := $$(filter $$($1_INCLUDE_FILES),$$($1_SOURCE_FILES))
+ endif
+ ifeq (,$$($1_SOURCE_FILES))
+ $$(info No sources found for $1 when looking inside the dirs $$($1_SRC))
+ endif
+ endif
+
+ ifneq ($$($1_REPLACEMENTS),)
+ # We have a replacement request, prepare it for the recipe
+ ifneq ($$(findstring /,$$($1_REPLACEMENTS)),)
+ # Cannot use / as separator
+ ifneq ($$(findstring @,$$($1_REPLACEMENTS)),)
+ # Cannot use @ as separator
+ ifneq ($$(findstring |,$$($1_REPLACEMENTS)),)
+ # Cannot use | as separator
+ ifneq ($$(findstring !,$$($1_REPLACEMENTS)),)
+ # Cannot use ! as separator. Give up.
+ $$(error No suitable sed separator can be found for $1. Tested /, @, | and !)
+ else
+ $1_SEP := !
+ endif
+ else
+ $1_SEP := |
+ endif
+ else
+ $1_SEP := @
+ endif
+ else
+ $1_SEP := /
+ endif
+
+ # If we have a trailing "=>" (i.e. last rule replaces with empty, and is not
+ # terminated by a ;), add a trailing ; to minimize the number of corner
+ # cases in the hairy subst expression..
+ ifeq ($$(lastword $$($1_REPLACEMENTS)), =>)
+ $1_REPLACEMENTS += ;
+ endif
+
+ # If we have a trailing ";", add a dummy replacement, since there is no easy
+ # way to delete the last word in make.
+ ifeq ($$(lastword $$($1_REPLACEMENTS)), ;)
+ $1_REPLACEMENTS += DUMMY_REPLACEMENT => DUMMY_REPLACEMENT
+ endif
+
+ # Convert the REPLACEMENTS syntax ( A => B ; C => D ; ...) to a sed command
+ # line (-e "s/A/B/" -e "s/C/D/" ...), basically by replacing '=>' with '/'
+ # and ';' with '/" -e "s/', and adjusting for edge cases.
+ $1_REPLACEMENTS_COMMAND_LINE := $(SED) -e 's$$($1_SEP)$$(subst $$(SPACE);$$(SPACE),$$($1_SEP)' \
+ -e 's$$($1_SEP),$$(subst $$(SPACE)=>$$(SPACE),$$($1_SEP),$$(subst $$(SPACE)=>$$(SPACE);$$(SPACE),$$($1_SEP)$$($1_SEP)' \
+ -e 's$$($1_SEP),$$(strip $$($1_REPLACEMENTS)))))$$($1_SEP)'
+ else
+ # We don't have any replacements, just pipe the file through cat.
+ $1_REPLACEMENTS_COMMAND_LINE := $(CAT)
+ endif
+
+ ifneq ($$($1_INCLUDES),)
+ # We have a include request, prepare it for the recipe.
+ # Convert an INCLUDE like this PATTERN_1 => file1 ; PATTERN_2 => file2 ;
+ # into an awk script fragment like this:
+ # {
+ # if (matches("PATTERN_1")) { include("file1") } else
+ # if (matches("PATTERN_2")) { include("file2") } else
+ # print
+ # }
+
+ $1_INCLUDES_HEADER_AWK := \
+ function matches(pattern) { return ($$$$0 ~ "^[ \t]*" pattern "[ \t]*$$$$") } \
+ function include(filename) { while ((getline < filename) == 1) print ; close(filename) }
+ $1_INCLUDES_PARTIAL_AWK := $$(subst $$(SPACE);,,$$(subst $$(SPACE)=>$$(SPACE),"$$(RIGHT_PAREN)$$(RIGHT_PAREN) \
+ { include$$(LEFT_PAREN)",$$(subst $$(SPACE);$$(SPACE),"$$(RIGHT_PAREN) } \
+ else if $$(LEFT_PAREN)matches$$(LEFT_PAREN)",$$(strip $$($1_INCLUDES)))))
+ $1_INCLUDES_COMMAND_LINE := $(NAWK) '$$($1_INCLUDES_HEADER_AWK) \
+ { if (matches("$$($1_INCLUDES_PARTIAL_AWK)") } else print }'
+ else
+ # We don't have any includes, just pipe the file through cat.
+ $1_INCLUDES_COMMAND_LINE := $(CAT)
+ endif
+
+ $1_VARDEPS := $$($1_INCLUDES_COMMAND_LINE) $$($1_REPLACEMENTS_COMMAND_LINE)
+ $1_VARDEPS_FILE := $$(call DependOnVariable, $1_VARDEPS)
+
+ # Reset target list before populating it
+ $1 :=
+
+ ifneq ($$($1_OUTPUT_FILE),)
+ ifneq ($$(words $$($1_SOURCE_FILES)), 1)
+ $$(error Cannot use OUTPUT_FILE for more than one source file (in $1))
+ endif
+
+ # Note that $1 is space sensitive and must disobey whitespace rules
+ $$(eval $$(call SetupSingleTextFileForProcessing,$1, $$($1_SOURCE_FILES), \
+ $$(patsubst %/, %, $$(dir $$($1_OUTPUT_FILE))), $$(notdir $$($1_OUTPUT_FILE))))
+ else
+ ifeq ($$($1_OUTPUT_DIR),)
+ $$(error Neither OUTPUT_FILE nor OUTPUT_DIR was specified (in $1))
+ endif
+
+ # Now call add_native_source for each source file we are going to process.
+ ifeq ($$($1_SOURCE_BASE_DIR),)
+ # With no base dir specified, put all files in target dir, flattening any
+ # hierarchies. Note that $1 is space sensitive and must disobey whitespace
+ # rules.
+ $$(foreach src, $$($1_SOURCE_FILES), \
+ $$(eval $$(call SetupSingleTextFileForProcessing,$1, $$(src), \
+ $$(patsubst %/, %, $$($1_OUTPUT_DIR)), $$(notdir $$(src)))))
+ else
+ # With a base dir, extract the relative portion of the path. Note that $1
+ # is space sensitive and must disobey whitespace rules, and so is the
+ # arguments to patsubst.
+ $$(foreach src, $$($1_SOURCE_FILES), \
+ $$(eval $$(call SetupSingleTextFileForProcessing,$1, $$(src), \
+ $$(patsubst %/, %, $$($1_OUTPUT_DIR)), \
+ $$(patsubst $$($1_SOURCE_BASE_DIR)/%,%,$$(src)))))
+ endif
+ endif
+endef
diff --git a/make/common/ZipArchive.gmk b/make/common/ZipArchive.gmk
new file mode 100644
index 0000000..79806de
--- /dev/null
+++ b/make/common/ZipArchive.gmk
@@ -0,0 +1,120 @@
+#
+# Copyright (c) 2011, 2014, 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.
+#
+
+ifndef _ZIP_ARCHIVE_GMK
+_ZIP_ARCHIVE_GMK := 1
+
+ifeq (,$(_MAKEBASE_GMK))
+ $(error You must include MakeBase.gmk prior to including ZipArchive.gmk)
+endif
+
+# Setup make rules for creating a zip archive.
+#
+# Parameter 1 is the name of the rule. This name is used as variable prefix,
+# and the targets generated are listed in a variable by that name.
+#
+# Remaining parameters are named arguments. These include:
+# SRC
+# ZIP
+# INCLUDES
+# INCLUDE_FILES
+# EXCLUDES
+# EXCLUDE_FILES
+# SUFFIXES
+# EXTRA_DEPS
+# ZIP_OPTIONS extra options to pass to zip
+SetupZipArchive = $(NamedParamsMacroTemplate)
+define SetupZipArchiveBody
+
+ # To avoid running find over too large sets of files, which causes make to crash
+ # on some configurations (cygwin), use INCLUDES and INCLUDE_FILES to build a set
+ # of directories to run find in, if available.
+ ifneq ($$($1_INCLUDES)$$($1_INCLUDE_FILES),)
+ $1_FIND_LIST := $$(wildcard $$(foreach i,$$($1_SRC), \
+ $$(addprefix $$i/,$$($1_INCLUDES) $$($1_INCLUDE_FILES))))
+ else
+ $1_FIND_LIST := $$($1_SRC)
+ endif
+
+ # Find all files in the source tree.
+ $1_ALL_SRCS := $$(call not-containing,_the.,$$(call CacheFind,$$($1_FIND_LIST)))
+
+ # Filter on suffixes if set
+ ifneq ($$($1_SUFFIXES),)
+ $1_ALL_SRCS := $$(filter $$(addprefix %, $$($1_SUFFIXES)), $$($1_ALL_SRCS))
+ endif
+
+ ifneq ($$($1_INCLUDES),)
+ ifneq ($$($1_SUFFIXES),)
+ $1_ZIP_INCLUDES := $$(foreach s,$$($1_SUFFIXES), \
+ $$(addprefix -i$(SPACE)$(DQUOTE),$$(addsuffix /*$$s$(DQUOTE),$$($1_INCLUDES))))
+ else
+ $1_ZIP_INCLUDES := $$(addprefix -i$(SPACE)$(DQUOTE),$$(addsuffix /*$(DQUOTE),$$($1_INCLUDES)))
+ endif
+ else
+ ifneq ($$($1_SUFFIXES),)
+ $1_ZIP_INCLUDES := $$(foreach s,$$($1_SUFFIXES), \
+ $$(addprefix -i$(SPACE)$(DQUOTE),*$$s$(DQUOTE)))
+ endif
+ endif
+ ifneq ($$($1_INCLUDE_FILES),)
+ $1_ZIP_INCLUDES += $$(addprefix -i$(SPACE),$$($1_INCLUDE_FILES))
+ endif
+ ifneq ($$($1_EXCLUDES),)
+ $1_ZIP_EXCLUDES := $$(addprefix -x$(SPACE)$(DQUOTE),$$(addsuffix /*$(DQUOTE),$$($1_EXCLUDES)))
+ $1_SRC_EXCLUDES := $$(foreach i,$$($1_SRC),$$(addprefix $$i/,$$(addsuffix /%,$$($1_EXCLUDES))))
+ $1_ALL_SRCS := $$(filter-out $$($1_SRC_EXCLUDES),$$($1_ALL_SRCS))
+ endif
+ ifneq ($$($1_EXCLUDE_FILES),)
+ # Cannot precompute ZIP_EXCLUDE_FILES as it is dependent on which src root is being
+ # zipped at the moment.
+ $1_SRC_EXCLUDE_FILES := $$(addprefix %, $$($1_EXCLUDE_FILES)) $$($1_EXCLUDE_FILES)
+ $1_ALL_SRCS := $$(filter-out $$($1_SRC_EXCLUDE_FILES), $$($1_ALL_SRCS))
+ endif
+
+ # Use a slightly shorter name for logging, but with enough path to identify this zip.
+ $1_NAME:=$$(subst $$(OUTPUT_ROOT)/,,$$($1_ZIP))
+
+ # Now $1_ALL_SRCS should contain all sources that are going to be put into the zip.
+ # I.e. the zip -i and -x options should match the filtering done in the makefile.
+ # Explicitly excluded files can be given with absolute path. The patsubst solution
+ # isn't perfect but the likelyhood of an absolute path to match something in a src
+ # dir is very small.
+ # If zip has nothing to do, it returns 12 and would fail the build. Check for 12
+ # and only fail if it's not.
+ $$($1_ZIP) : $$($1_ALL_SRCS) $$($1_EXTRA_DEPS)
+ $(MKDIR) -p $$(@D)
+ $(ECHO) Updating $$($1_NAME)
+ $$(foreach i,$$($1_SRC),(cd $$i && $(ZIPEXE) -qru $$($1_ZIP_OPTIONS) $$@ . $$($1_ZIP_INCLUDES) \
+ $$($1_ZIP_EXCLUDES) -x \*_the.\* \
+ $$(addprefix -x$(SPACE), $$(patsubst $$i/%,%, $$($1_EXCLUDE_FILES))) \
+ || test "$$$$?" = "12" )$$(NEWLINE)) true
+ $(TOUCH) $$@
+
+ # Add zip to target list
+ $1 += $$($1_ZIP)
+endef
+
+endif # _ZIP_ARCHIVE_GMK
diff --git a/make/common/support/ListPathsSafely-post-compress.incl b/make/common/support/ListPathsSafely-post-compress.incl
new file mode 100644
index 0000000..d8ccf22
--- /dev/null
+++ b/make/common/support/ListPathsSafely-post-compress.incl
@@ -0,0 +1 @@
+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
diff --git a/make/common/support/ListPathsSafely-pre-compress.incl b/make/common/support/ListPathsSafely-pre-compress.incl
new file mode 100644
index 0000000..af46a59
--- /dev/null
+++ b/make/common/support/ListPathsSafely-pre-compress.incl
@@ -0,0 +1 @@
+$(subst share/classes,X01,$(subst internal,X02,$(subst com/sun/org,X03,$(subst java,X04,$(subst javax,X05,$(subst sun/io,X06,$(subst com/sun,X07,$(subst java/io,X08,$(subst org/omg,X09,$(subst org/w3c,X10,$(subst org/xml,X11,$(subst sun/awt,X12,$(subst sun/net,X13,$(subst sun/nio,X14,$(subst sun/rmi,X15,$(subst java/awt,X16,$(subst java/net,X17,$(subst java/nio,X18,$(subst java/rmi,X19,$(subst META-INF,X20,$(subst sun/font,X21,$(subst sun/misc,X22,$(subst sun/text,X23,$(subst sun/util,X24,$(subst java/lang,X25,$(subst java/math,X26,$(subst java/text,X27,$(subst java/util,X28,$(subst javax/jws,X29,$(subst javax/net,X30,$(subst javax/rmi,X31,$(subst javax/xml,X32,$(subst sun/corba,X33,$(subst sun/print,X34,$(subst sun/swing,X35,$(subst java/beans,X36,$(subst javax/lang,X37,$(subst sun/applet,X38,$(subst sun/java2d,X39,$(subst java/applet,X40,$(subst javax/print,X41,$(subst javax/sound,X42,$(subst javax/swing,X43,$(subst javax/tools,X44,$(subst jdk/classes,X45,$(subst org/relaxng,X46,$(subst sun/reflect,X47,$(subst javax/crypto,X48,$(subst javax/naming,X49,$(subst jaxp/classes,X50,$(subst sun/security,X51,$(subst corba/classes,X52,$(subst java/security,X53,$(subst javax/imageio,X54,$(subst jdk/btclasses,X55,$(subst javax/activity,X56,$(subst javax/security,X57,$(subst jdk/newclasses,X58,$(subst sun/instrument,X59,$(subst sun/management,X60,$(subst corba/btclasses,X61,$(subst jdk/democlasses,X62,$(subst javax/activation,X63,$(subst javax/annotation,X64,$(subst javax/management,X65,$(subst javax/transaction,X66,$(subst jaxws/jaf_classes,X67,$(subst langtools/classes,X68,$(subst META-INF/services,X69,$(subst jdk/newdemoclasses,X70,$(subst javax/accessibility,X71,$(subst jaxws/jaxws_classes,X72,
diff --git a/make/common/support/ListPathsSafely-uncompress.sed b/make/common/support/ListPathsSafely-uncompress.sed
new file mode 100644
index 0000000..31478f5
--- /dev/null
+++ b/make/common/support/ListPathsSafely-uncompress.sed
@@ -0,0 +1,72 @@
+s|X01|share/classes|g
+s|X02|internal|g
+s|X03|com/sun/org|g
+s|X04|java|g
+s|X05|javax|g
+s|X06|sun/io|g
+s|X07|com/sun|g
+s|X08|java/io|g
+s|X09|org/omg|g
+s|X10|org/w3c|g
+s|X11|org/xml|g
+s|X12|sun/awt|g
+s|X13|sun/net|g
+s|X14|sun/nio|g
+s|X15|sun/rmi|g
+s|X16|java/awt|g
+s|X17|java/net|g
+s|X18|java/nio|g
+s|X19|java/rmi|g
+s|X20|META-INF|g
+s|X21|sun/font|g
+s|X22|sun/misc|g
+s|X23|sun/text|g
+s|X24|sun/util|g
+s|X25|java/lang|g
+s|X26|java/math|g
+s|X27|java/text|g
+s|X28|java/util|g
+s|X29|javax/jws|g
+s|X30|javax/net|g
+s|X31|javax/rmi|g
+s|X32|javax/xml|g
+s|X33|sun/corba|g
+s|X34|sun/print|g
+s|X35|sun/swing|g
+s|X36|java/beans|g
+s|X37|javax/lang|g
+s|X38|sun/applet|g
+s|X39|sun/java2d|g
+s|X40|java/applet|g
+s|X41|javax/print|g
+s|X42|javax/sound|g
+s|X43|javax/swing|g
+s|X44|javax/tools|g
+s|X45|jdk/classes|g
+s|X46|org/relaxng|g
+s|X47|sun/reflect|g
+s|X48|javax/crypto|g
+s|X49|javax/naming|g
+s|X50|jaxp/classes|g
+s|X51|sun/security|g
+s|X52|corba/classes|g
+s|X53|java/security|g
+s|X54|javax/imageio|g
+s|X55|jdk/btclasses|g
+s|X56|javax/activity|g
+s|X57|javax/security|g
+s|X58|jdk/newclasses|g
+s|X59|sun/instrument|g
+s|X60|sun/management|g
+s|X61|corba/btclasses|g
+s|X62|jdk/democlasses|g
+s|X63|javax/activation|g
+s|X64|javax/annotation|g
+s|X65|javax/management|g
+s|X66|javax/transaction|g
+s|X67|jaxws/jaf_classes|g
+s|X68|langtools/classes|g
+s|X69|META-INF/services|g
+s|X70|jdk/newdemoclasses|g
+s|X71|javax/accessibility|g
+s|X72|jaxws/jaxws_classes|g
diff --git a/make/common/support/unicode2x.sed b/make/common/support/unicode2x.sed
new file mode 100644
index 0000000..5188b97
--- /dev/null
+++ b/make/common/support/unicode2x.sed
@@ -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
diff --git a/make/devkit/Makefile b/make/devkit/Makefile
new file mode 100644
index 0000000..414251f
--- /dev/null
+++ b/make/devkit/Makefile
@@ -0,0 +1,121 @@
+#
+# Copyright (c) 2013, 2015, 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 Makefile, together with Tools.gmk, can be used to compile a set of
+# gcc based cross compilation, portable, self contained packages, capable
+# of building OpenJDK.
+#
+# In addition to the makefiles, access to Oracle Linux installation
+# media is required. This has been tested against Oracle Enterprise Linux
+# 5.5. Set variables RPM_DIR_x86_64 and RPM_DIR_i686 respectively to point
+# to directory containing the RPMs.
+#
+# By default this Makefile will build crosstools for:
+# * i686-unknown-linux-gnu
+# * x86_64-unknown-linux-gnu
+# The x86_64 version of the compilers will work in multi arch mode and will
+# be able to compile 32bit binaries with the -m32 flag. This makes the
+# explicit cross compiler for i686 somewhat redundant and is a known issue.
+#
+# To build the full set of crosstools, use a command line looking like this:
+#
+# make tars RPM_DIR_x86_64=/tmp/oel64-x86_64/Packages/ RPM_DIR_i686=/tmp/oel64-i686/Packages/
+#
+# To create a x86_64 package without the redundant i686 cross compiler, do
+# like this:
+#
+# make tars platforms=x86_64-unknown-linux-gnu RPM_DIR_x86_64=/tmp/oel64-x86_64/Packages/ RPM_DIR_i686=/tmp/oel64-i686/Packages/
+
+#
+# Main makefile which iterates over all host and target platforms.
+#
+
+os := $(shell uname -o)
+cpu := x86_64
+#$(shell uname -p)
+
+#
+# This wrapper script can handle exactly these platforms
+#
+platforms := $(foreach p,x86_64 i686,$(p)-unknown-linux-gnu)
+#platforms := $(foreach p,x86_64,$(p)-unknown-linux-gnu)
+
+# Figure out what platform this is building on.
+me := $(cpu)-$(if $(findstring Linux,$(os)),unknown-linux-gnu)
+
+$(info Building on platform $(me))
+
+all compile : $(platforms)
+
+ifeq (,$(SKIP_ME))
+ $(foreach p,$(filter-out $(me),$(platforms)),$(eval $(p) : $$(me)))
+endif
+
+OUTPUT_ROOT = $(abspath ../../build/devkit)
+RESULT = $(OUTPUT_ROOT)/result
+
+submakevars = HOST=$@ BUILD=$(me) \
+ RESULT=$(RESULT) PREFIX=$(RESULT)/$@ \
+ OUTPUT_ROOT=$(OUTPUT_ROOT)
+$(platforms) :
+ @echo 'Building compilers for $@'
+ @echo 'Targets: $(platforms)'
+ for p in $@ $(filter-out $@,$(platforms)); do \
+ $(MAKE) -f Tools.gmk all $(submakevars) \
+ TARGET=$$p || exit 1 ; \
+ done
+ @echo 'Building ccache program for $@'
+ $(MAKE) -f Tools.gmk ccache $(submakevars) TARGET=$@
+ @echo 'All done"'
+
+$(foreach a,i686 x86_64,$(eval $(a) : $(filter $(a)%,$(platforms))))
+
+ia32 : i686
+today := $(shell date +%Y%m%d)
+
+
+define Mktar
+ $(1)_tar = $$(RESULT)/sdk-$(1)-$$(today).tar.gz
+ $$($(1)_tar) : PLATFORM = $(1)
+ TARFILES += $$($(1)_tar)
+ $$($(1)_tar) : $(1) $$(shell find $$(RESULT)/$(1))
+endef
+
+$(foreach p,$(platforms),$(eval $(call Mktar,$(p))))
+
+tars : all $(TARFILES)
+onlytars : $(TARFILES)
+%.tar.gz :
+ @echo 'Creating compiler package $@'
+ cd $(RESULT)/$(PLATFORM) && tar -czf $@ *
+ touch $@
+
+clean :
+ rm -rf build result
+
+FORCE :
+.PHONY : $(configs) $(platforms)
diff --git a/make/devkit/Tools.gmk b/make/devkit/Tools.gmk
new file mode 100644
index 0000000..a9dcee1
--- /dev/null
+++ b/make/devkit/Tools.gmk
@@ -0,0 +1,519 @@
+#
+# Copyright (c) 2013, 2016, 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.
+#
+
+##########################################################################################
+#
+# Workhorse makefile for creating ONE cross compiler
+# Needs either to be from BUILD -> BUILD OR have
+# BUILD -> HOST prebuilt
+#
+# NOTE: There is a bug here. We don't limit the
+# PATH when building BUILD -> BUILD, which means that
+# if you configure after you've once build the BUILD->BUILD
+# compiler THAT one will be picked up as the compiler for itself.
+# This is not so great, especially if you did a partial delete
+# of the target tree.
+#
+# Fix this...
+#
+
+$(info TARGET=$(TARGET))
+$(info HOST=$(HOST))
+$(info BUILD=$(BUILD))
+
+ARCH := $(word 1,$(subst -, ,$(TARGET)))
+
+##########################################################################################
+# Define external dependencies
+
+# Latest that could be made to work.
+gcc_ver := gcc-4.9.2
+binutils_ver := binutils-2.25
+ccache_ver := ccache-3.2.1
+mpfr_ver := mpfr-3.0.1
+gmp_ver := gmp-4.3.2
+mpc_ver := mpc-1.0.1
+
+GCC := http://ftp.gnu.org/pub/gnu/gcc/$(gcc_ver)/$(gcc_ver).tar.bz2
+BINUTILS := http://ftp.gnu.org/pub/gnu/binutils/$(binutils_ver).tar.bz2
+CCACHE := http://samba.org/ftp/ccache/$(ccache_ver).tar.gz
+MPFR := http://www.mpfr.org/${mpfr_ver}/${mpfr_ver}.tar.bz2
+GMP := http://ftp.gnu.org/pub/gnu/gmp/${gmp_ver}.tar.bz2
+MPC := http://www.multiprecision.org/mpc/download/${mpc_ver}.tar.gz
+
+# RPMs in OEL6.4
+LINUX_VERSION := OEL6.4
+RPM_LIST := \
+ kernel-headers \
+ glibc glibc-headers glibc-devel \
+ cups-libs cups-devel \
+ libX11 libX11-devel \
+ xorg-x11-proto-devel \
+ alsa-lib alsa-lib-devel \
+ libXext libXext-devel \
+ libXtst libXtst-devel \
+ libXrender libXrender-devel \
+ freetype freetype-devel \
+ libXt libXt-devel \
+ libSM libSM-devel \
+ libICE libICE-devel \
+ libXi libXi-devel \
+ libXdmcp libXdmcp-devel \
+ libXau libXau-devel \
+ libgcc \
+ elfutils elfutils-libs elfutils-devel \
+ elfutils-libelf elfutils-libelf-devel \
+ zlib zlib-devel \
+ libffi libffi-devel
+
+ifeq ($(ARCH),x86_64)
+ RPM_DIR ?= $(RPM_DIR_x86_64)
+ RPM_ARCHS := x86_64 noarch
+ ifeq ($(BUILD),$(HOST))
+ ifeq ($(TARGET),$(HOST))
+ # When building the native compiler for x86_64, enable mixed mode.
+ RPM_ARCHS += i386 i686
+ endif
+ endif
+else
+ RPM_DIR ?= $(RPM_DIR_i686)
+ RPM_ARCHS := i386 i686
+endif
+
+# Sort to remove duplicates
+RPM_FILE_LIST := $(sort $(foreach a,$(RPM_ARCHS),$(wildcard $(patsubst %,$(RPM_DIR)/%*$a.rpm,$(RPM_LIST)))))
+
+#$(info RPM_FILE_LIST $(RPM_FILE_LIST))
+
+ifeq ($(RPM_FILE_LIST),)
+ $(error Found no RPMs, RPM_DIR must point to list of directories to search for RPMs)
+endif
+
+##########################################################################################
+# Define common directories and files
+
+# Ensure we have 32-bit libs also for x64. We enable mixed-mode.
+ifeq (x86_64,$(ARCH))
+ LIBDIRS := lib64 lib
+ CFLAGS_lib := -m32
+else
+ LIBDIRS := lib
+endif
+
+# Define directories
+RESULT := $(OUTPUT_ROOT)/result
+BUILDDIR := $(OUTPUT_ROOT)/$(HOST)/$(TARGET)
+PREFIX := $(RESULT)/$(HOST)
+TARGETDIR := $(PREFIX)/$(TARGET)
+SYSROOT := $(TARGETDIR)/sysroot
+DOWNLOAD := $(OUTPUT_ROOT)/download
+SRCDIR := $(OUTPUT_ROOT)/src
+
+# Marker file for unpacking rpms
+rpms := $(SYSROOT)/rpms_unpacked
+
+# Need to patch libs that are linker scripts to use non-absolute paths
+libs := $(SYSROOT)/libs_patched
+
+##########################################################################################
+# Unpack source packages
+
+# Generate downloading + unpacking of sources.
+define Download
+ $(1)_DIR = $(abspath $(SRCDIR)/$(basename $(basename $(notdir $($(1))))))
+ $(1)_CFG = $$($(1)_DIR)/configure
+ $(1)_FILE = $(DOWNLOAD)/$(notdir $($(1)))
+
+ $$($(1)_CFG) : $$($(1)_FILE)
+ mkdir -p $$(SRCDIR)
+ tar -C $$(SRCDIR) -x$$(if $$(findstring .gz, $$<),z,j)f $$<
+ $$(foreach p,$$(abspath $$(wildcard $$(notdir $$($(1)_DIR)).patch)), \
+ echo PATCHING $$(p) ; \
+ patch -d $$($(1)_DIR) -p1 -i $$(p) ; \
+ )
+ touch $$@
+
+ $$($(1)_FILE) :
+ wget -P $(DOWNLOAD) $$($(1))
+endef
+
+# Download and unpack all source packages
+$(foreach p,GCC BINUTILS CCACHE MPFR GMP MPC,$(eval $(call Download,$(p))))
+
+##########################################################################################
+# Unpack RPMS
+
+# Note. For building linux you should install rpm2cpio.
+define unrpm
+ $(SYSROOT)/$(notdir $(1)).unpacked \
+ : $(1)
+ $$(rpms) : $(SYSROOT)/$(notdir $(1)).unpacked
+endef
+
+%.unpacked :
+ $(info Unpacking target rpms and libraries from $<)
+ @(mkdir -p $(@D); \
+ cd $(@D); \
+ rpm2cpio $< | \
+ cpio --extract --make-directories \
+ -f \
+ "./usr/share/doc/*" \
+ "./usr/share/man/*" \
+ "./usr/X11R6/man/*" \
+ "*/X11/locale/*" \
+ || die ; )
+ touch $@
+
+$(foreach p,$(RPM_FILE_LIST),$(eval $(call unrpm,$(p))))
+
+##########################################################################################
+
+# Note: MUST create a <sysroot>/usr/lib even if not really needed.
+# gcc will use a path relative to it to resolve lib64. (x86_64).
+# we're creating multi-lib compiler with 32bit libc as well, so we should
+# have it anyway, but just to make sure...
+# Patch libc.so and libpthread.so to force linking against libraries in sysroot
+# and not the ones installed on the build machine.
+$(libs) : $(rpms)
+ @echo Patching libc and pthreads
+ @(for f in `find $(SYSROOT) -name libc.so -o -name libpthread.so`; do \
+ (cat $$f | sed -e 's|/usr/lib64/||g' \
+ -e 's|/usr/lib/||g' \
+ -e 's|/lib64/||g' \
+ -e 's|/lib/||g' ) > $$f.tmp ; \
+ mv $$f.tmp $$f ; \
+ done)
+ @mkdir -p $(SYSROOT)/usr/lib
+ @touch $@
+
+##########################################################################################
+# Create links for ffi header files so that they become visible by default when using the
+# devkit.
+
+$(SYSROOT)/usr/include/ffi.h: $(rpms)
+ cd $(@D) && rm $(@F) && ln -s ../lib/libffi-*/include/$(@F) .
+
+$(SYSROOT)/usr/include/ffitarget.h: $(rpms)
+ cd $(@D) && rm $(@F) && ln -s ../lib/libffi-*/include/$(@F) .
+
+SYSROOT_LINKS += $(SYSROOT)/usr/include/ffi.h $(SYSROOT)/usr/include/ffitarget.h
+
+##########################################################################################
+
+# Define marker files for each source package to be compiled
+$(foreach t,binutils mpfr gmp mpc gcc ccache,$(eval $(t) = $(TARGETDIR)/$($(t)_ver).done))
+
+##########################################################################################
+
+# Default base config
+CONFIG = --target=$(TARGET) \
+ --host=$(HOST) --build=$(BUILD) \
+ --prefix=$(PREFIX)
+
+PATHEXT = $(RESULT)/$(BUILD)/bin:
+
+PATHPRE = PATH=$(PATHEXT)$(PATH)
+BUILDPAR = -j16
+
+# Default commands to when making
+MAKECMD =
+INSTALLCMD = install
+
+
+declare_tools = CC$(1)=$(2)gcc LD$(1)=$(2)ld AR$(1)=$(2)ar AS$(1)=$(2)as RANLIB$(1)=$(2)ranlib CXX$(1)=$(2)g++ OBJDUMP$(1)=$(2)objdump
+
+ifeq ($(HOST),$(BUILD))
+ ifeq ($(HOST),$(TARGET))
+ TOOLS = $(call declare_tools,_FOR_TARGET,)
+ endif
+endif
+
+TOOLS ?= $(call declare_tools,_FOR_TARGET,$(TARGET)-)
+
+##########################################################################################
+
+# Create a TARGET bfd + libiberty only.
+# Configure one or two times depending on mulitlib arch.
+# If multilib, the second should be 32-bit, and we resolve
+# CFLAG_<name> to most likely -m32.
+define mk_bfd
+ $$(info Libs for $(1))
+ $$(BUILDDIR)/$$(binutils_ver)-$(subst /,-,$(1))/Makefile \
+ : CFLAGS += $$(CFLAGS_$(1))
+ $$(BUILDDIR)/$$(binutils_ver)-$(subst /,-,$(1))/Makefile \
+ : LIBDIRS = --libdir=$(TARGETDIR)/$(1)
+
+ bfdlib += $$(TARGETDIR)/$$(binutils_ver)-$(subst /,-,$(1)).done
+ bfdmakes += $$(BUILDDIR)/$$(binutils_ver)-$(subst /,-,$(1))/Makefile
+endef
+
+# Create one set of bfds etc for each multilib arch
+$(foreach l,$(LIBDIRS),$(eval $(call mk_bfd,$(l))))
+
+# Only build these two libs.
+$(bfdlib) : MAKECMD = all-libiberty all-bfd
+$(bfdlib) : INSTALLCMD = install-libiberty install-bfd
+
+# Building targets libbfd + libiberty. HOST==TARGET, i.e not
+# for a cross env.
+$(bfdmakes) : CONFIG = --target=$(TARGET) \
+ --host=$(TARGET) --build=$(BUILD) \
+ --prefix=$(TARGETDIR) \
+ --with-sysroot=$(SYSROOT) \
+ $(LIBDIRS)
+
+$(bfdmakes) : TOOLS = $(call declare_tools,_FOR_TARGET,$(TARGET)-) $(call declare_tools,,$(TARGET)-)
+
+##########################################################################################
+
+$(gcc) \
+ $(binutils) \
+ $(gmp) \
+ $(mpfr) \
+ $(mpc) \
+ $(bfdmakes) \
+ $(ccache) : ENVS += $(TOOLS)
+
+# libdir to work around hateful bfd stuff installing into wrong dirs...
+# ensure we have 64 bit bfd support in the HOST library. I.e our
+# compiler on i686 will know 64 bit symbols, BUT later
+# we build just the libs again for TARGET, then with whatever the arch
+# wants.
+$(BUILDDIR)/$(binutils_ver)/Makefile : CONFIG += --enable-64-bit-bfd --libdir=$(PREFIX)/$(word 1,$(LIBDIRS))
+
+# Makefile creation. Simply run configure in build dir.
+$(bfdmakes) \
+$(BUILDDIR)/$(binutils_ver)/Makefile \
+ : $(BINUTILS_CFG)
+ $(info Configuring $@. Log in $(@D)/log.config)
+ @mkdir -p $(@D)
+ ( \
+ cd $(@D) ; \
+ $(PATHPRE) $(ENVS) CFLAGS="$(CFLAGS)" \
+ $(BINUTILS_CFG) \
+ $(CONFIG) \
+ --with-sysroot=$(SYSROOT) \
+ --disable-nls \
+ --program-prefix=$(TARGET)- \
+ --enable-multilib \
+ ) > $(@D)/log.config 2>&1
+ @echo 'done'
+
+$(BUILDDIR)/$(mpfr_ver)/Makefile \
+ : $(MPFR_CFG)
+ $(info Configuring $@. Log in $(@D)/log.config)
+ @mkdir -p $(@D)
+ ( \
+ cd $(@D) ; \
+ $(PATHPRE) $(ENVS) CFLAGS="$(CFLAGS)" \
+ $(MPFR_CFG) \
+ $(CONFIG) \
+ --program-prefix=$(TARGET)- \
+ --enable-shared=no \
+ --with-gmp=$(PREFIX) \
+ ) > $(@D)/log.config 2>&1
+ @echo 'done'
+
+$(BUILDDIR)/$(gmp_ver)/Makefile \
+ : $(GMP_CFG)
+ $(info Configuring $@. Log in $(@D)/log.config)
+ @mkdir -p $(@D)
+ ( \
+ cd $(@D) ; \
+ $(PATHPRE) $(ENVS) CFLAGS="$(CFLAGS)" \
+ $(GMP_CFG) \
+ --host=$(HOST) --build=$(BUILD) \
+ --prefix=$(PREFIX) \
+ --disable-nls \
+ --program-prefix=$(TARGET)- \
+ --enable-shared=no \
+ --with-mpfr=$(PREFIX) \
+ ) > $(@D)/log.config 2>&1
+ @echo 'done'
+
+$(BUILDDIR)/$(mpc_ver)/Makefile \
+ : $(MPC_CFG)
+ $(info Configuring $@. Log in $(@D)/log.config)
+ @mkdir -p $(@D)
+ ( \
+ cd $(@D) ; \
+ $(PATHPRE) $(ENVS) CFLAGS="$(CFLAGS)" \
+ $(MPC_CFG) \
+ $(CONFIG) \
+ --program-prefix=$(TARGET)- \
+ --enable-shared=no \
+ --with-mpfr=$(PREFIX) \
+ --with-gmp=$(PREFIX) \
+ ) > $(@D)/log.config 2>&1
+ @echo 'done'
+
+# Only valid if glibc target -> linux
+# proper destructor handling for c++
+ifneq (,$(findstring linux,$(TARGET)))
+ $(BUILDDIR)/$(gcc_ver)/Makefile : CONFIG += --enable-__cxa_atexit
+endif
+
+# Want:
+# c,c++
+# shared libs
+# multilib (-m32/-m64 on x64)
+# skip native language.
+# and link and assemble with the binutils we created
+# earlier, so --with-gnu*
+$(BUILDDIR)/$(gcc_ver)/Makefile \
+ : $(GCC_CFG)
+ $(info Configuring $@. Log in $(@D)/log.config)
+ mkdir -p $(@D)
+ ( \
+ cd $(@D) ; \
+ $(PATHPRE) $(ENVS) $(GCC_CFG) $(EXTRA_CFLAGS) \
+ $(CONFIG) \
+ --with-sysroot=$(SYSROOT) \
+ --enable-languages=c,c++ \
+ --enable-shared \
+ --enable-multilib \
+ --disable-nls \
+ --with-gnu-as \
+ --with-gnu-ld \
+ --with-mpfr=$(PREFIX) \
+ --with-gmp=$(PREFIX) \
+ --with-mpc=$(PREFIX) \
+ ) > $(@D)/log.config 2>&1
+ @echo 'done'
+
+# need binutils for gcc
+$(gcc) : $(binutils)
+
+# as of 4.3 or so need these for doing config
+$(BUILDDIR)/$(gcc_ver)/Makefile : $(gmp) $(mpfr) $(mpc)
+$(mpfr) : $(gmp)
+$(mpc) : $(gmp) $(mpfr)
+
+##########################################################################################
+# very straightforward. just build a ccache. it is only for host.
+$(BUILDDIR)/$(ccache_ver)/Makefile \
+ : $(CCACHE_CFG)
+ $(info Configuring $@. Log in $(@D)/log.config)
+ @mkdir -p $(@D)
+ @( \
+ cd $(@D) ; \
+ $(PATHPRE) $(ENVS) $(CCACHE_CFG) \
+ $(CONFIG) \
+ ) > $(@D)/log.config 2>&1
+ @echo 'done'
+
+gccpatch = $(TARGETDIR)/gcc-patched
+
+##########################################################################################
+# For some reason cpp is not created as a target-compiler
+ifeq ($(HOST),$(TARGET))
+ $(gccpatch) : $(gcc) link_libs
+ @echo -n 'Creating compiler symlinks...'
+ @for f in cpp; do \
+ if [ ! -e $(PREFIX)/bin/$(TARGET)-$$f ]; \
+ then \
+ cd $(PREFIX)/bin && \
+ ln -s $$f $(TARGET)-$$f ; \
+ fi \
+ done
+ @touch $@
+ @echo 'done'
+
+ ##########################################################################################
+ # Ugly at best. Seems that when we compile host->host compiler, that are NOT
+ # the BUILD compiler, the result will not try searching for libs in package root.
+ # "Solve" this by create links from the target libdirs to where they are.
+ link_libs:
+ @echo -n 'Creating library symlinks...'
+ @$(foreach l,$(LIBDIRS), \
+ for f in `cd $(PREFIX)/$(l) && ls`; do \
+ if [ ! -e $(TARGETDIR)/$(l)/$$f ]; then \
+ mkdir -p $(TARGETDIR)/$(l) && \
+ cd $(TARGETDIR)/$(l)/ && \
+ ln -s $(if $(findstring /,$(l)),../,)../../$(l)/$$f $$f; \
+ fi \
+ done;)
+ @echo 'done'
+else
+ $(gccpatch) :
+ @echo 'done'
+endif
+
+##########################################################################################
+# Build in two steps.
+# make <default>
+# make install.
+# Use path to our build hosts cross tools
+# Always need to build cross tools for build host self.
+$(TARGETDIR)/%.done : $(BUILDDIR)/%/Makefile
+ $(info Building $(basename $@). Log in $(<D)/log.build)
+ $(PATHPRE) $(ENVS) $(MAKE) $(BUILDPAR) -f $< -C $(<D) $(MAKECMD) $(MAKECMD.$(notdir $@)) > $(<D)/log.build 2>&1
+ @echo -n 'installing...'
+ $(PATHPRE) $(MAKE) $(INSTALLPAR) -f $< -C $(<D) $(INSTALLCMD) $(MAKECMD.$(notdir $@)) > $(<D)/log.install 2>&1
+ @touch $@
+ @echo 'done'
+
+##########################################################################################
+
+$(PREFIX)/devkit.info: FRC
+ @echo 'Creating devkit.info in the root of the kit'
+ rm -f $@
+ touch $@
+ echo '# This file describes to configure how to interpret the contents of this' >> $@
+ echo '# devkit' >> $@
+ echo '' >> $@
+ echo 'DEVKIT_NAME="$(gcc_ver) - $(LINUX_VERSION)"' >> $@
+ echo 'DEVKIT_TOOLCHAIN_PATH="$$DEVKIT_ROOT/bin"' >> $@
+ echo 'DEVKIT_SYSROOT="$$DEVKIT_ROOT/$$host/sysroot"' >> $@
+
+##########################################################################################
+
+ifeq ($(TARGET), $(HOST))
+ $(PREFIX)/bin/%:
+ @echo 'Creating missing $* soft link'
+ ln -s $(TARGET)-$* $@
+
+ missing-links := $(addprefix $(PREFIX)/bin/, \
+ addr2line ar as c++ c++filt elfedit g++ gcc gprof ld nm objcopy ranlib readelf \
+ size strings strip)
+endif
+
+##########################################################################################
+
+bfdlib : $(bfdlib)
+binutils : $(binutils)
+rpms : $(rpms)
+libs : $(libs)
+sysroot : rpms libs
+gcc : sysroot $(gcc) $(gccpatch)
+all : binutils gcc bfdlib $(PREFIX)/devkit.info $(missing-links) $(SYSROOT_LINKS)
+
+# this is only built for host. so separate.
+ccache : $(ccache)
+
+# Force target
+FRC:
+
+.PHONY : gcc all binutils bfdlib link_libs rpms libs sysroot
diff --git a/make/devkit/createGraphvizBundle.sh b/make/devkit/createGraphvizBundle.sh
new file mode 100644
index 0000000..290e68c
--- /dev/null
+++ b/make/devkit/createGraphvizBundle.sh
@@ -0,0 +1,63 @@
+#!/bin/bash -e
+#
+# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# Create a bundle in the current directory, containing what's needed to run
+# the 'dot' program from the graphviz suite by the OpenJDK build.
+
+TMPDIR=`mktemp -d -t graphvizbundle-XXXX`
+trap "rm -rf \"$TMPDIR\"" EXIT
+
+ORIG_DIR=`pwd`
+cd "$TMPDIR"
+GRAPHVIZ_VERSION=2.38.0-1
+PACKAGE_VERSION=1.1
+TARGET_PLATFORM=linux_x64
+BUNDLE_NAME=graphviz-$TARGET_PLATFORM-$GRAPHVIZ_VERSION+$PACKAGE_VERSION.tar.gz
+wget http://www.graphviz.org/pub/graphviz/stable/redhat/el6/x86_64/os/graphviz-$GRAPHVIZ_VERSION.el6.x86_64.rpm
+wget http://www.graphviz.org/pub/graphviz/stable/redhat/el6/x86_64/os/graphviz-libs-$GRAPHVIZ_VERSION.el6.x86_64.rpm
+wget http://www.graphviz.org/pub/graphviz/stable/redhat/el6/x86_64/os/graphviz-plugins-core-$GRAPHVIZ_VERSION.el6.x86_64.rpm
+wget http://www.graphviz.org/pub/graphviz/stable/redhat/el6/x86_64/os/graphviz-plugins-x-$GRAPHVIZ_VERSION.el6.x86_64.rpm
+wget http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/x86_64/getPackage/libtool-ltdl-2.2.6-15.5.el6.x86_64.rpm
+
+mkdir graphviz
+cd graphviz
+for rpm in ../*.rpm; do
+ rpm2cpio $rpm | cpio --extract --make-directories
+done
+
+cat > dot << EOF
+#!/bin/bash
+# Get an absolute path to this script
+this_script_dir=\`dirname \$0\`
+this_script_dir=\`cd \$this_script_dir > /dev/null && pwd\`
+export LD_LIBRARY_PATH="\$this_script_dir/usr/lib64:\$LD_LIBRARY_PATH"
+exec \$this_script_dir/usr/bin/dot "\$@"
+EOF
+chmod +x dot
+export LD_LIBRARY_PATH="$TMPDIR/graphviz/usr/lib64:$LD_LIBRARY_PATH"
+# create config file
+./dot -c
+tar -cvzf ../$BUNDLE_NAME *
+cp ../$BUNDLE_NAME "$ORIG_DIR"
diff --git a/make/devkit/createMacosxDevkit.sh b/make/devkit/createMacosxDevkit.sh
new file mode 100644
index 0000000..51637e4
--- /dev/null
+++ b/make/devkit/createMacosxDevkit.sh
@@ -0,0 +1,161 @@
+#!/bin/bash
+#
+# Copyright (c) 2015, 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 script copies part of an Xcode installer into a devkit suitable
+# for building OpenJDK and OracleJDK. The installation .dmg files for Xcode
+# and the aux tools need to be available.
+# erik.joelsson@oracle.com
+
+USAGE="$0 <Xcode.dmg> <XQuartz.dmg> <gnu make binary> [<auxtools.dmg>]"
+
+if [ "$1" = "" ] || [ "$2" = "" ]; then
+ echo $USAGE
+ exit 1
+fi
+
+XCODE_DMG="$1"
+XQUARTZ_DMG="$2"
+GNU_MAKE="$3"
+AUXTOOLS_DMG="$4"
+
+SCRIPT_DIR="$(cd "$(dirname $0)" > /dev/null && pwd)"
+BUILD_DIR="${SCRIPT_DIR}/../../build/devkit"
+
+# Mount XCODE_DMG
+if [ -e "/Volumes/Xcode" ]; then
+ hdiutil detach /Volumes/Xcode
+fi
+hdiutil attach $XCODE_DMG
+
+# Find the version of Xcode
+XCODE_VERSION="$(/Volumes/Xcode/Xcode.app/Contents/Developer/usr/bin/xcodebuild -version \
+ | awk '/Xcode/ { print $2 }' )"
+SDK_VERSION="MacOSX10.9"
+if [ ! -e "/Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/${SDK_VERSION}.sdk" ]; then
+ echo "Expected SDK version not found: ${SDK_VERSION}"
+ exit 1
+fi
+
+DEVKIT_ROOT="${BUILD_DIR}/Xcode${XCODE_VERSION}-${SDK_VERSION}"
+DEVKIT_BUNDLE="${DEVKIT_ROOT}.tar.gz"
+
+echo "Xcode version: $XCODE_VERSION"
+echo "Creating devkit in $DEVKIT_ROOT"
+
+################################################################################
+# Copy files to root
+mkdir -p $DEVKIT_ROOT
+if [ ! -d $DEVKIT_ROOT/Xcode.app ]; then
+ echo "Copying Xcode.app..."
+ cp -RH "/Volumes/Xcode/Xcode.app" $DEVKIT_ROOT/
+fi
+# Trim out some seemingly unneeded parts to save space.
+rm -rf $DEVKIT_ROOT/Xcode.app/Contents/Applications
+rm -rf $DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/iPhone*
+rm -rf $DEVKIT_ROOT/Xcode.app/Contents/Developer/Documentation
+rm -rf $DEVKIT_ROOT/Xcode.app/Contents/Developer/usr/share/man
+( cd $DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs \
+ && rm -rf `ls | grep -v ${SDK_VERSION}` )
+rm -rf $DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/${SDK_VERSION}.sdk/usr/share/man
+
+hdiutil detach /Volumes/Xcode
+
+################################################################################
+# Copy Freetype into sysroot
+if [ -e "/Volumes/XQuartz-*" ]; then
+ hdiutil detach /Volumes/XQuartz-*
+fi
+hdiutil attach $XQUARTZ_DMG
+
+echo "Copying freetype..."
+rm -rf /tmp/XQuartz
+pkgutil --expand /Volumes/XQuartz-*/XQuartz.pkg /tmp/XQuartz/
+rm -rf /tmp/x11
+mkdir /tmp/x11
+cd /tmp/x11
+cat /tmp/XQuartz/x11.pkg/Payload | gunzip -dc | cpio -i
+
+mkdir -p $DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/X11/include/
+mkdir -p $DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/X11/lib/
+cp -RH opt/X11/include/freetype2 \
+ $DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/X11/include/
+cp -RH opt/X11/include/ft2build.h \
+ $DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/X11/include/
+cp -RH opt/X11/lib/libfreetype.* \
+ $DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/X11/lib/
+
+cd -
+
+hdiutil detach /Volumes/XQuartz-*
+
+################################################################################
+# Copy gnu make
+mkdir -p $DEVKIT_ROOT/bin
+cp $GNU_MAKE $DEVKIT_ROOT/bin
+
+################################################################################
+# Optionally copy PackageMaker
+
+if [ -e "$AUXTOOLS_DMG" ]; then
+ if [ -e "/Volumes/Auxiliary Tools" ]; then
+ hdiutil detach "/Volumes/Auxiliary Tools"
+ fi
+ hdiutil attach $AUXTOOLS_DMG
+
+ echo "Copying PackageMaker.app..."
+ cp -RH "/Volumes/Auxiliary Tools/PackageMaker.app" $DEVKIT_ROOT/
+
+ hdiutil detach "/Volumes/Auxiliary Tools"
+fi
+
+################################################################################
+# Generate devkit.info
+
+echo-info() {
+ echo "$1" >> $DEVKIT_ROOT/devkit.info
+}
+
+echo "Generating devkit.info..."
+rm -f $DEVKIT_ROOT/devkit.info
+echo-info "# This file describes to configure how to interpret the contents of this devkit"
+echo-info "# The parameters used to create this devkit were:"
+echo-info "# $*"
+echo-info "DEVKIT_NAME=\"Xcode $XCODE_VERSION (devkit)\""
+echo-info "DEVKIT_TOOLCHAIN_PATH=\"\$DEVKIT_ROOT/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:\$DEVKIT_ROOT/Xcode.app/Contents/Developer/usr/bin\""
+echo-info "DEVKIT_SYSROOT=\"\$DEVKIT_ROOT/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk\""
+echo-info "DEVKIT_EXTRA_PATH=\"\$DEVKIT_ROOT/bin:\$DEVKIT_ROOT/PackageMaker.app/Contents/MacOS:\$DEVKIT_TOOLCHAIN_PATH\""
+
+################################################################################
+# Copy this script
+
+echo "Copying this script..."
+cp $0 $DEVKIT_ROOT/
+
+################################################################################
+# Create bundle
+
+echo "Creating bundle..."
+(cd $DEVKIT_ROOT && tar c - . | gzip - > "$DEVKIT_BUNDLE")
diff --git a/make/devkit/createPandocBundle.sh b/make/devkit/createPandocBundle.sh
new file mode 100644
index 0000000..0badfa8
--- /dev/null
+++ b/make/devkit/createPandocBundle.sh
@@ -0,0 +1,73 @@
+#!/bin/bash -e
+#
+# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# Create a bundle in the current directory, containing what's needed to run
+# the 'pandoc' program by the OpenJDK build.
+
+TMPDIR=`mktemp -d -t pandocbundle-XXXX`
+trap "rm -rf \"$TMPDIR\"" EXIT
+
+ORIG_DIR=`pwd`
+cd "$TMPDIR"
+PANDOC_VERSION=1.17.2
+FULL_PANDOC_VERSION=1.17.2-1
+PACKAGE_VERSION=1.0
+TARGET_PLATFORM=linux_x64
+BUNDLE_NAME=pandoc-$TARGET_PLATFORM-$PANDOC_VERSION+$PACKAGE_VERSION.tar.gz
+
+wget https://github.com/jgm/pandoc/releases/download/$PANDOC_VERSION/pandoc-$FULL_PANDOC_VERSION-amd64.deb
+
+mkdir pandoc
+cd pandoc
+ar p ../pandoc-$FULL_PANDOC_VERSION-amd64.deb data.tar.gz | tar xz
+cd ..
+
+# Pandoc depends on libgmp.so.10, which in turn depends on libc. No readily
+# available precompiled binaries exists which match the requirement of
+# support for older linuxes (glibc 2.12), so we'll compile it ourselves.
+
+LIBGMP_VERSION=6.1.2
+
+wget https://gmplib.org/download/gmp/gmp-$LIBGMP_VERSION.tar.xz
+mkdir gmp
+cd gmp
+tar xf ../gmp-$LIBGMP_VERSION.tar.xz
+cd gmp-$LIBGMP_VERSION
+./configure --prefix=$TMPDIR/pandoc/usr
+make
+make install
+cd ../..
+
+cat > pandoc/pandoc << EOF
+#!/bin/bash
+# Get an absolute path to this script
+this_script_dir=\`dirname \$0\`
+this_script_dir=\`cd \$this_script_dir > /dev/null && pwd\`
+export LD_LIBRARY_PATH="\$this_script_dir/usr/lib:\$LD_LIBRARY_PATH"
+exec \$this_script_dir/usr/bin/pandoc "\$@"
+EOF
+chmod +x pandoc/pandoc
+tar -cvzf ../$BUNDLE_NAME pandoc
+cp ../$BUNDLE_NAME "$ORIG_DIR"
diff --git a/make/devkit/createSolarisDevkit.sh b/make/devkit/createSolarisDevkit.sh
new file mode 100644
index 0000000..5c68c0a
--- /dev/null
+++ b/make/devkit/createSolarisDevkit.sh
@@ -0,0 +1,148 @@
+#!/bin/bash
+#
+# Copyright (c) 2015, 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 script creates a devkit for building OpenJDK on Solaris by copying
+# part of a Solaris Studio installation and cretaing a sysroot by installing
+# a limited set of system packages. It is assumed that a suitable pkg
+# publisher is configured for the system where the script is executed.
+#
+# The Solaris Studio installation must contain at least these packages:
+# developer/solarisstudio-124/backend 12.4-1.0.6.0 i--
+# developer/solarisstudio-124/c++ 12.4-1.0.10.0 i--
+# developer/solarisstudio-124/cc 12.4-1.0.4.0 i--
+# developer/solarisstudio-124/library/c++-libs 12.4-1.0.10.0 i--
+# developer/solarisstudio-124/library/math-libs 12.4-1.0.0.1 i--
+# developer/solarisstudio-124/library/studio-gccrt 12.4-1.0.0.1 i--
+# developer/solarisstudio-124/studio-common 12.4-1.0.0.1 i--
+# developer/solarisstudio-124/studio-ja 12.4-1.0.0.1 i--
+# developer/solarisstudio-124/studio-legal 12.4-1.0.0.1 i--
+# developer/solarisstudio-124/studio-zhCN 12.4-1.0.0.1 i--
+# In particular backend 12.4-1.0.6.0 contains a critical patch for the sparc
+# version.
+#
+# erik.joelsson@oracle.com
+
+USAGE="$0 <Solaris Studio installation> <Path to gnu make binary>"
+
+if [ "$1" = "" ] || [ "$2" = "" ]; then
+ echo $USAGE
+ exit 1
+fi
+
+SOLARIS_STUDIO_VERSION=12u4
+SOLARIS_VERSION=11u1
+case `uname -p` in
+ i*)
+ ARCH=x86
+ ;;
+ sparc*)
+ ARCH=sparc
+ ;;
+esac
+
+SOLARIS_STUDIO_SRC=$1
+GNU_MAKE=$2
+
+SCRIPT_DIR="$(cd "$(dirname $0)" > /dev/null && pwd)"
+BUILD_DIR="${SCRIPT_DIR}/../../build/devkit"
+
+DEVKIT_NAME=SS${SOLARIS_STUDIO_VERSION}-Solaris${SOLARIS_VERSION}
+DEVKIT_ROOT=${BUILD_DIR}/${DEVKIT_NAME}
+BUNDLE_NAME=${DEVKIT_NAME}.tar.gz
+BUNDLE=${BUILD_DIR}/${BUNDLE_NAME}
+INSTALL_ROOT=${BUILD_DIR}/install-root
+SYSROOT=${DEVKIT_ROOT}/sysroot
+SOLARIS_STUDIO_SUBDIR=SS${SOLARIS_STUDIO_VERSION}
+SOLARIS_STUDIO_DIR=${DEVKIT_ROOT}/${SOLARIS_STUDIO_SUBDIR}
+
+# Extract the publisher from the system
+if [ -z "${PUBLISHER_URI}" ]; then
+ PUBLISHER_URI="$(pkg publisher solaris | grep URI | awk '{ print $3 }')"
+fi
+
+if [ ! -d $INSTALL_ROOT ]; then
+ echo "Creating $INSTALL_ROOT and installing packages"
+ pkg image-create $INSTALL_ROOT
+ pkg -R $INSTALL_ROOT set-publisher -P -g ${PUBLISHER_URI} solaris
+ pkg -R $INSTALL_ROOT install --accept $(cat solaris11.1-package-list.txt)
+else
+ echo "Skipping installing packages"
+fi
+
+if [ ! -d $SYSROOT ]; then
+ echo "Copying from $INSTALL_ROOT to $SYSROOT"
+ mkdir -p $SYSROOT
+ cp -rH $INSTALL_ROOT/lib $SYSROOT/
+ mkdir $SYSROOT/usr $DEVKIT_ROOT/gnu
+ # Some of the tools in sysroot are needed in the OpenJDK build but cannot be
+ # run from their current location due to relative runtime paths in the
+ # binaries. Move the sysroot/usr/bin directory to the outer bin and have them
+ # be runnable from there to force them to link to the system libraries
+ cp -rH $INSTALL_ROOT/usr/bin $DEVKIT_ROOT
+ cp -rH $INSTALL_ROOT/usr/gnu/bin $DEVKIT_ROOT/gnu/
+ cp -rH $INSTALL_ROOT/usr/lib $SYSROOT/usr/
+ cp -rH $INSTALL_ROOT/usr/include $SYSROOT/usr/
+ pkg -R $INSTALL_ROOT list > $SYSROOT/pkg-list.txt
+else
+ echo "Skipping copying to $SYSROOT"
+fi
+
+if [ ! -d $SOLARIS_STUDIO_DIR ]; then
+ echo "Copying Solaris Studio from $SOLARIS_STUDIO_SRC"
+ cp -rH $SOLARIS_STUDIO_SRC ${SOLARIS_STUDIO_DIR%/*}
+ mv ${SOLARIS_STUDIO_DIR%/*}/${SOLARIS_STUDIO_SRC##*/} $SOLARIS_STUDIO_DIR
+ # Solaris Studio 12.4 requires /lib/libmmheap.so.1 to run, but this lib is not
+ # installed by default on all Solaris systems. Sneak it in from the sysroot to
+ # make it run OOTB on more systems.
+ cp $SYSROOT/lib/libmmheap.so.1 $SOLARIS_STUDIO_DIR/lib/compilers/sys/
+else
+ echo "Skipping copying of Solaris Studio"
+fi
+
+echo "Copying gnu make to $DEVKIT_ROOT/bin"
+mkdir -p $DEVKIT_ROOT/bin
+cp $GNU_MAKE $DEVKIT_ROOT/bin/
+if [ ! -e $DEVKIT_ROOT/bin/gmake ]; then
+ ln -s make $DEVKIT_ROOT/bin/gmake
+fi
+
+# Create the devkit.info file
+echo Creating devkit.info
+INFO_FILE=$DEVKIT_ROOT/devkit.info
+rm -f $INFO_FILE
+echo "# This file describes to configure how to interpret the contents of this devkit" >> $INFO_FILE
+echo "DEVKIT_NAME=\"Solaris Studio $SOLARIS_STUDIO_VERSION - Solaris $SOLARIS_VERSION - $ARCH\"" >> $INFO_FILE
+echo "DEVKIT_TOOLCHAIN_PATH=\"\$DEVKIT_ROOT/$SOLARIS_STUDIO_SUBDIR/bin:\$DEVKIT_ROOT/bin\"" >> $INFO_FILE
+echo "DEVKIT_EXTRA_PATH=\"\$DEVKIT_ROOT/bin\"" >> $INFO_FILE
+echo "DEVKIT_SYSROOT=\"\$DEVKIT_ROOT/sysroot\"" >> $INFO_FILE
+
+if [ ! -e $BUNDLE ]; then
+ echo "Creating $BUNDLE from $DEVKIT_ROOT"
+ cd $DEVKIT_ROOT/..
+ tar zcf $BUNDLE $DEVKIT_NAME
+else
+ echo "Skipping creation of $BUNDLE"
+fi
diff --git a/make/devkit/createWindowsDevkit.sh b/make/devkit/createWindowsDevkit.sh
new file mode 100644
index 0000000..67d29bd
--- /dev/null
+++ b/make/devkit/createWindowsDevkit.sh
@@ -0,0 +1,136 @@
+#!/bin/bash
+#
+# Copyright (c) 2015, 2016, 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 script copies parts of a Visual Studio 2013 installation into a devkit
+# suitable for building OpenJDK and OracleJDK. Needs to run in Cygwin.
+# erik.joelsson@oracle.com
+
+VS_VERSION="2013"
+VS_VERSION_NUM="12.0"
+VS_VERSION_NUM_NODOT="120"
+SDK_VERSION="8.1"
+VS_VERSION_SP="SP4"
+
+SCRIPT_DIR="$(cd "$(dirname $0)" > /dev/null && pwd)"
+BUILD_DIR="${SCRIPT_DIR}/../../build/devkit"
+DEVKIT_ROOT="${BUILD_DIR}/VS${VS_VERSION}${VS_VERSION_SP}-devkit"
+DEVKIT_BUNDLE="${DEVKIT_ROOT}.tar.gz"
+
+echo "Creating devkit in $DEVKIT_ROOT"
+
+MSVCR_DLL=Microsoft.VC${VS_VERSION_NUM_NODOT}.CRT/msvcr${VS_VERSION_NUM_NODOT}.dll
+MSVCP_DLL=Microsoft.VC${VS_VERSION_NUM_NODOT}.CRT/msvcp${VS_VERSION_NUM_NODOT}.dll
+
+################################################################################
+# Copy Visual Studio files
+
+eval VSNNNCOMNTOOLS="\"\${VS${VS_VERSION_NUM_NODOT}COMNTOOLS}\""
+VS_INSTALL_DIR="$(cygpath "$VSNNNCOMNTOOLS/../..")"
+echo "VS_INSTALL_DIR: $VS_INSTALL_DIR"
+
+if [ ! -d $DEVKIT_ROOT/VC ]; then
+ echo "Copying VC..."
+ mkdir -p $DEVKIT_ROOT/VC/bin
+ cp -r "$VS_INSTALL_DIR/VC/bin/amd64" $DEVKIT_ROOT/VC/bin/
+ cp "$VS_INSTALL_DIR/VC/bin/"*.* $DEVKIT_ROOT/VC/bin/
+ cp -r "$VS_INSTALL_DIR/VC/bin/1033/" $DEVKIT_ROOT/VC/bin/
+ mkdir -p $DEVKIT_ROOT/VC/lib
+ cp -r "$VS_INSTALL_DIR/VC/lib/amd64" $DEVKIT_ROOT/VC/lib/
+ cp "$VS_INSTALL_DIR/VC/lib/"*.* $DEVKIT_ROOT/VC/lib/
+ cp -r "$VS_INSTALL_DIR/VC/include" $DEVKIT_ROOT/VC/
+ mkdir -p $DEVKIT_ROOT/VC/atlmfc/lib
+ cp -r "$VS_INSTALL_DIR/VC/atlmfc/include" $DEVKIT_ROOT/VC/atlmfc/
+ cp -r "$VS_INSTALL_DIR/VC/atlmfc/lib/amd64" $DEVKIT_ROOT/VC/atlmfc/lib/
+ cp "$VS_INSTALL_DIR/VC/atlmfc/lib/"*.* $DEVKIT_ROOT/VC/atlmfc/lib/
+ mkdir -p $DEVKIT_ROOT/VC/redist
+ cp -r "$VS_INSTALL_DIR/VC/redist/x64" $DEVKIT_ROOT/VC/redist/
+ cp -r "$VS_INSTALL_DIR/VC/redist/x86" $DEVKIT_ROOT/VC/redist/
+ # The redist runtime libs are needed to run the compiler but may not be
+ # installed on the machine where the devkit will be used.
+ cp $DEVKIT_ROOT/VC/redist/x86/$MSVCR_DLL $DEVKIT_ROOT/VC/bin/
+ cp $DEVKIT_ROOT/VC/redist/x86/$MSVCP_DLL $DEVKIT_ROOT/VC/bin/
+ cp $DEVKIT_ROOT/VC/redist/x64/$MSVCR_DLL $DEVKIT_ROOT/VC/bin/amd64/
+ cp $DEVKIT_ROOT/VC/redist/x64/$MSVCP_DLL $DEVKIT_ROOT/VC/bin/amd64/
+ # The msvcdis dll is needed to run some of the tools in VC/bin but is not
+ # shipped in that directory. Copy it from the common dir.
+ cp "$VS_INSTALL_DIR/Common7/IDE/msvcdis${VS_VERSION_NUM_NODOT}.dll" \
+ $DEVKIT_ROOT/VC/bin/
+fi
+
+################################################################################
+# Copy SDK files
+
+PROGRAMFILES_X86="`env | sed -n 's/^ProgramFiles(x86)=//p'`"
+SDK_INSTALL_DIR="$(cygpath "$PROGRAMFILES_X86/Windows Kits/$SDK_VERSION")"
+echo "SDK_INSTALL_DIR: $SDK_INSTALL_DIR"
+
+if [ ! -d $DEVKIT_ROOT/$SDK_VERSION ]; then
+ echo "Copying SDK..."
+ mkdir -p $DEVKIT_ROOT/$SDK_VERSION/bin
+ cp -r "$SDK_INSTALL_DIR/bin/x64" $DEVKIT_ROOT/$SDK_VERSION/bin/
+ cp -r "$SDK_INSTALL_DIR/bin/x86" $DEVKIT_ROOT/$SDK_VERSION/bin/
+ mkdir -p $DEVKIT_ROOT/$SDK_VERSION/lib
+ cp -r "$SDK_INSTALL_DIR/lib/"winv*/um/x64 $DEVKIT_ROOT/$SDK_VERSION/lib/
+ cp -r "$SDK_INSTALL_DIR/lib/"winv*/um/x86 $DEVKIT_ROOT/$SDK_VERSION/lib/
+ cp -r "$SDK_INSTALL_DIR/include" $DEVKIT_ROOT/$SDK_VERSION/
+fi
+
+################################################################################
+# Generate devkit.info
+
+echo-info() {
+ echo "$1" >> $DEVKIT_ROOT/devkit.info
+}
+
+echo "Generating devkit.info..."
+rm -f $DEVKIT_ROOT/devkit.info
+echo-info "# This file describes to configure how to interpret the contents of this devkit"
+echo-info "DEVKIT_NAME=\"Microsoft Visual Studio $VS_VERSION $VS_VERSION_SP (devkit)\""
+echo-info "DEVKIT_VS_VERSION=\"$VS_VERSION\""
+echo-info ""
+echo-info "DEVKIT_TOOLCHAIN_PATH_x86=\"\$DEVKIT_ROOT/VC/bin:\$DEVKIT_ROOT/$SDK_VERSION/bin/x86\""
+echo-info "DEVKIT_VS_INCLUDE_x86=\"\$DEVKIT_ROOT/VC/include;\$DEVKIT_ROOT/VC/atlmfc/include;\$DEVKIT_ROOT/$SDK_VERSION/include/shared;\$DEVKIT_ROOT/$SDK_VERSION/include/um;\$DEVKIT_ROOT/$SDK_VERSION/include/winrt\""
+echo-info "DEVKIT_VS_LIB_x86=\"\$DEVKIT_ROOT/VC/lib;\$DEVKIT_ROOT/VC/atlmfc/lib;\$DEVKIT_ROOT/$SDK_VERSION/lib/x86\""
+echo-info "DEVKIT_MSVCR_DLL_x86=\"\$DEVKIT_ROOT/VC/redist/x86/$MSVCR_DLL\""
+echo-info "DEVKIT_MSVCP_DLL_x86=\"\$DEVKIT_ROOT/VC/redist/x86/$MSVCP_DLL\""
+echo-info ""
+echo-info "DEVKIT_TOOLCHAIN_PATH_x86_64=\"\$DEVKIT_ROOT/VC/bin/amd64:\$DEVKIT_ROOT/$SDK_VERSION/bin/x64:\$DEVKIT_ROOT/$SDK_VERSION/bin/x86\""
+echo-info "DEVKIT_VS_INCLUDE_x86_64=\"\$DEVKIT_ROOT/VC/include;\$DEVKIT_ROOT/VC/atlmfc/include;\$DEVKIT_ROOT/$SDK_VERSION/include/shared;\$DEVKIT_ROOT/$SDK_VERSION/include/um;\$DEVKIT_ROOT/$SDK_VERSION/include/winrt\""
+echo-info "DEVKIT_VS_LIB_x86_64=\"\$DEVKIT_ROOT/VC/lib/amd64;\$DEVKIT_ROOT/VC/atlmfc/lib/amd64;\$DEVKIT_ROOT/$SDK_VERSION/lib/x64\""
+echo-info "DEVKIT_MSVCR_DLL_x86_64=\"\$DEVKIT_ROOT/VC/redist/x64/$MSVCR_DLL\""
+echo-info "DEVKIT_MSVCP_DLL_x86_64=\"\$DEVKIT_ROOT/VC/redist/x64/$MSVCP_DLL\""
+
+################################################################################
+# Copy this script
+
+echo "Copying this script..."
+cp $0 $DEVKIT_ROOT/
+
+################################################################################
+# Create bundle
+
+echo "Creating bundle: $DEVKIT_BUNDLE"
+(cd "$DEVKIT_ROOT" && tar zcf "$DEVKIT_BUNDLE" .)
diff --git a/make/devkit/solaris11.1-package-list.txt b/make/devkit/solaris11.1-package-list.txt
new file mode 100644
index 0000000..fa53559
--- /dev/null
+++ b/make/devkit/solaris11.1-package-list.txt
@@ -0,0 +1,157 @@
+compress/bzip2@1.0.6-0.175.1.0.0.24.0
+consolidation/X/X-incorporation@0.5.11-0.175.1.21.0.3.1357
+consolidation/desktop/desktop-incorporation@0.5.11-0.175.1.21.0.4.0
+consolidation/install/install-incorporation@0.5.11-0.175.2.0.0.5.0
+consolidation/ips/ips-incorporation@0.5.11-0.175.1.20.0.3.0
+consolidation/l10n/l10n-incorporation@0.5.11-0.175.1.16.0.2.2
+consolidation/osnet/osnet-incorporation@0.5.11-0.175.1.21.0.4.2
+consolidation/sic_team/sic_team-incorporation@0.5.11-0.175.2.0.0.39.0
+consolidation/solaris_re/solaris_re-incorporation@0.5.11-0.175.2.4.0.4.0
+consolidation/sunpro/sunpro-incorporation@0.5.11-0.175.1.19.0.4.0
+crypto/ca-certificates@0.5.11-0.175.1.0.0.24.2
+database/berkeleydb-5@5.1.25-0.175.1.0.0.24.0
+database/mysql-51/library@5.1.37-0.175.1.10.0.5.0
+database/sqlite-3@3.7.14.1-0.175.1.10.0.4.0
+developer/base-developer-utilities@0.5.11-0.175.1.11.0.1.2
+developer/gnu-binutils@2.21.1-0.175.1.0.0.24.0
+developer/macro/cpp@0.5.11-0.175.1.19.0.4.0
+driver/management/bmc@0.5.11-0.175.1.0.0.24.2
+driver/management/ipmi@0.5.11-0.175.1.6.0.3.2
+driver/serial/usbser@0.5.11-0.175.1.0.0.24.2
+driver/storage/mpt@0.5.11-0.175.1.18.0.3.2
+image/library/libjpeg@6.0.2-0.175.0.0.0.0.0
+image/library/libpng@1.4.11-0.175.1.0.0.16.0
+image/library/libtiff@3.9.5-0.175.1.15.0.2.0
+library/apr-13@1.3.9-0.175.1.0.0.24.0
+library/apr-util-13@1.3.9-0.175.1.0.0.24.0
+library/apr-util-13/apr-ldap@1.3.9-0.175.1.0.0.24.0
+library/apr-util-13/dbd-mysql@1.3.9-0.175.1.0.0.24.0
+library/apr-util-13/dbd-sqlite@1.3.9-0.175.1.0.0.24.0
+library/database/gdbm@1.8.3-0.175.1.0.0.24.0
+library/expat@2.1.0-0.175.1.0.0.24.0
+library/libffi@3.0.9-0.175.0.0.0.0.0
+library/libidn@1.19-0.175.1.0.0.24.0
+library/libtecla@1.6.1-0.175.1.0.0.24.0
+library/libxml2@2.7.6-0.175.1.7.0.3.0
+library/libxslt@1.1.26-0.175.1.11.0.4.0
+library/ncurses@5.7-0.175.1.0.0.15.0
+library/nspr@4.9.5-0.175.2.0.0.39.0
+library/perl-5/sun-solaris-512@0.5.11-0.175.1.11.0.1.2
+library/print/cups-libs@1.4.5-0.175.1.8.0.3.0
+library/python-2/cherrypy@3.1.2-0.175.1.0.0.24.0
+library/python-2/cherrypy-26@3.1.2-0.175.1.0.0.24.0
+library/python-2/jsonrpclib@0.1.3-0.175.2.0.0.42.1
+library/python-2/jsonrpclib-26@0.1.3-0.175.2.0.0.42.1
+library/python-2/libxml2-26@2.7.6-0.175.1.7.0.3.0
+library/python-2/libxsl-26@1.1.26-0.175.1.11.0.4.0
+library/python-2/lxml@2.3.3-0.175.1.0.0.24.0
+library/python-2/lxml-26@2.3.3-0.175.1.0.0.24.0
+library/python-2/m2crypto@0.21.1-0.175.1.0.0.24.0
+library/python-2/m2crypto-26@0.21.1-0.175.1.0.0.24.0
+library/python-2/mako@0.4.1-0.175.1.0.0.24.0
+library/python-2/mako-26@0.4.1-0.175.1.0.0.24.0
+library/python-2/ply@3.1-0.175.1.0.0.24.0
+library/python-2/ply-26@3.1-0.175.1.0.0.24.0
+library/python-2/pybonjour@1.1.1-0.175.1.0.0.24.0
+library/python-2/pybonjour-26@1.1.1-0.175.1.0.0.24.0
+library/python-2/pycurl@7.19.0.1-0.175.1.0.0.24.0
+library/python-2/pycurl-26@7.19.0.1-0.175.1.0.0.24.0
+library/python-2/pyopenssl@0.11-0.175.1.0.0.24.0
+library/python-2/pyopenssl-26@0.11-0.175.1.0.0.24.0
+library/python-2/python-extra-26@2.6.4-0.175.1.0.0.15.0
+library/python-2/simplejson-26@2.1.2-0.175.1.7.0.4.0
+library/readline@5.2-0.175.1.0.0.24.0
+library/security/nss@4.14.3-0.175.2.0.0.39.0
+library/security/openssl@1.0.0.13-0.175.1.21.0.2.0
+library/security/trousers@0.3.6-0.175.1.0.0.24.0
+library/zlib@1.2.3-0.175.1.0.0.24.0
+media/cdrtools@3.0-0.175.1.21.0.4.0
+media/xorriso@0.6.0-0.175.1.0.0.24.0
+network/bridging@0.5.11-0.175.1.12.0.3.2
+package/pkg@0.5.11-0.175.1.20.0.3.0
+package/pkg/system-repository@0.5.11-0.175.1.9.0.1.0
+package/pkg/zones-proxy@0.5.11-0.175.1.0.0.24.0
+package/svr4@0.5.11-0.175.1.7.0.3.2
+print/cups@1.4.5-0.175.1.8.0.3.0
+release/name@0.5.11-0.175.2.4.0.4.0
+runtime/perl-512@5.12.5-0.175.1.8.0.4.0
+runtime/python-26@2.6.8-0.175.1.17.0.4.0
+service/network/dns/mdns@0.5.11-0.175.1.0.0.24.2
+service/network/slp@0.5.11-0.175.1.0.0.24.2
+service/security/gss@0.5.11-0.175.1.0.0.24.2
+service/security/kerberos-5@0.5.11-0.175.1.18.0.2.2
+shell/bash@4.1.9-0.175.1.13.0.1.0
+shell/ksh93@93.21.0.20110208-0.175.1.19.0.2.0
+system/boot-environment-utilities@0.5.11-0.175.1.9.0.1.2
+system/boot/grub@1.99-0.175.1.14.0.2.2
+system/boot/wanboot@0.5.11-0.175.1.0.0.24.2
+system/core-os@0.5.11-0.175.1.20.0.4.2
+system/data/keyboard/keytables@0.5.11-0.175.1.0.0.24.2
+system/data/terminfo/terminfo-core@0.5.11-0.175.1.14.0.3.2
+system/data/timezone@0.5.11-0.175.2.5.0.2.0
+system/device-administration@0.5.11-0.175.1.9.0.2.2
+system/dtrace@0.5.11-0.175.1.20.0.4.2
+system/dynamic-reconfiguration@0.5.11-0.175.1.13.0.2.2
+system/fault-management@0.5.11-0.175.1.18.0.4.2
+system/file-system/hsfs@0.5.11-0.175.1.0.0.24.2
+system/file-system/pcfs@0.5.11-0.175.1.0.0.24.2
+system/file-system/ufs@0.5.11-0.175.1.18.0.3.2
+system/file-system/zfs@0.5.11-0.175.1.21.0.3.2
+system/header@0.5.11-0.175.1.20.0.4.2
+system/install@0.5.11-0.175.1.0.0.24.1736
+system/install/auto-install/auto-install-common@0.5.11-0.175.1.18.0.3.1736
+system/install/configuration@0.5.11-0.175.1.10.0.3.1736
+system/install/locale@0.5.11-0.175.1.0.0.23.1134
+system/io/infiniband@0.5.11-0.175.1.20.0.4.2
+system/io/ultra-wideband@0.5.11-0.175.1.0.0.24.2
+system/io/usb@0.5.11-0.175.1.19.0.2.2
+system/kernel@0.5.11-0.175.1.21.0.4.2
+system/kernel/cpu-counters@0.5.11-0.175.1.17.0.1.2
+system/kernel/platform@0.5.11-0.175.1.21.0.4.2
+system/keyboard/keyboard-utilities@0.5.11-0.175.1.0.0.24.2
+system/library@0.5.11-0.175.1.20.0.3.2
+system/library/boot-management@0.5.11-0.175.1.19.0.1.2
+system/library/c++-runtime@0.5.11-0.175.1.19.0.4.0
+system/library/freetype-2@2.4.11-0.175.1.18.0.1.1350
+system/library/gcc-3-runtime@3.4.3-0.175.1.0.0.24.0
+system/library/iconv/utf-8@0.5.11-0.175.1.9.0.1.1150
+system/library/install@0.5.11-0.175.1.18.0.3.1736
+system/library/libdbus@1.2.28-0.175.1.16.0.2.0
+system/library/math@0.5.11-0.175.1.19.0.4.0
+system/library/mmheap@0.5.11-0.175.1.19.0.4.0
+system/library/security/gss@0.5.11-0.175.1.18.0.3.2
+system/library/security/gss/diffie-hellman@0.5.11-0.175.1.0.0.24.2
+system/library/security/gss/spnego@0.5.11-0.175.1.16.0.1.2
+system/library/security/libsasl@0.5.11-0.175.1.0.0.24.2
+system/library/storage/libdiskmgt@0.5.11-0.175.1.5.0.3.2
+system/library/storage/scsi-plugins@0.5.11-0.175.1.0.0.24.2
+system/library/storage/snia-ima@0.5.11-0.175.1.0.0.24.2
+system/library/storage/suri@0.5.11-0.175.1.0.0.24.2
+system/linker@0.5.11-0.175.1.20.0.1.2
+system/network@0.5.11-0.175.1.20.0.3.2
+system/picl@0.5.11-0.175.1.17.0.3.2
+system/resource-mgmt/resource-pools@0.5.11-0.175.1.0.0.24.2
+system/storage/iscsi/iscsi-initiator@0.5.11-0.175.1.19.0.3.2
+system/storage/iscsi/iscsi-iser@0.5.11-0.175.1.20.0.3.2
+system/system-events@0.5.11-0.175.1.0.0.24.2
+system/xopen/xcu4@0.5.11-0.175.1.13.0.4.2
+system/zones@0.5.11-0.175.1.17.0.4.2
+system/zones/brand/brand-solaris@0.5.11-0.175.1.17.0.4.2
+text/spelling-utilities@0.5.11-0.175.1.0.0.24.2
+web/curl@7.21.2-0.175.1.18.0.3.0
+web/server/apache-22@2.2.27-0.175.1.19.0.4.0
+web/server/apache-22/module/apache-wsgi-26@3.3-0.175.1.0.0.24.0
+x11/header/x11-protocols@7.7-0.175.1.0.0.24.1317
+x11/library/libice@1.0.8-0.175.1.0.0.24.1317
+x11/library/libpthread-stubs@0.3-0.175.1.0.0.24.1317
+x11/library/libsm@1.2.1-0.175.1.0.0.24.1317
+x11/library/libx11@1.5.0-0.175.1.8.0.4.1336
+x11/library/libxau@1.0.7-0.175.1.0.0.24.1317
+x11/library/libxcb@1.8.1-0.175.1.8.0.3.1332
+x11/library/libxdmcp@1.1.1-0.175.1.0.0.24.1317
+x11/library/libxevie@1.0.3-0.175.1.0.0.24.1317
+x11/library/libxext@1.3.1-0.175.1.8.0.3.1332
+x11/library/libxrender@0.9.7-0.175.1.8.0.3.1332
+x11/library/libxscrnsaver@1.2.2-0.175.1.0.0.24.1317
+x11/library/libxtst@1.2.1-0.175.1.8.0.3.1332
+x11/library/toolkit/libxt@1.1.3-0.175.1.8.0.3.1332
diff --git a/make/idea/idea.gmk b/make/idea/idea.gmk
new file mode 100644
index 0000000..299ffe8
--- /dev/null
+++ b/make/idea/idea.gmk
@@ -0,0 +1,40 @@
+include Makefile
+include make/MainSupport.gmk
+
+.PHONY: idea
+
+ifeq ($(SPEC),)
+ ifneq ($(words $(SPECS)),1)
+ @echo "Error: Multiple build specification files found. Please select one explicitly."
+ @exit 2
+ endif
+ idea:
+ @cd $(topdir)
+ @$(MAKE) $(MFLAGS) $(MAKE_LOG_FLAGS) -r -R -j 1 -f $(topdir)/make/idea/idea.gmk SPEC=$(SPECS) HAS_SPEC=true ACTUAL_TOPDIR=$(topdir) MODULES="$(MODULES)" idea
+else #with SPEC
+ include make/common/Modules.gmk
+
+ ifeq ($(MODULES),)
+ SEL_MODULES := $(call FindAllModules)
+ else
+ SEL_MODULES := $(MODULES)
+ endif
+
+ # Find all source dirs for a particular module
+ # $1 - Module to find source dirs for
+ FindIdeaModuleSrcDirs = \
+ $(strip $(addsuffix /$(strip $1), $(GENERATED_SRC_DIRS) $(IMPORT_MODULES_SRC)) \
+ $(wildcard $(foreach sub, $(SRC_SUBDIRS), $(addsuffix /$(strip $1)/$(sub), $(TOP_SRC_DIRS)))))
+
+
+ idea:
+ $(ECHO) "SUPPORT=$(SUPPORT_OUTPUTDIR)" >> $(OUT)
+ $(ECHO) "MODULE_ROOTS=\"$(foreach mod, $(SEL_MODULES), $(call FindIdeaModuleSrcDirs,$(mod)))\"" >> $(OUT)
+ $(ECHO) "MODULE_NAMES=\"$(strip $(foreach mod, $(SEL_MODULES), $(mod)))\"" >> $(OUT)
+ $(ECHO) "SEL_MODULES=\"$(SEL_MODULES)\"" >> $(OUT)
+ $(ECHO) "BOOT_JDK=\"$(BOOT_JDK)\"" >> $(OUT)
+ $(ECHO) "CYGPATH=\"$(CYGPATH)\"" >> $(OUT)
+ $(ECHO) "SPEC=\"$(SPEC)\"" >> $(OUT)
+ $(ECHO) "JT_HOME=\"$(JT_HOME)\"" >> $(OUT)
+
+endif
diff --git a/make/idea/template/.name b/make/idea/template/.name
new file mode 100644
index 0000000..b483568
--- /dev/null
+++ b/make/idea/template/.name
@@ -0,0 +1 @@
+jdk
diff --git a/make/idea/template/ant.xml b/make/idea/template/ant.xml
new file mode 100644
index 0000000..f5274de
--- /dev/null
+++ b/make/idea/template/ant.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="AntConfiguration">
+ <buildFile url="file://$PROJECT_DIR$/.idea/build.xml">
+ <properties>
+ <property name="boot.java.home" value="$JDKPath$" />
+ <property name="jtreg.tests" value="$FilePath$" />
+ <property name="jtreg.home" value="jtreg.home" />
+ <property name="build.target.dir" value="specDir" /> <!-- this will be replaced -->
+ <property name="module.name" value="java.base" /> <!-- this will be replaced -->
+ </properties>
+ <executeOn event="afterCompilation" target="post-make" />
+ </buildFile>
+ </component>
+</project>
diff --git a/make/idea/template/build.xml b/make/idea/template/build.xml
new file mode 100644
index 0000000..b10490f
--- /dev/null
+++ b/make/idea/template/build.xml
@@ -0,0 +1,173 @@
+<!-- importing.xml -->
+<project name="jdk" basedir="..">
+
+ <script language="javascript" classpath=".idea/classes">
+ var JdkLogger = Java.type("idea.JdkIdeaAntLogger");
+ new JdkLogger(project)
+ </script>
+
+ <!-- java.marker is set to a marker file to check for within a Java install dir.
+ The best file to check for across Solaris/Linux/Windows/MacOS is one of the
+ executables; regrettably, that is OS-specific. -->
+ <condition property="java.marker" value="bin/java">
+ <os family="unix"/>
+ </condition>
+ <condition property="java.marker" value="bin/java.exe">
+ <os family="windows"/>
+ </condition>
+
+ <target name="-check-jtreg.home" depends="-def-check">
+ <check name="jtreg" property="jtreg.home" marker="lib/jtreg.jar"/>
+ </target>
+
+ <property name="test.dir" value="${basedir}/jdk/test"/>
+
+ <macrodef name="call-make">
+ <attribute name="dir"/>
+ <attribute name="args"/>
+ <sequential>
+ <exec executable="make" dir="@{dir}" failonerror="true">
+ <arg line="@{args}"/>
+ <env key="CLASSPATH" value = ""/>
+ </exec>
+ </sequential>
+ </macrodef>
+
+ <target name="post-make" depends="build-module"/>
+
+ <!--
+ **** Global JDK Build Targets
+ -->
+
+ <target name="clean" depends="-do-configure">
+ <echo message="base = ${basedir}"/>
+ <call-make dir = "${build.target.dir}" args = "clean"/>
+ </target>
+
+ <target name="-do-configure">
+ <echo message="base = ${basedir}"/>
+ <fail message="Not part of a full JDK forest">
+ <condition>
+ <not>
+ <available file="${basedir}/configure" />
+ </not>
+ </condition>
+ </fail>
+ <exec executable="sh" dir="${basedir}" failonerror="true">
+ <arg line="configure --with-boot-jdk=${boot.java.home}"/>
+ </exec>
+ </target>
+
+ <target name="images">
+ <call-make dir = "${build.target.dir}" args = "images"/>
+ </target>
+
+ <target name="jimages">
+ <call-make dir = "${build.target.dir}" args = "jimages"/>
+ </target>
+
+ <target name="check-env">
+ <exec executable="env" dir="${basedir}"/>
+ </target>
+
+ <target name="build-module">
+ <call-make dir = "${build.target.dir}" args = "${module.name}"/>
+ </target>
+
+ <target name="-check-boot.java.home" depends="-def-check">
+ <check name="bootstrap java" property="boot.java.home" marker="${java.marker}"/>
+ </target>
+
+ <target name="-def-check">
+ <macrodef name="check">
+ <attribute name="name"/>
+ <attribute name="property"/>
+ <attribute name="marker" default=""/>
+ <sequential>
+ <fail message="Cannot locate @{name}: please set @{property} to its location">
+ <condition>
+ <not>
+ <isset property="@{property}"/>
+ </not>
+ </condition>
+ </fail>
+ <fail message="@{name} is not installed in ${@{property}}">
+ <condition>
+ <and>
+ <not>
+ <equals arg1="@{marker}" arg2=""/>
+ </not>
+ <not>
+ <available file="${@{property}}/@{marker}"/>
+ </not>
+ </and>
+ </condition>
+ </fail>
+ </sequential>
+ </macrodef>
+ </target>
+
+ <macrodef name="exec-target">
+ <attribute name="antfile" default="${ant.file}" />
+ <attribute name="target" />
+ <sequential>
+ <java classname="org.apache.tools.ant.Main" fork="true" spawn="true">
+ <arg value="-f"/>
+ <arg value="@{antfile}"/>
+ <arg value="-Dbuild.target.dir=${build.target.dir}"/>
+ <arg value="-Djtreg.home=${jtreg.home}"/>
+ <arg value="-Djtreg.tests=${jtreg.tests}"/>
+ <arg value="-Djtreg.jpda.jvmargs=${jtreg.jpda.jvmargs}"/>
+ <arg value="@{target}"/>
+ <classpath>
+ <pathelement path="${java.class.path}"/>
+ </classpath>
+ </java>
+ </sequential>
+ </macrodef>
+
+ <target name="jtreg" depends="images,-def-jtreg">
+ <jtreg-tool name="all" tests="${jtreg.tests}"/>
+ </target>
+
+ <target name="-def-jtreg" unless="jtreg.defined" depends="-check-jtreg.home">
+ <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant">
+ <classpath>
+ <pathelement location="${jtreg.home}/lib/jtreg.jar"/>
+ <pathelement location="${jtreg.home}/lib/javatest.jar"/>
+ </classpath>
+ </taskdef>
+ <macrodef name="jtreg-tool">
+ <attribute name="name"/>
+ <attribute name="tests"/>
+ <attribute name="jdk" default="${build.target.dir}/images/jdk"/>
+ <attribute name="agentvm" default="true"/>
+ <attribute name="verbose" default="${default.jtreg.verbose}"/>
+ <attribute name="options" default="${other.jtreg.options}"/>
+ <attribute name="keywords" default="-keywords:!ignore"/>
+ <attribute name="jpda.jvmargs" default=""/>
+ <attribute name="extra.jvmargs" default=""/>
+ <attribute name="build.modules" default="${build.modules}"/>
+ <sequential>
+ <property name="coverage.options" value=""/> <!-- default -->
+ <property name="coverage.classpath" value=""/> <!-- default -->
+ <property name="default.jtreg.verbose" value="summary"/> <!-- default -->
+ <property name="other.jtreg.options" value=""/> <!-- default -->
+ <property name="jtreg.classfiles.to.modules" value="@{agentvm}"/>
+ <jtreg
+ dir="${test.dir}"
+ workDir="${build.target.dir}/idea/@{name}/work"
+ reportDir="${build.target.dir}/idea/@{name}/report"
+ jdk="@{jdk}"
+ agentvm="@{agentvm}" verbose="@{verbose}"
+ failonerror="false" resultproperty="jtreg.@{name}.result">
+ <arg value="-debug:@{jpda.jvmargs}"/>
+ <arg line="@{keywords}"/>
+ <arg line="@{options}"/>
+ <arg line="@{tests}"/>
+ </jtreg>
+ </sequential>
+ </macrodef>
+ <property name="jtreg.defined" value="true"/>
+ </target>
+</project>
diff --git a/make/idea/template/compiler.xml b/make/idea/template/compiler.xml
new file mode 100644
index 0000000..f801895
--- /dev/null
+++ b/make/idea/template/compiler.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="CompilerConfiguration">
+ <option name="DEFAULT_COMPILER" value="Javac" />
+ <excludeFromCompile>
+ <directory url="file://$PROJECT_DIR$/jdk/src" includeSubdirectories="true" />
+ <directory url="file://$PROJECT_DIR$/langtools/src" includeSubdirectories="true" />
+ <directory url="file://$PROJECT_DIR$/jaxp/src" includeSubdirectories="true" />
+ <directory url="file://$PROJECT_DIR$/jaxws/src" includeSubdirectories="true" />
+ <directory url="file://$PROJECT_DIR$/corba/src" includeSubdirectories="true" />
+ <directory url="file://$PROJECT_DIR$/nashorn/src" includeSubdirectories="true" />
+ <directory url="file://$PROJECT_DIR$/build" includeSubdirectories="true" />
+ <directory url="file://$PROJECT_DIR$/jdk/test" includeSubdirectories="true" />
+ <directory url="file://$PROJECT_DIR$/jaxp/test" includeSubdirectories="true" />
+ <directory url="file://$PROJECT_DIR$/langtools/test" includeSubdirectories="true" />
+ <directory url="file://$PROJECT_DIR$/langtools" includeSubdirectories="true" />
+ </excludeFromCompile>
+ <resourceExtensions />
+ <wildcardResourcePatterns>
+ <entry name="!?*.java" />
+ <entry name="!?*.form" />
+ <entry name="!?*.class" />
+ <entry name="!?*.groovy" />
+ <entry name="!?*.scala" />
+ <entry name="!?*.flex" />
+ <entry name="!?*.kt" />
+ <entry name="!?*.clj" />
+ </wildcardResourcePatterns>
+ <annotationProcessing>
+ <profile default="true" name="Default" enabled="false">
+ <processorPath useClasspath="true" />
+ </profile>
+ </annotationProcessing>
+ </component>
+</project> \ No newline at end of file
diff --git a/make/idea/template/copyright/profiles_settings.xml b/make/idea/template/copyright/profiles_settings.xml
new file mode 100644
index 0000000..7d61b5c
--- /dev/null
+++ b/make/idea/template/copyright/profiles_settings.xml
@@ -0,0 +1,3 @@
+<component name="CopyrightManager">
+ <settings default="" />
+</component>
diff --git a/make/idea/template/jdk.iml b/make/idea/template/jdk.iml
new file mode 100644
index 0000000..5e1436c
--- /dev/null
+++ b/make/idea/template/jdk.iml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
+ <exclude-output />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/####" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/jdk/test" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/langtools/test" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/jaxp/test" isTestSource="true" />
+ <excludeFolder url="file://$MODULE_DIR$/####/buildtools" />
+ <excludeFolder url="file://$MODULE_DIR$/####/configure-support" />
+ <excludeFolder url="file://$MODULE_DIR$/####/hotspot" />
+ <excludeFolder url="file://$MODULE_DIR$/####/images" />
+ <excludeFolder url="file://$MODULE_DIR$/####/ide" />
+ <excludeFolder url="file://$MODULE_DIR$/####/jdk" />
+ <excludeFolder url="file://$MODULE_DIR$/####/make-support" />
+ <excludeFolder url="file://$MODULE_DIR$/####/testoutput" />
+ </content>
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="inheritedJdk" />
+ </component>
+</module>
diff --git a/make/idea/template/misc.xml b/make/idea/template/misc.xml
new file mode 100644
index 0000000..e5caa22
--- /dev/null
+++ b/make/idea/template/misc.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="EntryPointsManager">
+ <entry_points version="2.0" />
+ </component>
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_1_9" assert-keyword="true" jdk-15="true">
+ <output url="file://$PROJECT_DIR$/build/idea/out" />
+ </component>
+</project>
diff --git a/make/idea/template/modules.xml b/make/idea/template/modules.xml
new file mode 100644
index 0000000..2d8401d
--- /dev/null
+++ b/make/idea/template/modules.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectModuleManager">
+ <modules>
+ <module fileurl="file://$PROJECT_DIR$/.idea/jdk.iml" filepath="$PROJECT_DIR$/.idea/jdk.iml" />
+ </modules>
+ </component>
+</project>
+
diff --git a/make/idea/template/scopes/scope_settings.xml b/make/idea/template/scopes/scope_settings.xml
new file mode 100644
index 0000000..db1b8ba
--- /dev/null
+++ b/make/idea/template/scopes/scope_settings.xml
@@ -0,0 +1,5 @@
+<component name="DependencyValidationManager">
+ <state>
+ <option name="SKIP_IMPORT_STATEMENTS" value="false" />
+ </state>
+</component>
diff --git a/make/idea/template/src/idea/JdkIdeaAntLogger.java b/make/idea/template/src/idea/JdkIdeaAntLogger.java
new file mode 100644
index 0000000..22d42a9
--- /dev/null
+++ b/make/idea/template/src/idea/JdkIdeaAntLogger.java
@@ -0,0 +1,375 @@
+/*
+ * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package idea;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.DefaultLogger;
+import org.apache.tools.ant.Project;
+
+import java.util.EnumSet;
+import java.util.Stack;
+
+import static org.apache.tools.ant.Project.*;
+
+/**
+ * This class is used to wrap the IntelliJ ant logger in order to provide more meaningful
+ * output when building langtools. The basic ant output in IntelliJ can be quite cumbersome to
+ * work with, as it provides two separate views: (i) a tree view, which is good to display build task
+ * in a hierarchical fashion as they are processed; and a (ii) plain text view, which gives you
+ * the full ant output. The main problem is that javac-related messages are buried into the
+ * ant output (which is made very verbose by IntelliJ in order to support the tree view). It is
+ * not easy to figure out which node to expand in order to see the error message; switching
+ * to plain text doesn't help either, as now the output is totally flat.
+ *
+ * This logger class removes a lot of verbosity from the IntelliJ ant logger by not propagating
+ * all the events to the IntelliJ's logger. In addition, certain events are handled in a custom
+ * fashion, to generate better output during the build.
+ */
+public final class JdkIdeaAntLogger extends DefaultLogger {
+
+ /**
+ * This is just a way to pass in customized binary string predicates;
+ *
+ * TODO: replace with @code{BiPredicate<String, String>} and method reference when moving to 8
+ */
+ enum StringBinaryPredicate {
+ CONTAINS() {
+ @Override
+ boolean apply(String s1, String s2) {
+ return s1.contains(s2);
+ }
+ },
+ STARTS_WITH {
+ @Override
+ boolean apply(String s1, String s2) {
+ return s1.startsWith(s2);
+ }
+ },
+ MATCHES {
+ @Override
+ boolean apply(String s1, String s2) {
+ return s1.matches(s2);
+ }
+ };
+
+ abstract boolean apply(String s1, String s2);
+ }
+
+ /**
+ * Various kinds of ant messages that we shall intercept
+ */
+ enum MessageKind {
+
+ /** a make error */
+ MAKE_ERROR(StringBinaryPredicate.CONTAINS, MSG_ERR, "error:", "compiler.err"),
+ /** a make warning */
+ MAKE_WARNING(StringBinaryPredicate.CONTAINS, MSG_WARN, "warning:", "compiler.warn"),
+ /** a make note */
+ MAKE_NOTE(StringBinaryPredicate.CONTAINS, MSG_INFO, "note:", "compiler.note"),
+ /** std make output */
+ MAKE_OTHER(StringBinaryPredicate.MATCHES, MSG_INFO, ".*"),
+ /** a javac crash */
+ JAVAC_CRASH(StringBinaryPredicate.STARTS_WITH, MSG_ERR, "An exception has occurred in the compiler"),
+ /** jtreg test success */
+ JTREG_TEST_PASSED(StringBinaryPredicate.STARTS_WITH, MSG_INFO, "Passed: "),
+ /** jtreg test failure */
+ JTREG_TEST_FAILED(StringBinaryPredicate.STARTS_WITH, MSG_ERR, "FAILED: "),
+ /** jtreg test error */
+ JTREG_TEST_ERROR(StringBinaryPredicate.STARTS_WITH, MSG_ERR, "Error: "),
+ /** jtreg report */
+ JTREG_TEST_REPORT(StringBinaryPredicate.STARTS_WITH, MSG_INFO, "Report written");
+
+ StringBinaryPredicate sbp;
+ int priority;
+ String[] keys;
+
+ MessageKind(StringBinaryPredicate sbp, int priority, String... keys) {
+ this.sbp = sbp;
+ this.priority = priority;
+ this.keys = keys;
+ }
+
+ /**
+ * Does a given message string matches this kind?
+ */
+ boolean matches(String s) {
+ for (String key : keys) {
+ if (sbp.apply(s, key)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ }
+
+ /**
+ * This enum is used to represent the list of tasks we need to keep track of during logging.
+ */
+ enum Task {
+ /** javac task - invoked during compilation */
+ MAKE("exec", MessageKind.MAKE_ERROR, MessageKind.MAKE_WARNING, MessageKind.MAKE_NOTE,
+ MessageKind.MAKE_OTHER, MessageKind.JAVAC_CRASH),
+ /** jtreg task - invoked during test execution */
+ JTREG("jtreg", MessageKind.JTREG_TEST_PASSED, MessageKind.JTREG_TEST_FAILED, MessageKind.JTREG_TEST_ERROR, MessageKind.JTREG_TEST_REPORT),
+ /** initial synthetic task when the logger is created */
+ ROOT("") {
+ @Override
+ boolean matches(String s) {
+ return false;
+ }
+ },
+ /** synthetic task catching any other tasks not in this list */
+ ANY("") {
+ @Override
+ boolean matches(String s) {
+ return true;
+ }
+ };
+
+ String taskName;
+ MessageKind[] msgs;
+
+ Task(String taskName, MessageKind... msgs) {
+ this.taskName = taskName;
+ this.msgs = msgs;
+ }
+
+ boolean matches(String s) {
+ return s.equals(taskName);
+ }
+ }
+
+ /**
+ * This enum is used to represent the list of targets we need to keep track of during logging.
+ * A regular expression is used to match a given target name.
+ */
+ enum Target {
+ /** jtreg target - executed when launching tests */
+ JTREG("jtreg") {
+ @Override
+ String getDisplayMessage(BuildEvent e) {
+ return "Running jtreg tests: " + e.getProject().getProperty("jtreg.tests");
+ }
+ },
+ /** build selected modules */
+ BUILD_MODULE("build-module") {
+ @Override
+ String getDisplayMessage(BuildEvent e) {
+ return "Building modules: " + e.getProject().getProperty("module.name") + "...";
+ }
+ },
+ /** build images */
+ BUILD_IMAGES("images") {
+ @Override
+ String getDisplayMessage(BuildEvent e) {
+ return "Building images...";
+ }
+ },
+ /** build images */
+ CONFIGURE("-do-configure") {
+ @Override
+ String getDisplayMessage(BuildEvent e) {
+ return "Configuring build...";
+ }
+ },
+ /** synthetic target catching any other target not in this list */
+ ANY("") {
+ @Override
+ String getDisplayMessage(BuildEvent e) {
+ return "Executing Ant target(s): " + e.getProject().getProperty("ant.project.invoked-targets");
+ }
+ @Override
+ boolean matches(String msg) {
+ return true;
+ }
+ };
+
+ String targetRegex;
+
+ Target(String targetRegex) {
+ this.targetRegex = targetRegex;
+ }
+
+ boolean matches(String msg) {
+ return msg.matches(targetRegex);
+ }
+
+ abstract String getDisplayMessage(BuildEvent e);
+ }
+
+ /**
+ * A custom build event used to represent status changes which should be notified inside
+ * Intellij
+ */
+ static class StatusEvent extends BuildEvent {
+
+ /** the target to which the status update refers */
+ Target target;
+
+ StatusEvent(BuildEvent e, Target target) {
+ super(new StatusTask(e, target.getDisplayMessage(e)));
+ this.target = target;
+ setMessage(getTask().getTaskName(), 2);
+ }
+
+ /**
+ * A custom task used to channel info regarding a status change
+ */
+ static class StatusTask extends org.apache.tools.ant.Task {
+ StatusTask(BuildEvent event, String msg) {
+ setProject(event.getProject());
+ setOwningTarget(event.getTarget());
+ setTaskName(msg);
+ }
+ }
+ }
+
+ /** wrapped ant logger (IntelliJ's own logger) */
+ DefaultLogger logger;
+
+ /** flag - is this the first target we encounter? */
+ boolean firstTarget = true;
+
+ /** flag - should subsequenet failures be suppressed ? */
+ boolean suppressTaskFailures = false;
+
+ /** flag - have we ran into a javac crash ? */
+ boolean crashFound = false;
+
+ /** stack of status changes associated with pending targets */
+ Stack<StatusEvent> statusEvents = new Stack<>();
+
+ /** stack of pending tasks */
+ Stack<Task> tasks = new Stack<>();
+
+ public JdkIdeaAntLogger(Project project) {
+ for (Object o : project.getBuildListeners()) {
+ if (o instanceof DefaultLogger) {
+ this.logger = (DefaultLogger)o;
+ project.removeBuildListener((BuildListener)o);
+ project.addBuildListener(this);
+ }
+ }
+ tasks.push(Task.ROOT);
+ }
+
+ @Override
+ public void buildStarted(BuildEvent event) {
+ //do nothing
+ }
+
+ @Override
+ public void buildFinished(BuildEvent event) {
+ //do nothing
+ }
+
+ @Override
+ public void targetStarted(BuildEvent event) {
+ EnumSet<Target> statusKinds = firstTarget ?
+ EnumSet.allOf(Target.class) :
+ EnumSet.complementOf(EnumSet.of(Target.ANY));
+
+ String targetName = event.getTarget().getName();
+
+ for (Target statusKind : statusKinds) {
+ if (statusKind.matches(targetName)) {
+ StatusEvent statusEvent = new StatusEvent(event, statusKind);
+ statusEvents.push(statusEvent);
+ logger.taskStarted(statusEvent);
+ firstTarget = false;
+ return;
+ }
+ }
+ }
+
+ @Override
+ public void targetFinished(BuildEvent event) {
+ if (!statusEvents.isEmpty()) {
+ StatusEvent lastEvent = statusEvents.pop();
+ if (lastEvent.target.matches(event.getTarget().getName())) {
+ logger.taskFinished(lastEvent);
+ }
+ }
+ }
+
+ @Override
+ public void taskStarted(BuildEvent event) {
+ String taskName = event.getTask().getTaskName();
+ System.err.println("task started " + taskName);
+ for (Task task : Task.values()) {
+ if (task.matches(taskName)) {
+ tasks.push(task);
+ return;
+ }
+ }
+ }
+
+ @Override
+ public void taskFinished(BuildEvent event) {
+ if (tasks.peek() == Task.ROOT) {
+ //we need to 'close' the root task to get nicer output
+ logger.taskFinished(event);
+ } else if (!suppressTaskFailures && event.getException() != null) {
+ //the first (innermost) task failure should always be logged
+ event.setMessage(event.getException().toString(), 0);
+ event.setException(null);
+ //note: we turn this into a plain message to avoid stack trace being logged by Idea
+ logger.messageLogged(event);
+ suppressTaskFailures = true;
+ }
+ tasks.pop();
+ }
+
+ @Override
+ public void messageLogged(BuildEvent event) {
+ String msg = event.getMessage();
+
+ boolean processed = false;
+
+ if (!tasks.isEmpty()) {
+ Task task = tasks.peek();
+ for (MessageKind messageKind : task.msgs) {
+ if (messageKind.matches(msg)) {
+ event.setMessage(msg, messageKind.priority);
+ processed = true;
+ if (messageKind == MessageKind.JAVAC_CRASH) {
+ crashFound = true;
+ }
+ break;
+ }
+ }
+ }
+
+ if (event.getPriority() == MSG_ERR || crashFound) {
+ //we log errors regardless of owning task
+ logger.messageLogged(event);
+ suppressTaskFailures = true;
+ } else if (processed) {
+ logger.messageLogged(event);
+ }
+ }
+}
diff --git a/make/idea/template/vcs.xml b/make/idea/template/vcs.xml
new file mode 100644
index 0000000..876d3cd
--- /dev/null
+++ b/make/idea/template/vcs.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="$PROJECT_DIR$" vcs="hg4idea" />
+ <mapping directory="$PROJECT_DIR$/jdk" vcs="hg4idea" />
+ <mapping directory="$PROJECT_DIR$/langtools" vcs="hg4idea" />
+ <mapping directory="$PROJECT_DIR$/hotspot" vcs="hg4idea" />
+ <mapping directory="$PROJECT_DIR$/nashorn" vcs="hg4idea" />
+ <mapping directory="$PROJECT_DIR$/jaxp" vcs="hg4idea" />
+ <mapping directory="$PROJECT_DIR$/jaxws" vcs="hg4idea" />
+ <mapping directory="$PROJECT_DIR$/corba" vcs="hg4idea" />
+ </component>
+</project>
+
diff --git a/make/idea/template/workspace.xml b/make/idea/template/workspace.xml
new file mode 100644
index 0000000..e6377dd
--- /dev/null
+++ b/make/idea/template/workspace.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ChangeListManager">
+ <ignored path="jdk.iws" />
+ <ignored path="$PROJECT_DIR$/build/idea/out/" />
+ <ignored path=".idea/" />
+ </component>
+ <component name="StructureViewFactory">
+ <option name="ACTIVE_ACTIONS" value=",ALPHA_COMPARATOR" />
+ </component>
+ <component name="RunManager" selected="Ant Target.jtreg">
+ <configuration default="false" name="jtreg" type="AntRunConfiguration" factoryName="Ant Target">
+ <antsettings antfile="file://$PROJECT_DIR$/.idea/build.xml" target="jtreg" />
+ <method>
+ <option name="Make" enabled="false" />
+ </method>
+ </configuration>
+ </component>
+ <component name="antWorkspaceConfiguration">
+ <option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
+ <option name="FILTER_TARGETS" value="false" />
+ <buildFile url="file://$PROJECT_DIR$/.idea/build.xml">
+ <runInBackground value="false" />
+ <targetFilters>
+ <filter targetName="post-make" isVisible="false" />
+ <filter targetName="clean" isVisible="true" />
+ <filter targetName="-do-configure" isVisible="false" />
+ <filter targetName="images" isVisible="true" />
+ <filter targetName="build-module" isVisible="true" />
+ <filter targetName="jtreg-debug" isVisible="false" />
+ <filter targetName="jtreg-debug-internal" isVisible="false" />
+ <filter targetName="jtreg" isVisible="false" />
+ <filter targetName="-check-jtreg.home" isVisible="false" />
+ <filter targetName="-def-check" isVisible="false" />
+ <filter targetName="-def-jtreg" isVisible="false" />
+ <filter targetName="-check-boot.java.home" isVisible="false" />
+ <filter targetName="-check-target.java.home" isVisible="false" />
+ <filter targetName="find-jdk-build-dir" isVisible="false" />
+ <filter targetName="check-env" isVisible="false" />
+ </targetFilters>
+ <treeView value="false" />
+ <expanded value="true" />
+ </buildFile>
+ </component>
+ <component name="ProjectView">
+ <navigator currentView="PackagesPane" proportions="" version="1">
+ <flattenPackages />
+ <showMembers />
+ <showModules />
+ <showLibraryContents />
+ <hideEmptyPackages />
+ <abbreviatePackageNames />
+ <autoscrollToSource />
+ <autoscrollFromSource />
+ <sortByType />
+ </navigator>
+ <panes>
+ <pane id="ProjectPane">
+ <subPane>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="jdk" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ </subPane>
+ </pane>
+ <pane id="PackagesPane">
+ <subPane>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="jdk" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="jdk" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ </subPane>
+ </pane>
+ <pane id="Scope" />
+ </panes>
+ </component>
+</project>
diff --git a/make/jprt.properties b/make/jprt.properties
new file mode 100644
index 0000000..173a445
--- /dev/null
+++ b/make/jprt.properties
@@ -0,0 +1,513 @@
+#
+# Copyright (c) 2006, 2016, 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.
+#
+
+##############
+#
+# Global settings
+#
+
+# Install test bundle for targets in jprt.test.bundle.targets set
+jprt.selective.test.bundle.installation=true
+
+# The current release name
+jprt.tools.default.release=jdk9
+
+# Allow concurrent changes to be merged in prior to pushing
+jprt.sync.push=true
+
+# Directories to be excluded from the source bundles
+jprt.bundle.exclude.src.dirs=build dist webrev
+
+# Use configure when building
+jprt.build.use.configure=true
+jprt.build.use.jib=true
+jprt.test.use.jib=true
+jprt.jib.launcher=common/bin/jib.sh
+jprt.build.use.jib.publish=true
+
+# Clear out all the build needs as JIB handles this
+jprt.jdk9.build.needs=
+jprt.macosx.jdk9.build.needs=
+jprt.windows_i586.jdk9.build.needs=
+jprt.windows_x64.jdk9.build.needs=
+jprt.solaris.jdk9.build.needs=
+jprt.linux_i586.jdk9.build.needs=
+jprt.linux_x64.jdk9.build.needs=
+jprt.linux_armv6.jdk9.build.needs=
+jprt.linux_armvh.jdk9.build.needs=
+jprt.linux_arm64.jdk9.build.needs=
+jprt.linux_armsflt.jdk9.build.needs=
+jprt.linux_armvfpsflt.jdk9.build.needs=
+jprt.linux_armvfphflt.jdk9.build.needs=
+jprt.linux_armv6vfphflt.jdk9.build.needs=
+jprt.solaris.client.build.needs=
+jprt.linux.client.build.needs=
+jprt.solaris.jdk9.compiler=
+jprt.linux.jdk9.compiler=
+jprt.jdk9.test.needs=
+
+# Disable the need for preinstalled Visual Studio and Xcode
+jprt.windows.jdk9.compiler=
+jprt.windows.6.2.jdk9.compiler=
+jprt.windows.6.3.jdk9.compiler=
+jprt.windows.jdk9.target.attribute.compilerVS2013.appliesTo.builds=none
+jprt.macosx.jdk9.target.attribute.compilerXcode511.appliesTo.builds=none
+
+# Set up the run flavors (jvm variants)
+jprt.run.flavors=c2,default,${my.additional.run.flavors}
+
+# Setup jib profiles
+jprt.linux_i586.product.build.jib.profile=linux-x86
+jprt.linux_x64.product.build.jib.profile=linux-x64
+jprt.macosx_x64.product.build.jib.profile=macosx-x64
+jprt.solaris_sparcv9.product.build.jib.profile=solaris-sparcv9
+jprt.solaris_x64.product.build.jib.profile=solaris-x64
+jprt.windows_i586.product.build.jib.profile=windows-x86
+jprt.windows_x64.product.build.jib.profile=windows-x64
+
+jprt.linux_i586.fastdebug.build.jib.profile=linux-x86-debug
+jprt.linux_x64.fastdebug.build.jib.profile=linux-x64-debug
+jprt.macosx_x64.fastdebug.build.jib.profile=macosx-x64-debug
+jprt.solaris_sparcv9.fastdebug.build.jib.profile=solaris-sparcv9-debug
+jprt.solaris_x64.fastdebug.build.jib.profile=solaris-x64-debug
+jprt.windows_i586.fastdebug.build.jib.profile=windows-x86-debug
+jprt.windows_x64.fastdebug.build.jib.profile=windows-x64-debug
+
+jprt.linux_i586.slowdebug.build.jib.profile=linux-x86-slowdebug
+jprt.linux_x64.slowdebug.build.jib.profile=linux-x64-slowdebug
+jprt.macosx_x64.slowdebug.build.jib.profile=macosx-x64-slowdebug
+jprt.solaris_sparcv9.slowdebug.build.jib.profile=solaris-sparcv9-slowdebug
+jprt.solaris_x64.slowdebug.build.jib.profile=solaris-x64-slowdebug
+jprt.windows_i586.slowdebug.build.jib.profile=windows-x86-slowdebug
+jprt.windows_x64.slowdebug.build.jib.profile=windows-x64-slowdebug
+
+jprt.linux_i586.productOpen.build.jib.profile=linux-x86-open
+jprt.linux_x64.productOpen.build.jib.profile=linux-x64-open
+jprt.macosx_x64.productOpen.build.jib.profile=macosx-x64-open
+jprt.solaris_sparcv9.productOpen.build.jib.profile=solaris-sparcv9-open
+jprt.solaris_x64.productOpen.build.jib.profile=solaris-x64-open
+jprt.windows_i586.productOpen.build.jib.profile=windows-x86-open
+jprt.windows_x64.productOpen.build.jib.profile=windows-x64-open
+
+jprt.linux_i586.fastdebugOpen.build.jib.profile=linux-x86-open-debug
+jprt.linux_x64.fastdebugOpen.build.jib.profile=linux-x64-open-debug
+jprt.macosx_x64.fastdebugOpen.build.jib.profile=macosx-x64-open-debug
+jprt.solaris_sparcv9.fastdebugOpen.build.jib.profile=solaris-sparcv9-open-debug
+jprt.solaris_x64.fastdebugOpen.build.jib.profile=solaris-x64-open-debug
+jprt.windows_i586.fastdebugOpen.build.jib.profile=windows-x86-open-debug
+jprt.windows_x64.fastdebugOpen.build.jib.profile=windows-x64-open-debug
+
+jprt.linux_i586.productZero.build.jib.profile=linux-x86-zero
+jprt.linux_x64.productZero.build.jib.profile=linux-x64-zero
+
+jprt.linux_i586.fastdebugZero.build.jib.profile=linux-x86-zero-debug
+jprt.linux_x64.fastdebugZero.build.jib.profile=linux-x64-zero-debug
+
+jprt.test.jib.profile=run-test-jprt
+
+# Set make target to use for different build flavors
+jprt.build.flavor.fastdebugOpen.target=jprt_bundle
+jprt.build.flavor.fastdebug.target=jprt_bundle
+jprt.build.flavor.product.target=jprt_bundle
+jprt.build.flavor.productOpen.target=jprt_bundle
+jprt.build.flavor.optimized.target=jprt_bundle
+jprt.build.flavor.optimizedOpen.target=jprt_bundle
+jprt.build.flavor.slowdebug.target=jprt_bundle
+jprt.build.flavor.productZero.target=jprt_bundle
+jprt.build.flavor.fastdebugZero.target=jprt_bundle
+
+# Use these configure args to define debug level or provide specific
+# configuration details not covered by Jib profiles.
+jprt.slowdebug.build.configure.args=
+jprt.fastdebug.build.configure.args=--disable-precompiled-headers
+# Don't disable precompiled headers on windows. It's simply too slow.
+jprt.windows_i586.fastdebug.build.configure.args=
+jprt.windows_x64.fastdebug.build.configure.args=
+jprt.windows_i586.fastdebugOpen.build.configure.args=
+jprt.windows_x64.fastdebugOpen.build.configure.args=
+jprt.product.build.configure.args=
+jprt.optimized.build.configure.args=--with-debug-level=optimized
+jprt.slowdebugOpen.build.configure.args=${jprt.slowdebug.build.configure.args}
+jprt.fastdebugOpen.build.configure.args=${jprt.fastdebug.build.configure.args}
+jprt.productOpen.build.configure.args=${jprt.product.build.configure.args}
+jprt.optimizedOpen.build.configure.args=${jprt.product.build.configure.args}
+
+
+# hotspot testset has custom build flavors and build targets
+my.jprt.testsetHasCustomBuildFlavors.hotspot=true
+my.jprt.testsetHasCustomBuildTargets.hotspot=true
+my.jprt.testsetHasCustomBuildFlavors.buildinfra=true
+my.jprt.testsetHasCustomBuildTargets.buildinfra=true
+
+# determine if the specified testset has custom build flavors or build targets
+my.jprt.testsetHasCustomBuildFlavors=${my.jprt.testsetHasCustomBuildFlavors.${jprt.test.set}}
+my.jprt.testsetHasCustomBuildTargets=${my.jprt.testsetHasCustomBuildTargets.${jprt.test.set}}
+
+# Select build flavors and build targets based on the specified testset
+jprt.build.flavors=${my.jprt.testsetHasCustomBuildFlavors ? \
+ ${my.build.flavors.${jprt.test.set}} : ${my.build.flavors.default}}
+jprt.build.targets=${my.jprt.testsetHasCustomBuildTargets ? \
+ ${my.build.targets.${jprt.test.set}} : ${my.build.targets.default}}
+
+# Select test targets - jprt default for jprt.test.set is "default"
+jprt.test.targets=${my.test.targets.${jprt.test.set}}
+jprt.make.rule.test.targets=${my.make.rule.test.targets.${jprt.test.set}}
+jprt.test.bundle.targets=${my.jprt.test.bundle.targets.${jprt.test.set}}
+
+# 7155453: Work-around to prevent popups on OSX from blocking test completion
+# but the work-around is added to all platforms to be consistent
+jprt.jbb.options=-Djava.awt.headless=true
+
+########
+#
+# Build options (generic)
+#
+
+# Configure args common to all builds
+# Also allows for additional, testset specific configure arguments to be set
+jprt.build.configure.args= \
+ --with-output-sync=recurse \
+ --with-jobs=$ALT_PARALLEL_COMPILE_JOBS \
+ --with-version-opt=$JPRT_JOB_ID \
+ ${my.additional.build.configure.args.${jprt.test.set}} \
+ ${my.custom.build.configure.args}
+
+########
+#
+# Build targets and options (default/jdk)
+#
+
+# The default build flavors
+my.build.flavors.default=fastdebug,product
+
+# Standard list of jprt build targets for this source tree
+my.build.targets.default= \
+ solaris_sparcv9_5.11-{product|fastdebug}, \
+ solaris_x64_5.11-{product|fastdebug}, \
+ linux_i586_3.8-{product|fastdebug}, \
+ linux_x64_3.8-{product|fastdebug}, \
+ macosx_x64_10.9-{product|fastdebug}, \
+ windows_i586_6.3-{product|fastdebug}, \
+ windows_x64_6.3-{product|fastdebug}, \
+ ${my.additional.build.targets.default}
+
+# Test target list (no fastdebug & limited c2 testing)
+my.test.target.set= \
+ solaris_sparcv9_5.11-product-c2-TESTNAME, \
+ solaris_x64_5.11-product-c2-TESTNAME, \
+ linux_i586_3.8-product-c2-TESTNAME, \
+ linux_x64_3.8-product-c2-TESTNAME, \
+ macosx_x64_10.9-product-c2-TESTNAME, \
+ windows_i586_6.3-product-c2-TESTNAME, \
+ windows_x64_6.3-product-c2-TESTNAME
+
+# Default vm test targets (testset=default)
+my.test.targets.default= \
+ ${my.test.target.set:TESTNAME=jvm98}, \
+ ${my.test.target.set:TESTNAME=scimark}
+
+# Default jdk test targets (testset=default)
+my.make.rule.test.targets.default= \
+ ${my.test.target.set:TESTNAME=langtools_jtreg}, \
+ ${my.test.target.set:TESTNAME=jdk_lang}, \
+ ${my.test.target.set:TESTNAME=jdk_math}, \
+ ${my.test.target.set:TESTNAME=jdk_util}
+
+# Default vm test targets (testset=core)
+my.test.targets.core=
+
+# Core jdk test targets (testset=core)
+my.make.rule.test.targets.core= \
+ ${my.test.target.set:TESTNAME=jdk_lang}, \
+ ${my.test.target.set:TESTNAME=jdk_math}, \
+ ${my.test.target.set:TESTNAME=jdk_util}, \
+ ${my.test.target.set:TESTNAME=jdk_io}, \
+ ${my.test.target.set:TESTNAME=jdk_net}, \
+ ${my.test.target.set:TESTNAME=jdk_nio}, \
+ ${my.test.target.set:TESTNAME=jdk_security1}, \
+ ${my.test.target.set:TESTNAME=jdk_security2}, \
+ ${my.test.target.set:TESTNAME=jdk_security3}, \
+ ${my.test.target.set:TESTNAME=jdk_security4}, \
+ ${my.test.target.set:TESTNAME=jdk_rmi}, \
+ ${my.test.target.set:TESTNAME=jdk_text}, \
+ ${my.test.target.set:TESTNAME=jdk_time}, \
+ ${my.test.target.set:TESTNAME=jdk_other}, \
+ ${my.test.target.set:TESTNAME=core_tools}
+
+# Svc vm test targets (testset=svc)
+my.test.targets.svc=
+
+# Core jdk test targets (testset=svc)
+my.make.rule.test.targets.svc= \
+ ${my.test.target.set:TESTNAME=jdk_management}, \
+ ${my.test.target.set:TESTNAME=jdk_instrument}, \
+ ${my.test.target.set:TESTNAME=jdk_jmx}, \
+ ${my.test.target.set:TESTNAME=jdk_jdi}, \
+ ${my.test.target.set:TESTNAME=svc_tools}, \
+ ${my.make.rule.test.targets.svc.extra}
+
+# JAXP vm test targets (testset=jaxp)
+my.test.targets.jaxp=
+
+# JAXP test targets (testset=jaxp)
+my.make.rule.test.targets.jaxp= \
+ ${my.test.target.set:TESTNAME=jaxp_all}
+
+# All vm test targets (testset=all)
+my.test.targets.all= \
+ ${my.test.targets.default}, \
+ ${my.test.target.set:TESTNAME=runThese}, \
+ ${my.test.target.set:TESTNAME=jbb_default}
+
+# All jdk test targets (testset=all)
+my.make.rule.test.targets.all= \
+ ${my.make.rule.test.targets.core}, \
+ ${my.make.rule.test.targets.svc}, \
+ ${my.test.target.set:TESTNAME=jdk_awt}, \
+ ${my.test.target.set:TESTNAME=jdk_beans}, \
+ ${my.test.target.set:TESTNAME=jdk_sound}, \
+ ${my.test.target.set:TESTNAME=jdk_swing}
+
+# PIT vm test targets (testset=pit)
+my.test.targets.pit= \
+ ${my.test.targets.all}
+
+# PIT jdk test targets (testset=pit)
+my.make.rule.test.targets.pit= \
+ ${my.test.target.set:TESTNAME=langtools_jtreg}, \
+ ${my.make.rule.test.targets.core}, \
+ ${my.make.rule.test.targets.svc} \
+ ${my.make.rule.test.targets.jaxp}
+
+# JCK test targets in test/Makefile (no windows)
+my.test.target.set.jck= \
+ solaris_sparcv9_5.11-product-c2-JCK7TESTRULE, \
+ solaris_x64_5.11-product-c2-JCK7TESTRULE, \
+ linux_i586_3.8-product-c2-JCK7TESTRULE, \
+ linux_x64_3.8-product-c2-JCK7TESTRULE
+
+# JCK testset targets
+my.make.rule.test.targets.jck= \
+ ${my.test.target.set.jck:JCK7TESTRULE=jck7devtools}, \
+ ${my.test.target.set.jck:JCK7TESTRULE=jck7runtime}, \
+ ${my.test.target.set.jck:JCK7TESTRULE=jck7compiler}
+
+
+#############
+#
+# Hotspot related settings (testset=hotspot)
+#
+
+# The hotspot build flavors
+my.build.flavors.hotspot= \
+ fastdebugOpen,fastdebug,product,productOpen,optimized,optimizedOpen \
+ ${my.additional.build.flavors.hotspot}
+
+# Platforms built for hotspot push jobs
+my.build.targets.hotspot= \
+ solaris_sparcv9_5.11-{product|fastdebug}, \
+ solaris_x64_5.11-{product|fastdebug}, \
+ linux_i586_3.8-{product|fastdebug}, \
+ linux_x64_3.8-{product|fastdebug}, \
+ macosx_x64_10.9-{product|fastdebug}, \
+ windows_i586_6.3-{product|fastdebug}, \
+ windows_x64_6.3-{product|fastdebug}, \
+ solaris_x64_5.11-{fastdebugOpen}, \
+ linux_x64_3.8-{productOpen}, \
+ ${my.additional.build.targets.hotspot}
+
+# Tests to run on the various platforms for hotspot push jobs
+my.test.targets.hotspot.solaris.sparcv9= \
+ solaris_sparcv9_5.11-{product|fastdebug}-c2-jvm98, \
+ solaris_sparcv9_5.11-{product|fastdebug}-c2-jvm98_nontiered, \
+ solaris_sparcv9_5.11-{product|fastdebug}-c2-scimark, \
+ solaris_sparcv9_5.11-product-c2-runThese8,
+
+my.test.targets.hotspot.solaris.x64= \
+ solaris_x64_5.11-{product|fastdebug}-c2-jvm98, \
+ solaris_x64_5.11-{product|fastdebug}-c2-jvm98_nontiered, \
+ solaris_x64_5.11-{product|fastdebug}-c2-scimark, \
+ solaris_x64_5.11-product-c2-runThese8, \
+ solaris_x64_5.11-product-c2-runThese8_Xcomp_lang, \
+ solaris_x64_5.11-product-c2-runThese8_Xcomp_vm,
+
+my.test.targets.hotspot.linux.i586= \
+ linux_i586_3.8-{product|fastdebug}-c2-jvm98, \
+ linux_i586_3.8-{product|fastdebug}-c2-jvm98_nontiered, \
+ linux_i586_3.8-{product|fastdebug}-c2-scimark, \
+ linux_i586_3.8-fastdebug-c2-runThese8_Xcomp_lang, \
+ linux_i586_3.8-fastdebug-c2-runThese8_Xcomp_vm
+
+my.test.targets.hotspot.linux.x64= \
+ linux_x64_3.8-{product|fastdebug}-c2-jvm98, \
+ linux_x64_3.8-{product|fastdebug}-c2-jvm98_nontiered, \
+ linux_x64_3.8-{product|fastdebug}-c2-scimark
+
+my.test.targets.hotspot.macosx.x64= \
+ macosx_x64_10.9-{product|fastdebug}-c2-jvm98, \
+ macosx_x64_10.9-{product|fastdebug}-c2-jvm98_nontiered, \
+ macosx_x64_10.9-{product|fastdebug}-c2-scimark
+
+my.test.targets.hotspot.windows.i586= \
+ windows_i586_6.3-{product|fastdebug}-c2-jvm98, \
+ windows_i586_6.3-{product|fastdebug}-c2-jvm98_nontiered, \
+ windows_i586_6.3-{product|fastdebug}-c2-scimark, \
+ windows_i586_6.3-product-c2-runThese8, \
+ windows_i586_6.3-product-c2-runThese8_Xcomp_lang, \
+ windows_i586_6.3-product-c2-runThese8_Xcomp_vm,
+
+my.test.targets.hotspot.windows.x64= \
+ windows_x64_6.3-{product|fastdebug}-c2-jvm98, \
+ windows_x64_6.3-{product|fastdebug}-c2-jvm98_nontiered, \
+ windows_x64_6.3-{product|fastdebug}-c2-scimark, \
+ windows_x64_6.3-product-c2-runThese8, \
+ windows_x64_6.3-product-c2-runThese8_Xcomp_lang, \
+ windows_x64_6.3-product-c2-runThese8_Xcomp_vm,
+
+# Some basic "smoke" tests for OpenJDK builds
+my.test.targets.hotspot.open= \
+ solaris_x64_5.11-{productOpen|fastdebugOpen}-c2-jvm98, \
+ linux_x64_3.8-{productOpen|fastdebugOpen}-c2-jvm98
+
+# The complete list of test targets for jprt
+my.test.targets.hotspot= \
+ ${my.test.targets.hotspot.open}, \
+ ${my.test.targets.hotspot.solaris.sparcv9}, \
+ ${my.test.targets.hotspot.solaris.x64}, \
+ ${my.test.targets.hotspot.linux.i586}, \
+ ${my.test.targets.hotspot.linux.x64}, \
+ ${my.test.targets.hotspot.macosx.x64}, \
+ ${my.test.targets.hotspot.windows.i586}, \
+ ${my.test.targets.hotspot.windows.x64}, \
+ ${my.test.targets.hotspot.solaris.sparcv9}, \
+ ${my.test.targets.hotspot.solaris.x64}, \
+ ${my.test.targets.hotspot.linux.x64}, \
+ ${my.test.targets.hotspot.windows.i586}, \
+ ${my.test.targets.hotspot.windows.x64}, \
+ ${my.additional.test.targets.hotspot}
+
+
+# Make file based test targets
+
+my.make.rule.test.targets.hotspot.basicvmtests= \
+ linux_i586_3.8-*-default-hotspot_basicvmtest, \
+ linux_x64_3.8-*-default-hotspot_basicvmtest, \
+ macosx_x64_10.9-*-default-hotspot_basicvmtest, \
+ solaris_sparcv9_5.11-*-default-hotspot_basicvmtest, \
+ solaris_x64_5.11-*-default-hotspot_basicvmtest, \
+ windows_i586_6.3-*-default-hotspot_basicvmtest, \
+ windows_x64_6.3-*-default-hotspot_basicvmtest
+
+my.make.rule.test.targets.hotspot.gtest= \
+ linux_i586_3.8-*-default-hotspot_gtest, \
+ linux_x64_3.8-*-default-hotspot_gtest, \
+ macosx_x64_10.9-*-default-hotspot_gtest, \
+ solaris_sparcv9_5.11-*-default-hotspot_gtest, \
+ solaris_x64_5.11-*-default-hotspot_gtest, \
+ windows_i586_6.3-*-default-hotspot_gtest, \
+ windows_x64_6.3-*-default-hotspot_gtest, \
+ ${my.additional.make.rule.test.targets.hotspot.gtest}
+
+my.make.rule.test.targets.hotspot.reg.group= \
+ solaris_sparcv9_5.11-fastdebug-c2-GROUP, \
+ solaris_x64_5.11-fastdebug-c2-GROUP, \
+ linux_i586_3.8-fastdebug-c2-GROUP, \
+ linux_x64_3.8-fastdebug-c2-GROUP, \
+ macosx_x64_10.9-fastdebug-c2-GROUP, \
+ windows_i586_6.3-fastdebug-c2-GROUP, \
+ windows_x64_6.3-fastdebug-c2-GROUP
+
+# Hotspot jtreg tests
+my.make.rule.test.targets.hotspot.reg= \
+ ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_compiler_1}, \
+ ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_compiler_2}, \
+ ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_compiler_3}, \
+ ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_compiler_closed}, \
+ ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_gc_1}, \
+ ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_gc_2}, \
+ ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_gc_closed}, \
+ ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_gc_gcold}, \
+ ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_gc_gcbasher}, \
+ ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_runtime}, \
+ ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_serviceability}, \
+ ${my.make.rule.test.targets.hotspot.reg.group:GROUP=jdk_svc_sanity}, \
+ solaris_sparcv9_5.11-product-c2-hotspot_fast_gc_gcbasher, \
+ solaris_x64_5.11-product-c2-hotspot_fast_gc_gcbasher, \
+ linux_i586_3.8-product-c2-hotspot_fast_gc_gcbasher, \
+ linux_x64_3.8-product-c2-hotspot_fast_gc_gcbasher, \
+ macosx_x64_10.9-product-c2-hotspot_fast_gc_gcbasher, \
+ windows_i586_6.3-product-c2-hotspot_fast_gc_gcbasher, \
+ windows_x64_6.3-product-c2-hotspot_fast_gc_gcbasher, \
+ ${my.additional.make.rule.test.targets.hotspot.reg}
+
+# Other Makefile based Hotspot tests
+my.make.rule.test.targets.hotspot.other= \
+ ${my.make.rule.test.targets.hotspot.basicvmtests}, \
+ ${my.make.rule.test.targets.hotspot.gtest}, \
+ ${my.additional.make.rule.test.targets.hotspot.other}
+
+# All the makefile based tests to run
+my.make.rule.test.targets.hotspot= \
+ ${my.make.rule.test.targets.hotspot.reg} \
+ ${my.make.rule.test.targets.hotspot.other}
+
+# Install the test bundle for the testset hotspot jtreg tests
+# (but not for the other Makefile based tests)
+my.jprt.test.bundle.targets.hotspot= \
+ ${my.make.rule.test.targets.hotspot.reg}, \
+ ${my.make.rule.test.targets.hotspot.gtest}
+
+# Native jdk and hotspot test targets (testset=nativesanity)
+my.make.rule.test.targets.nativesanity= \
+ ${my.test.target.set:TESTNAME=jdk_native_sanity}, \
+ ${my.test.target.set:TESTNAME=hotspot_native_sanity}
+
+# Install the test bundle for the nativesanity jtreg tests
+my.jprt.test.bundle.targets.nativesanity=${my.make.rule.test.targets.nativesanity}
+
+################################################################################
+# Testset buildinfra
+my.build.flavors.buildinfra = \
+ product,fastdebug,slowdebug,productZero,fastdebugZero \
+ ${my.additional.build.flavors.buildinfra}
+
+# Platforms built for hotspot push jobs
+my.build.targets.buildinfra = \
+ solaris_sparcv9_5.11-{product|fastdebug|slowdebug}, \
+ solaris_x64_5.11-{product|fastdebug|slowdebug}, \
+ linux_i586_3.8-{product|fastdebug|slowdebug|productZero|fastdebugZero}, \
+ linux_x64_3.8-{product|fastdebug|slowdebug|productZero|fastdebugZero}, \
+ macosx_x64_10.9-{product|fastdebug|slowdebug}, \
+ windows_i586_6.3-{product|fastdebug|slowdebug}, \
+ windows_x64_6.3-{product|fastdebug|slowdebug}, \
+ ${my.additional.build.targets.buildinfra}
+
+my.test.targets.buildinfra = \
+ ${my.test.targets.default}, \
+ ${my.test.targets.hotspot}
+
+my.make.rule.test.targets.buildinfra = \
+ ${my.make.rule.test.targets.default}, \
+ ${my.make.rule.test.targets.hotspot}
diff --git a/make/scripts/lic_check.sh b/make/scripts/lic_check.sh
new file mode 100644
index 0000000..c166115
--- /dev/null
+++ b/make/scripts/lic_check.sh
@@ -0,0 +1,224 @@
+#! /bin/sh -f
+#
+# 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.
+#
+
+#
+# This script checks a copyright notice.
+#
+# The script should be located in the main jdk repository under make/scripts.
+# It works with the templates in the make/templates directory of the jdk source.
+#
+# Usage: "lic_check.sh [-gpl] or [-gplcp] or [-bsd] file(s)"
+
+script_directory=`dirname $0`
+script_name=`basename $0`
+first_option=$1
+
+# parse the first argument
+
+case "$1" in
+ "-gpl")
+ header="gpl-header"
+ ;;
+ "-gplcp")
+ header="gpl-cp-header"
+ ;;
+ "-bsd")
+ header="bsd-header"
+ ;;
+ *)
+ echo "Usage: $0 [-gpl] or [-gplcp] or [-bsd] file(s)" 1>&2
+ exit 1
+ ;;
+esac
+shift
+
+#initialize error status
+error_status=0
+
+# determine and set the absolute path for the script directory
+D=`dirname "${script_directory}"`
+B=`basename "${script_directory}"`
+script_dir="`cd \"${D}\" 2>/dev/null && pwd || echo \"${D}\"`/${B}"
+
+# set up a variable for the templates directory
+template_dir=${script_dir}/../templates
+
+# Check existence of the template directory.
+if [ ! -d ${template_dir} ] ; then
+ echo "ERROR: The templates directory "${template_dir}" doesn't exist." 1>&2
+ exit 1
+fi
+
+# set the temporary file location
+tmpfile=/tmp/source_file.$$
+rm -f ${tmpfile}
+
+# check number of lines in the template file
+lines=`cat ${template_dir}/${header} | wc -l`
+
+# the template file has one empty line at the end, we need to ignore it
+lines=`expr ${lines} - 1`
+
+# A loop through the all script parameters:
+#
+# 1. Given a set of source files and a license template header, read a file name of each source file.
+# 2. Check if a given file exists. When a directory is encountered, dive in and process all sources in those directories.
+# 3. Read each line of the given file and check it for a copyright string.
+# 4. If a copyright string found, check the correctness of the years format in the string and replace years with %YEARS%.
+# 5. Continue reading the file until the number of lines is equal to the length of the license template header ($lines) and remove a comment prefix for each line.
+# 6. Store the result (the license header from a given file) into a temporary file.
+# 7. If a temporary file is not empty, compare it with a template file to verify if the license text is the same as in a template.
+# 8. Produce a error in case a temporary file is empty, it means we didn't find a copyright string, or it's not correct
+#
+while [ "$#" -gt "0" ] ; do
+ touch ${tmpfile}
+
+ # In case of the directory as a parameter check recursively every file inside.
+ if [ -d $1 ] ; then
+ curdir=`pwd`
+ cd $1
+ echo "*** Entering directory: "`pwd`
+ echo "***"
+ files=`ls .`
+ sh ${script_dir}/${script_name} ${first_option} ${files}
+ status=$?
+ if [ ${error_status} -ne 1 ] ; then
+ error_status=${status}
+ fi
+ cd ${curdir}
+ shift
+ continue
+ else
+ echo "### Checking copyright notice in the file: "$1
+ echo "###"
+ fi
+
+ # Check the existence of the source file.
+ if [ ! -f $1 ] ; then
+ echo "ERROR: The source file "$1" doesn't exist." 1>&2
+ error_status=1
+ shift
+ continue
+ fi
+
+ # read the source file and determine where the header starts, then get license header without prefix
+ counter=0
+ while read line ; do
+ # remove windows "line feed" character from the line (if any)
+ line=`echo "${line}" | tr -d '\r'`
+ # check if the given line contains copyright
+ check_copyright=`echo "${line}" | grep "Copyright (c) "`
+ if [ "${check_copyright}" != "" ] ; then
+ # determine the comment prefix
+ prefix=`echo "${line}" | cut -d "C" -f 1`
+ # remove prefix (we use "_" as a sed delimiter, since the prefix could be like //)
+ copyright_without_prefix=`echo "${line}" | sed s_"^${prefix}"__g`
+ # copyright years
+ year1=`echo "${copyright_without_prefix}" | cut -d " " -f 3`
+ year2=`echo "${copyright_without_prefix}" | cut -d " " -f 4`
+ # Processing the first year in the copyright string
+ length=`expr "${year1}" : '.*'`
+ if [ ${length} -ne 5 ] ; then
+ break
+ fi
+ check_year1=`echo ${year1} | egrep "19[0-9][0-9],|2[0-9][0-9][0-9],"`
+ if [ "${check_year1}" = "" ] ; then
+ break
+ fi
+ # Processing the second year in the copyright string
+ if [ "${year2}" != "Oracle" ] ; then
+ length=`expr "${year2}" : '.*'`
+ if [ ${length} -ne 5 ] ; then
+ break
+ else
+ check_year2=`echo ${year2} | egrep "19[0-9][0-9],|2[0-9][0-9][0-9],"`
+ if [ "${check_year2}" = "" ] ; then
+ break
+ fi
+ fi
+ fi
+
+ # copyright string without copyright years
+ no_years=`echo "${copyright_without_prefix}" | sed 's/[0-9,]*//g'`
+ # copyright string before years
+ before_years=`echo "${no_years}" | cut -d "O" -f 1`
+ # copyright string after years
+ after_years=`echo "${no_years}" | cut -d ")" -f 2`
+ # form a new copyright string with %YEARS%
+ new_copyright=`echo ${before_years}"%YEARS%"${after_years}`
+ # save the new copyright string to a file
+ echo "${new_copyright}" > ${tmpfile}
+ # start counting the lines
+ counter=1
+ # move to the next line
+ continue
+ fi
+ if [ ${counter} -ne 0 ] ; then
+ # this should be a license header line, hence increment counter
+ counter=`expr ${counter} + 1`
+ # record a string without a prefix to a file
+ newline=`echo "${line}" | sed s_"^${prefix}"__`
+
+ # we need to take care of the empty lines in the header, i.e. check the prefix without spaces
+ trimmed_prefix=`echo "${prefix}" | tr -d " "`
+ trimmed_line=`echo "${line}" | tr -d " "`
+ if [ "${trimmed_line}" = "${trimmed_prefix}" ] ; then
+ echo "" >> ${tmpfile}
+ else
+ echo "${newline}" >> ${tmpfile}
+ fi
+ fi
+ # stop reading lines when a license header ends and add an empty line to the end
+ if [ ${counter} -eq ${lines} ] ; then
+ echo "" >> ${tmpfile}
+ break
+ fi
+ done < $1
+
+ # compare the license header with a template file
+ if [ -s ${tmpfile} ] ; then
+ diff -c ${tmpfile} ${template_dir}/${header} 1>&2
+ if [ "$?" = "0" ] ; then
+ echo "SUCCESS: The license header for "`pwd`"/"$1" has been verified."
+ echo "###"
+ else
+ echo "ERROR: License header is not correct in "`pwd`"/"$1 1>&2
+ echo "See diffs above. " 1>&2
+ echo "###" 1>&2
+ echo "" 1>&2
+ error_status=1
+ fi
+ else
+ # If we don't have a temporary file, there is a problem with a copyright string (or no copyright string)
+ echo "ERROR: Copyright string is not correct or missing in "`pwd`"/"$1 1>&2
+ echo "###" 1>&2
+ echo "" 1>&2
+ error_status=1
+ fi
+ rm -f ${tmpfile}
+ shift
+done
+if [ ${error_status} -ne 0 ] ; then
+ exit 1
+fi
diff --git a/make/scripts/normalizer.pl b/make/scripts/normalizer.pl
new file mode 100644
index 0000000..28aeff2
--- /dev/null
+++ b/make/scripts/normalizer.pl
@@ -0,0 +1,206 @@
+#!/usr/bin/perl
+
+#
+# Copyright (c) 2009, 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.
+#
+
+#
+# Parses java files:
+# 1. Removes from the end of lines spaces and TABs
+# 2. Replaces TABs by spaces
+# 3. Replaces all NewLine separators by Unix NewLine separators
+# 4. Makes one and only one empty line at the end of each file
+
+if ($#ARGV < 0) {
+ &usage;
+
+ die;
+}
+
+use Cwd 'abs_path';
+
+my @extensions = ("java");
+
+# Read options
+my $dirpos = 0;
+
+while ($dirpos < $#ARGV) {
+ if ($ARGV[$dirpos] eq "-e") {
+ @extensions = split(/,/, $ARGV[$dirpos + 1]);
+ } else {
+ last;
+ }
+
+ $dirpos += 2;
+}
+
+if ($dirpos > $#ARGV) {
+ &usage;
+
+ die;
+}
+
+use Cwd;
+my $currdir = getcwd;
+
+my $allfiles = 0;
+
+my $filecount = 0;
+
+my @tabvalues;
+
+# Init tabvalues
+push (@tabvalues, " ");
+
+for (my $i = 1; $i < 8; $i++) {
+ push(@tabvalues, $tabvalues[$i - 1] . " ");
+}
+
+open(FILELIST, ">$currdir/filelist") or die "Failed while open $currdir/filelist: $!\n";
+
+while ($dirpos <= $#ARGV) {
+ use File::Find;
+
+ find(\&parse_file, abs_path($ARGV[$dirpos]));
+
+ $dirpos += 1;
+}
+
+close(FILELIST);
+
+use Cwd 'chdir';
+chdir $currdir;
+
+print "Checked $allfiles file(s)\n";
+print "Modified $filecount file(s)\n";
+print "See results in the file $currdir/filelist\n";
+
+sub parse_file {
+ my $filename = $File::Find::name;
+
+ # Skip directories
+ return if -d;
+
+ # Skip SCCS files
+ return if ($filename =~ /\/SCCS\//);
+
+ # Skip files with invalid extensions
+ my $accepted = 0;
+ foreach my $ext (@extensions) {
+ if ($_ =~ /\.$ext$/i) {
+ $accepted = 1;
+
+ last;
+ }
+ }
+ return if ($accepted == 0);
+
+ use File::Basename;
+ my $dirname = dirname($filename);
+
+ use Cwd 'chdir';
+ chdir $dirname;
+
+ open(FILE, $filename) or die "Failed while open $filename: $!\n";
+
+ # Read file
+ my @content;
+ my $line;
+ my $emptylinescount = 0;
+ my $modified = 0;
+
+ while ($line = <FILE>) {
+ my $originalline = $line;
+
+ # Process line
+
+ # Remove from the end of the line spaces and return character
+ while ($line =~ /\s$/) {
+ chop($line);
+ }
+
+ # Replace TABs
+ for (my $i = 0; $i < length($line); $i++) {
+ if (substr($line, $i, 1) =~ /\t/) {
+ $line = substr($line, 0, $i) . $tabvalues[7 - ($i % 8)] . substr($line, $i + 1);
+ }
+ }
+
+ if (length($line) == 0) {
+ $emptylinescount++;
+ } else {
+ while ($emptylinescount > 0) {
+ push(@content, "");
+
+ $emptylinescount--;
+ }
+
+ push(@content, $line);
+ }
+
+ if ($originalline ne ($line . "\n")) {
+ $modified = 1;
+ }
+
+ }
+
+ $allfiles++;
+
+ if ($emptylinescount > 0) {
+ $modified = 1;
+ }
+
+ close(FILE);
+
+ if ($modified != 0) {
+ # Write file
+ open(FILE, ">$filename") or die "Failed while open $filename: $!\n";
+
+ for (my $i = 0; $i <= $#content; $i++) {
+ print FILE "$content[$i]\n";
+ }
+
+ close(FILE);
+
+ # Print name from current dir
+ if (index($filename, $currdir) == 0) {
+ print FILELIST substr($filename, length($currdir) + 1);
+ } else {
+ print FILELIST $filename;
+ }
+ print FILELIST "\n";
+
+ $filecount++;
+
+ print "$filename: modified\n";
+ }
+}
+
+sub usage {
+ print "Usage:\n";
+ print " normalizer.pl [-options] <dir> [dir2 dir3 ...]\n";
+ print " Available options:\n";
+ print " -e comma separated files extensions. By default accepts only java files\n";
+ print "\n";
+ print "Examples:\n";
+ print " normalizer.pl -e c,cpp,h,hpp .\n";
+}
diff --git a/make/scripts/update_copyright_year.sh b/make/scripts/update_copyright_year.sh
new file mode 100644
index 0000000..948f80d
--- /dev/null
+++ b/make/scripts/update_copyright_year.sh
@@ -0,0 +1,198 @@
+#!/bin/bash -f
+
+#
+# Copyright (c) 2010, 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.
+#
+
+# Script to update the Copyright YEAR range in Mercurial sources.
+# (Originally from xdono, Thanks!)
+
+if [ "`uname -s`" = "SunOS" ] ; then
+ awk=nawk
+else
+ awk=awk
+fi
+
+# Stop on any error
+set -e
+
+# Temp area
+tmp=/tmp/`basename $0`.${USER}.$$
+rm -f -r ${tmp}
+mkdir -p ${tmp}
+total=0
+
+# This year or supplied year
+if [ "$1" != "" ] ; then
+ year="$1"
+else
+ year=`date +%Y`
+fi
+
+# Return true if it makes sense to edit this file
+saneFileToCheck()
+{
+ if [ "$1" != "" -a -f $1 ] ; then
+ isText=`file "$1" | egrep -i '(text|source)' | cat`
+ hasCopyright=`grep 'Copyright' "$1" | cat`
+ lastLineCount=`tail -1 "$1" | wc -l`
+ if [ "${isText}" != "" \
+ -a "${hasCopyright}" != "" \
+ -a ${lastLineCount} -eq 1 ] ; then
+ echo "true"
+ else
+ echo "false"
+ fi
+ else
+ echo "false"
+ fi
+}
+
+# Update the copyright year on a file
+updateFile() # file
+{
+ changed="false"
+ if [ `saneFileToCheck "$1"` = "true" ] ; then
+ copyright="Copyright (c)"
+ company="Oracle"
+ rm -f $1.OLD
+ mv $1 $1.OLD
+ cat $1.OLD | \
+ sed -e "s@\(${copyright} [12][0-9][0-9][0-9],\) [12][0-9][0-9][0-9], ${company}@\1 ${year}, ${company}@" | \
+ sed -e "s@\(${copyright} [12][0-9][0-9][0-9],\) ${company}@\1 ${year}, ${company}@" | \
+ sed -e "s@${copyright} ${year}, ${year}, ${company}@${copyright} ${year}, ${company}@" \
+ > $1
+ if ! diff -b -w $1.OLD $1 > /dev/null ; then \
+ changed="true"
+ rm -f $1.OLD
+ else
+ rm -f $1
+ mv $1.OLD $1
+ fi
+ fi
+ echo "${changed}"
+}
+
+# Update the copyright year on all files changed by this changeset
+updateChangesetFiles() # changeset
+{
+ count=0
+ files=${tmp}/files.$1
+ rm -f ${files}
+ hg log --rev $1 -v --template '{files}\n' | expand \
+ | ${awk} -F' ' '{for(i=1;i<=NF;i++)print $i}' \
+ > ${files}
+ if [ -f "${files}" -a -s "${files}" ] ; then
+ copyright="Copyright (c)"
+ company="Oracle"
+ fcount=`cat ${files}| wc -l`
+ for i in `cat ${files}` ; do
+ if [ `updateFile "${i}"` = "true" ] ; then
+ count=`expr ${count} '+' 1`
+ fi
+ done
+ if [ ${count} -gt 0 ] ; then
+ printf " UPDATED year on %d of %d files.\n" ${count} ${fcount}
+ total=`expr ${total} '+' ${count}`
+ else
+ printf " None of the %d files were changed.\n" ${fcount}
+ fi
+ else
+ printf " ERROR: No files changed in the changeset? Must be a mistake.\n"
+ set -x
+ ls -al ${files}
+ hg log --rev $1 -v --template '{files}\n'
+ hg log --rev $1 -v --template '{files}\n' | expand \
+ | ${awk} -F' ' '{for(i=1;i<=NF;i++)print $i}'
+ set +x
+ exit 1
+ fi
+ rm -f ${files}
+}
+
+# Check if repository is clean
+previous=`hg status|wc -l`
+if [ ${previous} -ne 0 ] ; then
+ echo "WARNING: This repository contains previously edited working set files."
+ echo " hg status | wc -l = `hg status | wc -l`"
+fi
+
+# Get all changesets this year
+all_changesets=${tmp}/all_changesets
+rm -f ${all_changesets}
+hg log --no-merges -v -d "${year}-01-01 to ${year}-12-31" --template '{node}\n' > ${all_changesets}
+
+# Check changeset to see if it is Copyright only changes, filter changesets
+if [ -s ${all_changesets} ] ; then
+ echo "Changesets made in ${year}: `cat ${all_changesets} | wc -l`"
+ index=0
+ cat ${all_changesets} | while read changeset ; do
+ index=`expr ${index} '+' 1`
+ desc=${tmp}/desc.${changeset}
+ rm -f ${desc}
+ echo "------------------------------------------------"
+ hg log --rev ${changeset} --template '{desc}\n' > ${desc}
+ printf "%d: %s\n%s\n" ${index} "${changeset}" "`cat ${desc}|head -1`"
+ if [ "${year}" = "2010" ] ; then
+ if cat ${desc} | fgrep -i "Added tag" > /dev/null ; then
+ printf " EXCLUDED tag changeset.\n"
+ elif cat ${desc} | fgrep -i rebrand > /dev/null ; then
+ printf " EXCLUDED rebrand changeset.\n"
+ elif cat ${desc} | fgrep -i copyright > /dev/null ; then
+ printf " EXCLUDED copyright changeset.\n"
+ else
+ updateChangesetFiles ${changeset}
+ fi
+ else
+ if cat ${desc} | fgrep -i "Added tag" > /dev/null ; then
+ printf " EXCLUDED tag changeset.\n"
+ elif cat ${desc} | fgrep -i "copyright year" > /dev/null ; then
+ printf " EXCLUDED copyright year changeset.\n"
+ else
+ updateChangesetFiles ${changeset}
+ fi
+ fi
+ rm -f ${desc}
+ done
+fi
+
+if [ ${total} -gt 0 ] ; then
+ echo "---------------------------------------------"
+ echo "Updated the copyright year on a total of ${total} files."
+ if [ ${previous} -eq 0 ] ; then
+ echo "This count should match the count of modified files in the repository: hg status -m"
+ else
+ echo "WARNING: This repository contained previously edited working set files."
+ fi
+ echo " hg status -m | wc -l = `hg status -m | wc -l`"
+else
+ echo "---------------------------------------------"
+ echo "No files were changed"
+ if [ ${previous} -ne 0 ] ; then
+ echo "WARNING: This repository contained previously edited working set files."
+ fi
+ echo " hg status -m | wc -l = `hg status -m | wc -l`"
+fi
+
+# Cleanup
+rm -f -r ${tmp}
+exit 0
diff --git a/make/templates/bsd-header b/make/templates/bsd-header
new file mode 100644
index 0000000..cce4fa7
--- /dev/null
+++ b/make/templates/bsd-header
@@ -0,0 +1,29 @@
+Copyright (c) %YEARS% Oracle and/or its affiliates. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of Oracle nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/make/templates/gpl-cp-header b/make/templates/gpl-cp-header
new file mode 100644
index 0000000..8c03edf
--- /dev/null
+++ b/make/templates/gpl-cp-header
@@ -0,0 +1,23 @@
+Copyright (c) %YEARS% 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.
+
diff --git a/make/templates/gpl-header b/make/templates/gpl-header
new file mode 100644
index 0000000..dffde47
--- /dev/null
+++ b/make/templates/gpl-header
@@ -0,0 +1,21 @@
+Copyright (c) %YEARS% 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.
+
diff --git a/make/test/BuildFailureHandler.gmk b/make/test/BuildFailureHandler.gmk
new file mode 100644
index 0000000..e64541f
--- /dev/null
+++ b/make/test/BuildFailureHandler.gmk
@@ -0,0 +1,128 @@
+#
+# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: build
+
+include $(SPEC)
+include MakeBase.gmk
+include JavaCompilation.gmk
+include SetupJavaCompilers.gmk
+include NativeCompilation.gmk
+
+TARGETS :=
+
+################################################################################
+
+FH_BASEDIR := $(SRC_ROOT)/test/failure_handler
+FH_SUPPORT := $(SUPPORT_OUTPUTDIR)/test/failure_handler
+FH_JAR := $(FH_SUPPORT)/jtregFailureHandler.jar
+
+JTREG_JAR := $(JT_HOME)/lib/jtreg.jar
+ifeq ($(wildcard $(JTREG_JAR)), )
+ $(error Cannot build failure handler without jtreg)
+endif
+# tools.jar is only needed if it exists in the boot jdk
+TOOLS_JAR := $(wildcard $(BOOT_JDK)/lib/tools.jar)
+
+FH_CLASSPATH := $(call PathList, $(JTREG_JAR) $(TOOLS_JAR))
+
+$(eval $(call SetupJavaCompilation, BUILD_FAILURE_HANDLER, \
+ SETUP := GENERATE_OLDBYTECODE, \
+ SRC := $(FH_BASEDIR)/src/share/classes $(FH_BASEDIR)/src/share/conf, \
+ BIN := $(FH_SUPPORT)/classes, \
+ COPY := .properties, \
+ CLASSPATH := $(JTREG_JAR) $(TOOLS_JAR), \
+ JAR := $(FH_JAR), \
+))
+
+TARGETS += $(BUILD_FAILURE_HANDLER)
+
+################################################################################
+
+ifeq ($(OPENJDK_TARGET_OS), windows)
+
+ $(eval $(call SetupNativeCompilation, BUILD_LIBTIMEOUT_HANDLER, \
+ LIBRARY := timeoutHandler, \
+ SRC := $(FH_BASEDIR)/src/windows/native/libtimeoutHandler, \
+ OBJECT_DIR := $(FH_SUPPORT)/libtimeoutHandler, \
+ OUTPUT_DIR := $(FH_SUPPORT), \
+ CFLAGS := $(CFLAGS_JDKLIB), \
+ LDFLAGS := $(LDFLAGS_JDKLIB), \
+ OPTIMIZATION := LOW, \
+ ))
+
+ TARGETS += $(BUILD_LIBTIMEOUT_HANDLER)
+
+endif
+
+################################################################################
+# Targets for building test-image.
+################################################################################
+
+# Copy to hotspot jtreg test image
+$(eval $(call SetupCopyFiles, COPY_FH, \
+ SRC := $(FH_SUPPORT), \
+ DEST := $(TEST_IMAGE_DIR)/failure_handler, \
+ FILES := $(FH_JAR) $(BUILD_LIBTIMEOUT_HANDLER), \
+))
+
+IMAGES_TARGETS += $(COPY_FH)
+
+################################################################################
+# Test the failure handler itself
+################################################################################
+#
+# Use JTREG_TEST_OPTS for test VM options
+# Use JTREG_TESTS for jtreg tests parameter
+#
+RUN_DIR := $(FH_SUPPORT)/test
+# Add the dir of the dll to the path on windows
+ifeq ($(OPENJDK_TARGET_OS), windows)
+ export PATH := $(PATH);$(FH_SUPPORT)
+endif
+
+test:
+ $(RM) -r $(RUN_DIR)
+ $(MKDIR) -p $(RUN_DIR)
+ $(CD) $(FH_BASEDIR)/test && JT_JAVA=$(BOOT_JDK) $(JTREGEXE) \
+ -jdk:$(BOOT_JDK) \
+ $(JTREG_TEST_OPTS) \
+ -timeout:0.1 -va -retain:all \
+ -noreport \
+ -agentvm \
+ -thd:$(FH_JAR) \
+ -th:jdk.test.failurehandler.jtreg.GatherProcessInfoTimeoutHandler \
+ -od:$(FH_JAR) \
+ -o:jdk.test.failurehandler.jtreg.GatherDiagnosticInfoObserver \
+ -w:$(RUN_DIR)/JTwork -r:$(RUN_DIR)/JTreport \
+ $(if $(JTREG_TESTS), $(JTREG_TESTS), .) \
+ || true
+
+################################################################################
+
+build: $(TARGETS)
+images: $(IMAGES_TARGETS)
+
+.PHONY: all images test
diff --git a/make/test/BuildTestLib.gmk b/make/test/BuildTestLib.gmk
new file mode 100644
index 0000000..7593ac7
--- /dev/null
+++ b/make/test/BuildTestLib.gmk
@@ -0,0 +1,62 @@
+#
+# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include JavaCompilation.gmk
+include SetupJavaCompilers.gmk
+
+TARGETS :=
+
+TEST_LIB_SOURCE_DIR := $(TOPDIR)/test/lib
+TEST_LIB_SUPPORT := $(SUPPORT_OUTPUTDIR)/test/lib
+
+$(eval $(call SetupJavaCompilation, BUILD_WB_JAR, \
+ SETUP := GENERATE_USINGJDKBYTECODE, \
+ SRC := $(TEST_LIB_SOURCE_DIR)/sun, \
+ BIN := $(TEST_LIB_SUPPORT)/wb_classes, \
+ JAR := $(TEST_LIB_SUPPORT)/wb.jar, \
+ ADD_JAVAC_FLAGS := $(JAVAC_WARNINGS), \
+))
+
+TARGETS += $(BUILD_WB_JAR)
+
+# test-lib.jar will contain only hprof classes until JDK-8081381 is resolved
+$(eval $(call SetupJavaCompilation, BUILD_TEST_LIB_JAR, \
+ SETUP := GENERATE_USINGJDKBYTECODE, \
+ SRC := $(TEST_LIB_SOURCE_DIR)/jdk/test/lib/hprof, \
+ BIN := $(TEST_LIB_SUPPORT)/test-lib_classes, \
+ JAR := $(TEST_LIB_SUPPORT)/test-lib.jar, \
+))
+
+TARGETS += $(BUILD_TEST_LIB_JAR)
+
+##########################################################################################
+
+all: $(TARGETS)
+
+.PHONY: default all
diff --git a/test/Makefile b/test/Makefile
new file mode 100644
index 0000000..ecc78ee
--- /dev/null
+++ b/test/Makefile
@@ -0,0 +1,122 @@
+#
+# Copyright (c) 2010, 2015, 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.
+#
+
+#
+# Makefile to run tests from multiple sibling directories
+#
+
+# Root of the forest that was built
+TOPDIR=..
+
+# This makefile depends on the availability of sibling directories.
+LANGTOOLS_DIR=$(TOPDIR)/langtools
+JDK_DIR=$(TOPDIR)/jdk
+JAXP_DIR=$(TOPDIR)/jaxp
+HOTSPOT_DIR=$(TOPDIR)/hotspot
+
+# Macro to run a test target in a subdir
+define SUBDIR_TEST # subdirectory target
+if [ -d $1 ] ; then \
+ if [ -r $1/test/Makefile ] ; then \
+ $(MAKE) --no-print-directory -k -C $1/test $2 ; \
+ else \
+ echo "ERROR: File does not exist: $1/test/Makefile"; \
+ exit 1; \
+ fi; \
+else \
+ echo "WARNING: No testing done, directory does not exist: $1"; \
+fi
+endef
+
+# Default test target (core)
+default: jdk_core langtools_jtreg jaxp_all
+
+# All testing
+all: jdk_all langtools_all jaxp_all
+
+# Bring in closed test targets if present
+-include $(TOPDIR)/closed/test/Makefile
+
+ifeq ($(TEST_JOBS), 0)
+ ifeq ($(shell $(EXPR) $(JOBS) \> 50), 1)
+ # JTReg cannot handle more than 50 in concurrency
+ JDK_TEST_JOBS=50
+ else
+ JDK_TEST_JOBS=$(JOBS)
+ endif
+else
+ JDK_TEST_JOBS=$(TEST_JOBS)
+endif
+# Test targets
+langtools_% :
+ @$(NO_STOPPING)$(call SUBDIR_TEST, $(LANGTOOLS_DIR), CONCURRENCY=$(JDK_TEST_JOBS) JT_JAVA=$(PRODUCT_HOME) JTREG_HOME=$(JT_HOME) TEST="$(subst langtools_,,$@)" $(subst langtools_,,$@))
+
+jdk_% core_%s svc_%:
+ @$(NO_STOPPING)$(call SUBDIR_TEST, $(JDK_DIR), CONCURRENCY=$(JDK_TEST_JOBS) TEST="$@" $@)
+
+jaxp_%:
+ @$(NO_STOPPING)$(call SUBDIR_TEST, $(JAXP_DIR), CONCURRENCY=$(JDK_TEST_JOBS) TEST="$@" $@)
+
+SUB_MAKE_ARGS :=
+ifneq ($(TEST_JOBS), 0)
+ ifneq ($(TEST_JOBS), )
+ SUB_MAKE_ARGS += CONCURRENCY=$(TEST_JOBS)
+ endif
+endif
+hotspot_%:
+ @$(NO_STOPPING)$(call SUBDIR_TEST, $(HOTSPOT_DIR), $(SUB_MAKE_ARGS) TEST="$@" $@)
+
+#
+# jtreg_tests
+#
+# Invocation:
+#
+# make jtreg_tests TESTDIRS=<test-dirs> TEST_SELECTION=<path to test or jtreg group> TEST_OUTPUT_DIR=<path>
+#
+# where <test-dirs> is something like '../<component>/test/runtime',
+# <component> in turn being one of the top level directories (for
+# example 'hotspot').
+#
+# The below will strip the path prefix and delegate to the
+# corresponding ../<component>/test/Makefile.
+
+ifneq ($(TESTDIRS),)
+# Extract the component from ../<component>/...
+COMPONENT=$(word 2,$(subst /, ,$(TESTDIRS)))
+
+# Strip off the ../<component>/test prefix and pass the rest as TESTDIRS
+# to the delegate Makefile
+TESTDIRS_TESTS=$(patsubst ../$(COMPONENT)/test/%,%,$(TESTDIRS))
+endif
+
+jtreg_tests:
+ @$(NO_STOPPING)$(call SUBDIR_TEST, $(TOPDIR)/$(COMPONENT), TESTDIRS=$(TESTDIRS_TESTS) $@)
+
+################################################################
+
+# Phony targets (e.g. these are not filenames)
+.PHONY: all clean
+
+################################################################
diff --git a/test/TestCommon.gmk b/test/TestCommon.gmk
new file mode 100644
index 0000000..4529d73
--- /dev/null
+++ b/test/TestCommon.gmk
@@ -0,0 +1,422 @@
+#
+# Copyright (c) 1995, 2016, 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.
+#
+
+#
+# Common logic to run various tests for a component, to be included by the
+# component specific test makefiles.
+#
+
+# Default values for some properties that can be overridden by components.
+USE_JTREG_VERSION ?= 4.2
+JTREG_VM_TYPE ?= -agentvm
+USE_JTREG_ASSERT ?= true
+LIMIT_JTREG_VM_MEMORY ?= true
+
+.DEFAULT : all
+
+# Empty these to get rid of some default rules
+.SUFFIXES:
+.SUFFIXES: .java
+CO=
+GET=
+
+# Utilities used
+AWK = awk
+CAT = cat
+CD = cd
+CHMOD = chmod
+CP = cp
+CUT = cut
+DIRNAME = dirname
+ECHO = echo
+EGREP = egrep
+EXPAND = expand
+FIND = find
+MKDIR = mkdir
+PWD = pwd
+RM = rm -f
+SED = sed
+SORT = sort
+TEE = tee
+UNAME = uname
+UNIQ = uniq
+WC = wc
+ZIPEXE = zip
+
+# Get OS name from uname (Cygwin inexplicably adds _NT-5.1)
+UNAME_S := $(shell $(UNAME) -s | $(CUT) -f1 -d_)
+
+# Commands to run on paths to make mixed paths for java on windows
+ifeq ($(findstring CYGWIN,$(UNAME_S)), CYGWIN)
+ # Location of developer shared files
+ SLASH_JAVA = J:
+ GETMIXEDPATH = cygpath -m
+ PLATFORM = windows
+else
+ # Location of developer shared files
+ SLASH_JAVA = /java
+ GETMIXEDPATH = $(ECHO)
+ PLATFORM = unix # we only care about windows or bsd.
+ ifeq ($(UNAME_S), Darwin)
+ PLATFORM = bsd
+ endif
+ ifeq ($(findstring BSD,$(UNAME_S)), BSD)
+ PLATFORM = bsd
+ endif
+endif
+
+ifdef ALT_SLASH_JAVA
+ SLASH_JAVA = $(ALT_SLASH_JAVA)
+endif
+
+# Root of this test area (important to use full paths in some places)
+TEST_ROOT := $(shell $(PWD))
+
+# Root of all test results
+ifdef TEST_OUTPUT_DIR
+ $(shell $(MKDIR) -p $(TEST_OUTPUT_DIR)/jtreg)
+ ABS_TEST_OUTPUT_DIR := \
+ $(shell $(CD) $(TEST_OUTPUT_DIR)/jtreg && $(PWD))
+else
+ ifdef ALT_OUTPUTDIR
+ ABS_OUTPUTDIR = $(shell $(CD) $(ALT_OUTPUTDIR) && $(PWD))
+ else
+ ABS_OUTPUTDIR = $(shell $(CD) $(TEST_ROOT)/.. && $(PWD))
+ endif
+
+ ABS_PLATFORM_BUILD_ROOT = $(ABS_OUTPUTDIR)
+ ABS_TEST_OUTPUT_DIR := $(ABS_PLATFORM_BUILD_ROOT)/testoutput/$(UNIQUE_DIR)
+endif
+
+# Expect JPRT to set PRODUCT_HOME (the product or jdk in this case to test)
+ifndef PRODUCT_HOME
+ # Try to use images/jdk if it exists
+ ABS_JDK_IMAGE = $(ABS_PLATFORM_BUILD_ROOT)/images/jdk
+ PRODUCT_HOME := \
+ $(shell \
+ if [ -d $(ABS_JDK_IMAGE) ] ; then \
+ $(ECHO) "$(ABS_JDK_IMAGE)"; \
+ else \
+ $(ECHO) "$(ABS_PLATFORM_BUILD_ROOT)"; \
+ fi)
+ PRODUCT_HOME := $(PRODUCT_HOME)
+endif
+
+# Expect JPRT to set JAVA_ARGS (e.g. -server etc.)
+ifdef JAVA_ARGS
+ JAVA_OPTIONS := $(JAVA_ARGS)
+else
+ JAVA_OPTIONS :=
+endif
+
+# Expect JPRT to set JPRT_PRODUCT_ARGS (e.g. -server etc.)
+# Should be passed into 'java' only.
+# Could include: -d64 -server -client OR any java option
+ifdef JPRT_PRODUCT_ARGS
+ JAVA_ARGS = $(JPRT_PRODUCT_ARGS)
+endif
+
+# Expect JPRT to set JPRT_PRODUCT_VM_ARGS (e.g. -Xcomp etc.)
+# Should be passed into anything running the vm (java, javac, javadoc, ...).
+ifdef JPRT_PRODUCT_VM_ARGS
+ JAVA_VM_ARGS = $(JPRT_PRODUCT_VM_ARGS)
+endif
+
+ifneq ($(NATIVE_TEST_PATH), )
+ # jtreg -nativepath <dir>
+ #
+ # Local make tests will be TEST_IMAGE_DIR and JPRT with jprt.use.reg.test.bundle=true
+ # should be JPRT_TESTNATIVE_PATH
+ ifdef TEST_IMAGE_DIR
+ TESTNATIVE_DIR = $(TEST_IMAGE_DIR)
+ else ifdef JPRT_TESTNATIVE_PATH
+ TESTNATIVE_DIR = $(JPRT_TESTNATIVE_PATH)
+ endif
+ ifdef TESTNATIVE_DIR
+ JTREG_NATIVE_PATH = -nativepath:$(shell $(GETMIXEDPATH) "$(TESTNATIVE_DIR)/$(NATIVE_TEST_PATH)")
+ endif
+endif
+
+ifeq ($(USE_FAILURE_HANDLER), true)
+ # jtreg failure handler config
+ ifeq ($(FAILURE_HANDLER_DIR), )
+ ifneq ($(TESTNATIVE_DIR), )
+ FAILURE_HANDLER_DIR := $(TESTNATIVE_DIR)/failure_handler
+ endif
+ endif
+ ifneq ($(FAILURE_HANDLER_DIR), )
+ FAILURE_HANDLER_DIR_MIXED := $(shell $(GETMIXEDPATH) "$(FAILURE_HANDLER_DIR)")
+ JTREG_FAILURE_HANDLER_OPTIONS := \
+ -timeoutHandlerDir:$(FAILURE_HANDLER_DIR_MIXED)/jtregFailureHandler.jar \
+ -observerDir:$(FAILURE_HANDLER_DIR_MIXED)/jtregFailureHandler.jar \
+ -timeoutHandler:jdk.test.failurehandler.jtreg.GatherProcessInfoTimeoutHandler \
+ -observer:jdk.test.failurehandler.jtreg.GatherDiagnosticInfoObserver \
+ -timeoutHandlerTimeout:0
+ ifeq ($(PLATFORM), windows)
+ JTREG_FAILURE_HANDLER_OPTIONS += -J-Djava.library.path="$(FAILURE_HANDLER_DIR_MIXED)"
+ endif
+ endif
+endif
+
+# Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results)
+ifdef JPRT_ARCHIVE_BUNDLE
+ ARCHIVE_BUNDLE = $(JPRT_ARCHIVE_BUNDLE)
+else
+ ARCHIVE_BUNDLE = $(ABS_TEST_OUTPUT_DIR)/ARCHIVE_BUNDLE.zip
+endif
+
+# How to create the test bundle (pass or fail, we want to create this)
+# Follow command with ";$(BUNDLE_UP_AND_EXIT)", so it always gets executed.
+ZIP_UP_RESULTS = ( $(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)` \
+ && $(CD) $(ABS_TEST_OUTPUT_DIR) \
+ && $(CHMOD) -R a+r . \
+ && $(ZIPEXE) -q -r $(ARCHIVE_BUNDLE) . )
+
+# important results files
+SUMMARY_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport/text/summary.txt")
+STATS_TXT_NAME = Stats.txt
+STATS_TXT = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/$(STATS_TXT_NAME)")
+RUNLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/runlist.txt")
+PASSLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/passlist.txt")
+FAILLIST = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/faillist.txt")
+EXITCODE = $(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/exitcode.txt")
+
+TESTEXIT = \
+ if [ ! -s $(EXITCODE) ] ; then \
+ $(ECHO) "ERROR: EXITCODE file not filled in."; \
+ $(ECHO) "1" > $(EXITCODE); \
+ fi ; \
+ testExitCode=`$(CAT) $(EXITCODE)`; \
+ $(ECHO) "EXIT CODE: $${testExitCode}"; \
+ exit $${testExitCode}
+
+ifeq ($(TREAT_EXIT_CODE_1_AS_0), true)
+ ADJUST_EXIT_CODE := \
+ if [ $${jtregExitCode} = 1 ] ; then \
+ jtregExitCode=0; \
+ fi
+else
+ # colon is the shell no-op
+ ADJUST_EXIT_CODE := :
+endif
+
+BUNDLE_UP_AND_EXIT = \
+( \
+ jtregExitCode=$$? && \
+ _summary="$(SUMMARY_TXT)"; \
+ $(ADJUST_EXIT_CODE) ; \
+ $(RM) -f $(STATS_TXT) $(RUNLIST) $(PASSLIST) $(FAILLIST) $(EXITCODE); \
+ $(ECHO) "$${jtregExitCode}" > $(EXITCODE); \
+ if [ -r "$${_summary}" ] ; then \
+ $(ECHO) "Summary: $(UNIQUE_DIR)" > $(STATS_TXT); \
+ $(EXPAND) $${_summary} | $(EGREP) -v ' Not run\.' > $(RUNLIST); \
+ $(EGREP) ' Passed\.' $(RUNLIST) \
+ | $(EGREP) -v ' Error\.' \
+ | $(EGREP) -v ' Failed\.' > $(PASSLIST); \
+ ( $(EGREP) ' Failed\.' $(RUNLIST); \
+ $(EGREP) ' Error\.' $(RUNLIST); \
+ $(EGREP) -v ' Passed\.' $(RUNLIST) ) \
+ | $(SORT) | $(UNIQ) > $(FAILLIST); \
+ if [ $${jtregExitCode} != 0 -o -s $(FAILLIST) ] ; then \
+ $(EXPAND) $(FAILLIST) \
+ | $(CUT) -d' ' -f1 \
+ | $(SED) -e 's@^@FAILED: @' >> $(STATS_TXT); \
+ if [ $${jtregExitCode} = 0 ] ; then \
+ jtregExitCode=1; \
+ fi; \
+ fi; \
+ runc="`$(CAT) $(RUNLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
+ passc="`$(CAT) $(PASSLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
+ failc="`$(CAT) $(FAILLIST) | $(WC) -l | $(AWK) '{print $$1;}'`"; \
+ exclc="FIXME CODETOOLS-7900176"; \
+ $(ECHO) "TEST STATS: name=$(UNIQUE_DIR) run=$${runc} pass=$${passc} fail=$${failc}" \
+ >> $(STATS_TXT); \
+ else \
+ $(ECHO) "Missing file: $${_summary}" >> $(STATS_TXT); \
+ fi; \
+ if [ -f $(STATS_TXT) ] ; then \
+ $(CAT) $(STATS_TXT); \
+ fi; \
+ $(ZIP_UP_RESULTS) ; \
+ $(TESTEXIT) \
+)
+
+################################################################
+
+# Prep for output
+# Change execute permissions on shared library files.
+# Files in repositories should never have execute permissions, but
+# there are some tests that have pre-built shared libraries, and these
+# windows dll files must have execute permission. Adding execute
+# permission may happen automatically on windows when using certain
+# versions of mercurial but it cannot be guaranteed. And blindly
+# adding execute permission might be seen as a mercurial 'change', so
+# we avoid adding execute permission to repository files. But testing
+# from a plain source tree needs the chmod a+rx. Applying the chmod to
+# all shared libraries not just dll files. And with CYGWIN and sshd
+# service, you may need CYGWIN=ntsec for this to work.
+prep:
+ @$(MKDIR) -p $(ABS_TEST_OUTPUT_DIR)
+ @$(MKDIR) -p `$(DIRNAME) $(ARCHIVE_BUNDLE)`
+ @if [ ! -d $(TEST_ROOT)/../.hg ] ; then \
+ $(FIND) $(TEST_ROOT) \( -name \*.dll -o -name \*.DLL -o -name \*.so \) \
+ -exec $(CHMOD) a+rx {} \; ; \
+ fi
+
+ifeq ($(CLEAN_BEFORE_PREP), true)
+prep: clean
+
+endif
+
+# Cleanup
+clean:
+ @$(RM) -r $(ABS_TEST_OUTPUT_DIR)
+ @$(RM) $(ARCHIVE_BUNDLE)
+
+################################################################
+
+# jtreg tests
+
+# Expect JT_HOME to be set for jtreg tests. (home for jtreg)
+ifndef JT_HOME
+ JT_HOME = $(SLASH_JAVA)/re/jtreg/$(USE_JTREG_VERSION)/promoted/latest/binaries/jtreg
+ ifdef JPRT_JTREG_HOME
+ JT_HOME = $(JPRT_JTREG_HOME)
+ endif
+endif
+
+# Problematic tests to be excluded
+PROBLEM_LISTS=$(call MixedDirs,$(wildcard ProblemList.txt closed/ProblemList.txt))
+
+# Create exclude list for this platform and arch
+ifdef NO_EXCLUDES
+ JTREG_EXCLUSIONS =
+else
+ JTREG_EXCLUSIONS = $(PROBLEM_LISTS:%=-exclude:%)
+endif
+
+# convert list of directories to dos paths
+define MixedDirs
+$(foreach i,$1,$(shell $(GETMIXEDPATH) "${i}"))
+endef
+
+# ------------------------------------------------------------------
+
+# When called from JPRT the TESTDIRS variable is set to the jtreg tests to run
+ifdef TESTDIRS
+ TEST_SELECTION = $(TESTDIRS)
+endif
+
+ifdef CONCURRENCY
+ JTREG_BASIC_OPTIONS += -concurrency:$(CONCURRENCY)
+endif
+ifdef EXTRA_JTREG_OPTIONS
+ JTREG_BASIC_OPTIONS += $(EXTRA_JTREG_OPTIONS)
+endif
+
+# Default JTREG to run
+JTREG = $(JT_HOME)/bin/jtreg
+# run in agentvm/othervm mode
+JTREG_BASIC_OPTIONS += $(JTREG_VM_TYPE)
+# Only run automatic tests
+JTREG_BASIC_OPTIONS += -a
+# Always turn on assertions
+ifeq ($(USE_JTREG_ASSERT), true)
+ JTREG_ASSERT_OPTION = -ea -esa
+endif
+JTREG_BASIC_OPTIONS += $(JTREG_ASSERT_OPTION)
+# jtreg verbosity setting
+# Default is to report details on all failed or error tests, times too
+JTREG_VERBOSE ?= fail,error,time
+JTREG_BASIC_OPTIONS += $(if $(JTREG_VERBOSE),-v:$(JTREG_VERBOSE))
+# Retain all files for failing tests
+JTREG_BASIC_OPTIONS += -retain:fail,error
+# Ignore tests are not run and completely silent about it
+JTREG_IGNORE_OPTION = -ignore:quiet
+JTREG_BASIC_OPTIONS += $(JTREG_IGNORE_OPTION)
+# Multiply by 4 the timeout factor
+JTREG_TIMEOUT_OPTION = -timeoutFactor:4
+JTREG_BASIC_OPTIONS += $(JTREG_TIMEOUT_OPTION)
+ifeq ($(LIMIT_JTREG_VM_MEMORY), true)
+ # Set the max memory for jtreg control vm
+ JTREG_MEMORY_OPTION = -J-Xmx512m
+ JTREG_BASIC_OPTIONS += $(JTREG_MEMORY_OPTION)
+ # Set the max memory for jtreg target test vms
+ JTREG_TESTVM_MEMORY_OPTION = -vmoption:-Xmx512m
+ JTREG_TEST_OPTIONS += $(JTREG_TESTVM_MEMORY_OPTION)
+endif
+# Give tests access to JT_JAVA, see JDK-8141609
+JTREG_BASIC_OPTIONS += -e:JDK8_HOME=${JT_JAVA}
+# Set other vm and test options
+JTREG_TEST_OPTIONS += $(JAVA_ARGS:%=-javaoptions:%) $(JAVA_OPTIONS:%=-vmoption:%) $(JAVA_VM_ARGS:%=-vmoption:%)
+
+ifeq ($(IGNORE_MARKED_TESTS), true)
+ # Option to tell jtreg to not run tests marked with "ignore"
+ ifeq ($(PLATFORM), windows)
+ JTREG_KEY_OPTION = -k:!ignore
+ else
+ JTREG_KEY_OPTION = -k:\!ignore
+ endif
+ JTREG_BASIC_OPTIONS += $(JTREG_KEY_OPTION)
+endif
+
+# Make sure jtreg exists
+ifeq ($(USE_WINDOWS_EXISTENCE_CHECK), true)
+ jtreg_exists:
+ test -d $(shell $(GETMIXEDPATH) "$(JT_HOME)")
+ test -f $(shell $(GETMIXEDPATH) "$(JTREG)")
+
+else
+ jtreg_exists: $(JT_HOME)
+endif
+PHONY_LIST += jtreg_exists
+
+# Run jtreg
+jtreg_tests: prep jtreg_exists $(PRODUCT_HOME)
+ ( \
+ ( JT_HOME=$(shell $(GETMIXEDPATH) "$(JT_HOME)"); \
+ export JT_HOME; \
+ $(shell $(GETMIXEDPATH) "$(JTREG)") \
+ $(JTREG_BASIC_OPTIONS) \
+ -r:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTreport") \
+ -w:$(shell $(GETMIXEDPATH) "$(ABS_TEST_OUTPUT_DIR)/JTwork") \
+ -jdk:$(shell $(GETMIXEDPATH) "$(PRODUCT_HOME)") \
+ $(JTREG_NATIVE_PATH) \
+ $(JTREG_FAILURE_HANDLER_OPTIONS) \
+ $(JTREG_EXCLUSIONS) \
+ $(JTREG_TEST_OPTIONS) \
+ $(TEST_SELECTION) \
+ ) ; \
+ $(BUNDLE_UP_AND_EXIT) \
+ ) 2>&1 | $(TEE) $(ABS_TEST_OUTPUT_DIR)/output.txt ; $(TESTEXIT)
+
+PHONY_LIST += jtreg_tests
+
+################################################################
+
+# Phony targets (e.g. these are not filenames)
+.PHONY: all clean prep $(PHONY_LIST)
+
+################################################################
diff --git a/test/failure_handler/Makefile b/test/failure_handler/Makefile
new file mode 100644
index 0000000..d8c7196
--- /dev/null
+++ b/test/failure_handler/Makefile
@@ -0,0 +1,119 @@
+#
+# Copyright (c) 2015, 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.
+#
+
+#
+# This is a temporary standalone makefile
+#
+
+BUILD_DIR := $(shell pwd)/build
+CLASSES_DIR := ${BUILD_DIR}/classes
+IMAGE_DIR := ${BUILD_DIR}/image
+RUN_DIR := $(shell pwd)/run
+CLASSPATH := ${JTREG_HOME}/lib/jtreg.jar:${JAVA_HOME}/lib/tools.jar
+SRC_DIR := src/share/classes/
+SOURCES := ${SRC_DIR}/jdk/test/failurehandler/*.java \
+ ${SRC_DIR}/jdk/test/failurehandler/action/*.java \
+ ${SRC_DIR}/jdk/test/failurehandler/jtreg/*.java \
+ ${SRC_DIR}/jdk/test/failurehandler/value/*.java
+
+CONF_DIR = src/share/conf
+
+JAVA_RELEASE = 7
+
+TARGET_JAR = ${IMAGE_DIR}/lib/jtregFailureHandler.jar
+
+OS_NAME := $(shell uname -o 2>&1)
+
+ifeq ("${OS_NAME}", "Cygwin")
+BUILD_DIR := $(shell cygpath -m "${BUILD_DIR}")
+CLASSES_DIR := $(shell cygpath -m "${CLASSES_DIR}")
+IMAGE_DIR := $(shell cygpath -m "${IMAGE_DIR}")
+RUN_DIR := $(shell cygpath -m "${RUN_DIR}")
+SRC_DIR := $(shell cygpath -m "${SRC_DIR}")
+JAVA_HOME := $(shell cygpath -m "${JAVA_HOME}")
+JTREG_HOME := $(shell cygpath -m "${JTREG_HOME}")
+CLASSPATH := $(shell cygpath -pm "${CLASSPATH}")
+CC := "cl.exe"
+endif
+
+all: clean test
+
+native: require_env
+ifeq ("${OS_NAME}", "Cygwin")
+ "${CC}" src/windows/native/jdk/test/failurehandler/jtreg/*.c \
+ -I"$(shell cygpath -w "${JAVA_HOME}/include")" \
+ -I"$(shell cygpath -w "${JAVA_HOME}/include/win32")" \
+ /link /DLL /OUT:timeoutHandler.dll
+endif
+
+check_defined = $(foreach 1,$1,$(__check_defined))
+__check_defined = $(if $(value $1),, $(error $1 is not set))
+
+classes: require_env
+ mkdir -p ${IMAGE_DIR}/bin ${IMAGE_DIR}/lib ${CLASSES_DIR}
+ "${JAVA_HOME}"/bin/javac -target ${JAVA_RELEASE} -source ${JAVA_RELEASE} \
+ -sourcepath "$(shell pwd)" \
+ -cp "${CLASSPATH}" \
+ -d ${CLASSES_DIR} \
+ ${SOURCES}
+ "${JAVA_HOME}"/bin/jar cf "${TARGET_JAR}" -C "${CLASSES_DIR}" .
+ "${JAVA_HOME}"/bin/jar uf "${TARGET_JAR}" -C "${CONF_DIR}" .
+
+#
+# Use JTREG_TEST_OPTS for test VM options
+# Use JTREG_TESTS for jtreg tests parameter
+#
+test: require_env build
+ rm -rf "${RUN_DIR}"
+ mkdir -p "${RUN_DIR}"
+ "${JTREG_HOME}"/bin/jtreg \
+ -jdk:"${JAVA_HOME}" \
+ ${JTREG_TEST_OPTS} \
+ -timeout:0.1 -va -retain:all \
+ -noreport \
+ -agentvm \
+ -thd:"${TARGET_JAR}" \
+ -th:jdk.test.failurehandler.jtreg.GatherProcessInfoTimeoutHandler \
+ -thtimeout:0 \
+ -od:"${TARGET_JAR}" \
+ -o:jdk.test.failurehandler.jtreg.GatherDiagnosticInfoObserver \
+ -w:"${RUN_DIR}/JTwork" \
+ -r:"${RUN_DIR}/JTreport" \
+ $(if ${JTREG_TESTS}, ${JTREG_TESTS}, test) \
+ && false || true
+
+debug: JTREG_TEST_OPTS += "-J-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005'"
+debug: test
+
+require_env:
+ $(call check_defined, JAVA_HOME)
+ $(call check_defined, JTREG_HOME)
+
+clean:
+ rm -rf "${BUILD_DIR}" "${RUN_DIR}"
+
+build: classes native
+
+.PHONY: all build classes native test require_env clean
+.DEFAULT: all
+
diff --git a/test/failure_handler/README b/test/failure_handler/README
new file mode 100644
index 0000000..8929cc2
--- /dev/null
+++ b/test/failure_handler/README
@@ -0,0 +1,105 @@
+Copyright (c) 2015, 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.
+
+
+
+DESCRIPTION
+
+The purpose of this library is gathering diagnostic information on test
+failures and timeouts. The library runs platform specific tools, which are
+configured in the way described below. The collected data will be available
+in HTML format next to JTR files.
+
+The library uses JTHarness Observer and jtreg TimeoutHandler extensions points.
+
+DEPENDENCES
+
+The library requires jtreg 4b13+ and JDK 7+.
+
+BUILDING
+
+The library is built using the top level build-test-failure-handler target and
+is automatically included in the test image and picked up by hotspot and jdk
+test makefiles.
+
+CONFIGURATION
+
+Properties files are used to configure the library. They define which actions
+to be performed in case of individual test failure or timeout. Each platform
+family uses its own property file (named '<platform>.properties'). For platform
+independent actions, 'common.properties' is used.
+
+Actions to be performed on each failure are listed in 'environment' property.
+Extra actions for timeouts are listed in 'onTimeout'.
+
+Each action is defined via the following parameters:
+ - 'javaOnly' -- run the action only for java applications, false by default
+ - 'app' -- an application to run, mandatory parameter
+ - 'args' -- application command line arguments, none by default
+ - 'params' -- a structure which defines how an application should be run,
+ described below
+
+Actions listed in 'onTimeout' are "patterned" actions. Besides the parameters
+listed above, they also have 'pattern' parameter -- a string which will be
+replaced by PID in 'args' parameter before action execution.
+
+'params' structure has the following parameters:
+ - repeat -- how many times an action will be run, 1 by default
+ - pause -- delay in ms between iterations, 500 by default
+ - timeout -- time limitation for iteration in ms, 20 000 by default
+ - stopOnError -- if true, an action will be interrupted after the first error,
+ false by default
+
+From '<platform>.properties', the library reads the following parameters
+ - 'config.execSuffix' -- a suffix for all binary application file names
+ - 'config.getChildren' -- a "patterned" action used to get the list of all
+ children
+
+For simplicity we use parameter values inheritance. This means that we are
+looking for the most specified parameter value. If we do not find it, we are
+trying to find less specific value by reducing prefix.
+For example, if properties contains 'p1=A', 'a.p1=B', 'a.b.p1=C', then
+parameter 'p1' will be:
+ - 'C' for 'a.b.c'
+ - 'B' for 'a.c'
+ - 'A' for 'b.c'
+
+RUNNING
+
+To enable the library in jtreg, the following options should be set:
+ - '-timeoutHandlerDir' points to the built jar ('jtregFailureHandler.jar')
+ - '-observerDir' points to the built jar
+ - '-timeoutHandler' equals to jdk.test.failurehandler.jtreg.GatherProcessInfoTimeoutHandler
+ - '-observer' equals to jdk.test.failurehandler.jtreg.GatherDiagnosticInfoObserver
+
+In case of environment issues during an action execution, such as missing
+application, hung application, lack of disk space, etc, the corresponding
+warning appears and the library proceeds to next action.
+
+EXAMPLES
+
+$ ${JTREG_HOME}/bin/jtreg -jdk:${JAVA_HOME} \
+ -timeoutHandlerDir:./image/lib/jtregFailureHandler.jar \
+ -observerDir:./image/lib/jtregFailureHandler.jar \
+ -timeoutHandler:jdk.test.failurehandler.jtreg.GatherProcessInfoTimeoutHandler\
+ -observer:jdk.test.failurehandler.jtreg.GatherDiagnosticInfoObserver \
+ ${WS}/hotspot/test/
+
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/ElapsedTimePrinter.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/ElapsedTimePrinter.java
new file mode 100644
index 0000000..f1ab374
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/ElapsedTimePrinter.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler;
+
+import java.io.PrintWriter;
+import java.util.concurrent.TimeUnit;
+
+public class ElapsedTimePrinter implements AutoCloseable {
+ private final String name;
+ private final PrintWriter out;
+ private final Stopwatch stopwatch;
+
+ public ElapsedTimePrinter(Stopwatch stopwatch, String name,
+ PrintWriter out) {
+ this.stopwatch = stopwatch;
+ this.name = name;
+ this.out = out;
+ stopwatch.start();
+ }
+
+ @Override
+ public void close() {
+ stopwatch.stop();
+ out.printf("%s took %d s%n", name,
+ TimeUnit.NANOSECONDS.toSeconds(stopwatch.getElapsedTimeNs()));
+ }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/EnvironmentInfoGatherer.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/EnvironmentInfoGatherer.java
new file mode 100644
index 0000000..e2b9510
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/EnvironmentInfoGatherer.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler;
+
+public interface EnvironmentInfoGatherer {
+ void gatherEnvironmentInfo(HtmlSection section);
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/GathererFactory.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/GathererFactory.java
new file mode 100644
index 0000000..4799bb8
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/GathererFactory.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler;
+
+import jdk.test.failurehandler.action.ActionHelper;
+import jdk.test.failurehandler.value.InvalidValueException;
+
+import java.io.PrintWriter;
+import java.nio.file.Path;
+import java.util.Properties;
+
+public final class GathererFactory {
+ private final Path workdir;
+ private final Path[] jdks;
+ private final PrintWriter log;
+ private final String osName;
+
+ public GathererFactory(String osName, Path workdir, PrintWriter log, Path... jdks) {
+ this.osName = osName;
+ this.workdir = workdir;
+ this.log = log;
+ this.jdks = jdks;
+ }
+
+ public EnvironmentInfoGatherer getEnvironmentInfoGatherer() {
+ return create();
+ }
+
+ public ProcessInfoGatherer getProcessInfoGatherer() {
+ return create();
+ }
+
+ private ToolKit create() {
+ Properties osProperty = Utils.getProperties(osName);
+ try {
+ ActionHelper helper = new ActionHelper(workdir, "config", osProperty, jdks);
+ return new ToolKit(helper, log, osName, "common");
+ } catch (InvalidValueException e) {
+ throw new IllegalStateException("can't create tool kit", e);
+ }
+ }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/HtmlPage.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/HtmlPage.java
new file mode 100644
index 0000000..d8fd13f
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/HtmlPage.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler;
+
+import java.io.PrintWriter;
+import java.util.Objects;
+
+public class HtmlPage implements AutoCloseable {
+ private final PrintWriter writer;
+ private final HtmlSection rootSection;
+
+ public HtmlPage(PrintWriter writer) {
+ Objects.requireNonNull(writer, "writer cannot be null");
+ this.writer = writer;
+ rootSection = new HtmlSection(writer);
+ }
+
+ @Override
+ public void close() {
+ writer.close();
+ }
+
+ public HtmlSection getRootSection() {
+ return rootSection;
+ }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/HtmlSection.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/HtmlSection.java
new file mode 100644
index 0000000..d20b133
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/HtmlSection.java
@@ -0,0 +1,237 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler;
+
+import java.io.FilterWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+public class HtmlSection {
+ protected final HtmlSection rootSection;
+ protected final String id;
+ protected final String name;
+
+ public PrintWriter getWriter() {
+ return textWriter;
+ }
+
+ protected final PrintWriter pw;
+ protected final PrintWriter textWriter;
+ protected boolean closed;
+
+ private HtmlSection child;
+
+
+ public HtmlSection(PrintWriter pw) {
+ this(pw, "", null, null);
+ }
+
+ private HtmlSection(PrintWriter pw, String id, String name, HtmlSection rootSection) {
+ this.pw = pw;
+ textWriter = new PrintWriter(new HtmlFilterWriter(pw), true);
+ this.id = id;
+ this.name = name;
+ child = null;
+ // main
+ if (rootSection == null) {
+ this.rootSection = this;
+ this.pw.println("<html>");
+ this.pw.println("<style>\n"
+ + "div { display:none;}\n"
+ + "</style>\n"
+ + "\n"
+ + "<script>\n"
+ + "function show(e) {\n"
+ + " while (e != null) {\n"
+ + " if (e.tagName == 'DIV') {\n"
+ + " e.style.display = 'block';\n"
+ + " }\n"
+ + " e = e.parentNode;\n"
+ + " }\n"
+ + "}\n"
+ + "\n"
+ + "function toggle(id) {\n"
+ + " e = document.getElementById(id);\n"
+ + " d = e.style.display;\n"
+ + " if (d == 'block') {\n"
+ + " e.style.display = 'none';\n"
+ + " } else {\n"
+ + " show(e);\n"
+ + " }\n"
+ + "}\n"
+ + "\n"
+ + "function main() {\n"
+ + " index = location.href.indexOf(\"#\");"
+ + " if (index != -1) {\n"
+ + " show(document.getElementById(location.href.substring(index + 1)));\n"
+ + " }\n"
+ + "}\n"
+ + "\n"
+ + "</script>\n"
+ + "</head>");
+
+ this.pw.println("<body onload='main()'>");
+ } else {
+ this.rootSection = rootSection;
+ this.pw.print("<ul>");
+ }
+ }
+
+ public HtmlSection createChildren(String section) {
+ if (child != null) {
+ if (child.name.equals(section)) {
+ return child;
+ }
+ child.close();
+ }
+ child = new SubSection(this, section, rootSection);
+ return child;
+ }
+
+ protected final void removeChild(HtmlSection child) {
+ if (this.child == child) {
+ this.child = null;
+ }
+ }
+
+ public void close() {
+ closeChild();
+ if (closed) {
+ return;
+ }
+ closed = true;
+
+ if (rootSection == this) {
+ pw.println("</body>");
+ pw.println("</html>");
+ pw.close();
+ } else {
+ pw.println("</ul>");
+ }
+
+ }
+
+ protected final void closeChild() {
+ if (child != null) {
+ child.close();
+ child = null;
+ }
+ }
+
+ public void link(HtmlSection section, String child, String name) {
+ String path = section.id;
+ if (path.isEmpty()) {
+ path = child;
+ } else if (child != null) {
+ path = String.format("%s.%s", path, child);
+ }
+ pw.printf("<a href=\"#%1$s\" onclick=\"show(document.getElementById('%1$s')); return true;\">%2$s</a>%n",
+ path, name);
+ }
+
+ public HtmlSection createChildren(String[] sections) {
+ int i = 0;
+ int n = sections.length;
+ HtmlSection current = rootSection;
+ if (current != null) {
+ for (; i < n && current.child != null;
+ ++i, current = current.child) {
+ if (!sections[i].equals(current.child.name)) {
+ break;
+ }
+ }
+ }
+ for (; i < n; ++i) {
+ current = current.createChildren(sections[i]);
+ }
+ return current;
+ }
+
+ private static class SubSection extends HtmlSection {
+ private final HtmlSection parent;
+
+ public SubSection(HtmlSection parent, String name,
+ HtmlSection rootSection) {
+ super(parent.pw,
+ parent.id.isEmpty()
+ ? name
+ : String.format("%s.%s", parent.id, name),
+ name, rootSection);
+ this.parent = parent;
+ pw.printf("<li><a name='%1$s'/><a href='#%1$s' onclick=\"toggle('%1$s'); return false;\">%2$s</a><div id='%1$s'><code><pre>",
+ id, name);
+ }
+
+ @Override
+ public void close() {
+ closeChild();
+ if (closed) {
+ return;
+ }
+ pw.print("</pre></code></div></li><!-- " + id + "-->");
+ parent.removeChild(this);
+ super.close();
+ }
+ }
+
+ private static class HtmlFilterWriter extends FilterWriter {
+ public HtmlFilterWriter(PrintWriter pw) {
+ super(pw);
+ }
+
+ @Override
+ public void write(int c) throws IOException {
+ switch (c) {
+ case '<':
+ super.write("&lt;", 0, 4);
+ break;
+ case '>':
+ super.write("&gt;", 0, 4);
+ break;
+ case '"':
+ super.write("&quot;", 0, 5);
+ break;
+ case '&':
+ super.write("&amp;", 0, 4);
+ break;
+ default:
+ super.write(c);
+ }
+ }
+
+ @Override
+ public void write(char[] cbuf, int off, int len) throws IOException {
+ for (int i = off; i < len; ++i){
+ write(cbuf[i]);
+ }
+ }
+
+ @Override
+ public void write(String str, int off, int len) throws IOException {
+ for (int i = off; i < len; ++i){
+ write(str.charAt(i));
+ }
+ }
+ }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/ProcessInfoGatherer.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/ProcessInfoGatherer.java
new file mode 100644
index 0000000..3fb407c
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/ProcessInfoGatherer.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler;
+
+public interface ProcessInfoGatherer {
+ void gatherProcessInfo(HtmlSection section, long pid);
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/Stopwatch.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/Stopwatch.java
new file mode 100644
index 0000000..2ac9895
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/Stopwatch.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler;
+
+public final class Stopwatch {
+ protected boolean isResultAvailable;
+ protected boolean isRunning;
+
+ private long startTimeNs;
+ private long stopTimeNs;
+
+ public Stopwatch() {
+ isResultAvailable = false;
+ }
+
+ /**
+ * Starts measuring time.
+ */
+ public void start() {
+ startTimeNs = System.nanoTime();
+ isRunning = true;
+ }
+
+ /**
+ * Stops measuring time.
+ */
+ public void stop() {
+ if (!isRunning) {
+ throw new IllegalStateException(" hasn't been started");
+ }
+ stopTimeNs = System.nanoTime();
+ isRunning = false;
+ isResultAvailable = true;
+ }
+
+ /**
+ * @return time in nanoseconds measured between
+ * calls of {@link #start()} and {@link #stop()} methods.
+ *
+ * @throws IllegalStateException if called without preceding
+ * {@link #start()} {@link #stop()} method
+ */
+ public long getElapsedTimeNs() {
+ if (isRunning) {
+ throw new IllegalStateException("hasn't been stopped");
+ }
+ if (!isResultAvailable) {
+ throw new IllegalStateException("was not run");
+ }
+ return stopTimeNs - startTimeNs;
+ }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/ToolKit.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/ToolKit.java
new file mode 100644
index 0000000..408bc1f
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/ToolKit.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler;
+
+import jdk.test.failurehandler.action.ActionSet;
+import jdk.test.failurehandler.action.ActionHelper;
+
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+
+public class ToolKit implements EnvironmentInfoGatherer, ProcessInfoGatherer {
+ private final List<ActionSet> actions = new ArrayList<>();
+ private final ActionHelper helper;
+
+ public ToolKit(ActionHelper helper, PrintWriter log, String... names) {
+ this.helper = helper;
+ for (String name : names) {
+ actions.add(new ActionSet(helper, log, name));
+ }
+ }
+
+ @Override
+ public void gatherEnvironmentInfo(HtmlSection section) {
+ for (ActionSet set : actions) {
+ set.gatherEnvironmentInfo(section);
+ }
+ }
+
+ @Override
+ public void gatherProcessInfo(HtmlSection section, long pid) {
+ Queue<Long> pids = new LinkedList<>();
+ pids.add(pid);
+ for (Long p = pids.poll(); p != null; p = pids.poll()) {
+ HtmlSection pidSection = section.createChildren("" + p);
+ for (ActionSet set : actions) {
+ set.gatherProcessInfo(pidSection, p);
+ }
+ List<Long> children = helper.getChildren(pidSection, p);
+ if (!children.isEmpty()) {
+ HtmlSection s = pidSection.createChildren("children");
+ for (Long c : children) {
+ s.link(section, c.toString(), c.toString());
+ }
+ pids.addAll(children);
+ }
+ }
+ }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/Utils.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/Utils.java
new file mode 100644
index 0000000..ea82360
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/Utils.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.Properties;
+
+public final class Utils {
+ private static final int BUFFER_LENGTH = 1024;
+
+ public static String prependPrefix(String prefix, String name) {
+ return (prefix == null || prefix.isEmpty())
+ ? name
+ : (name == null || name.isEmpty())
+ ? prefix
+ : String.format("%s.%s", prefix, name);
+ }
+
+ public static void copyStream(InputStream in, OutputStream out)
+ throws IOException {
+ int n;
+ byte[] buffer = new byte[BUFFER_LENGTH];
+ while ((n = in.read(buffer)) != -1) {
+ out.write(buffer, 0, n);
+ }
+ out.flush();
+ }
+
+ public static void copyStream(Reader in, Writer out)
+ throws IOException {
+ int n;
+ char[] buffer = new char[BUFFER_LENGTH];
+ while ((n = in.read(buffer)) != -1) {
+ out.write(buffer, 0, n);
+ }
+ out.flush();
+ }
+
+ public static Properties getProperties(String name) {
+ Properties properties = new Properties();
+ String resourceName = String.format(
+ "/%s.%s", name.toLowerCase(), "properties");
+ InputStream stream = Utils.class.getResourceAsStream(resourceName);
+ if (stream == null) {
+ throw new IllegalStateException(String.format(
+ "resource '%s' doesn't exist%n", resourceName));
+ }
+ try {
+ try {
+ properties.load(stream);
+ } finally {
+ stream.close();
+ }
+ } catch (IOException e) {
+ throw new IllegalStateException(String.format(
+ "can't read resource '%s' : %s%n",
+ resourceName, e.getMessage()), e);
+ }
+ return properties;
+ }
+
+ private Utils() { }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/Action.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/Action.java
new file mode 100644
index 0000000..65b2a22
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/Action.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.action;
+
+import jdk.test.failurehandler.HtmlSection;
+
+public interface Action {
+ boolean isJavaOnly();
+ HtmlSection getSection(HtmlSection section);
+
+ ActionParameters getParameters();
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionHelper.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionHelper.java
new file mode 100644
index 0000000..8b2d275
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionHelper.java
@@ -0,0 +1,362 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.action;
+
+import com.sun.tools.attach.VirtualMachine;
+import com.sun.tools.attach.VirtualMachineDescriptor;
+import jdk.test.failurehandler.value.InvalidValueException;
+import jdk.test.failurehandler.value.Value;
+import jdk.test.failurehandler.value.ValueHandler;
+import jdk.test.failurehandler.HtmlSection;
+import jdk.test.failurehandler.Stopwatch;
+import jdk.test.failurehandler.Utils;
+
+import java.io.BufferedReader;
+import java.io.CharArrayReader;
+import java.io.CharArrayWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.io.Writer;
+import java.io.File;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.Properties;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.concurrent.TimeUnit;
+
+public class ActionHelper {
+ private final Path workDir;
+ @Value(name = "execSuffix")
+ private String executableSuffix = "";
+ private Path[] paths;
+
+ private final PatternAction getChildren;
+
+ public ActionHelper(Path workDir, String prefix, Properties properties,
+ Path... jdks) throws InvalidValueException {
+ this.workDir = workDir.toAbsolutePath();
+ getChildren = new PatternAction("children",
+ Utils.prependPrefix(prefix, "getChildren"), properties);
+ ValueHandler.apply(this, properties, prefix);
+ String[] pathStrings = System.getenv("PATH").split(File.pathSeparator);
+ paths = new Path[pathStrings.length];
+ for (int i = 0; i < paths.length; ++i) {
+ paths[i] = Paths.get(pathStrings[i]);
+ }
+ addJdks(jdks);
+ }
+
+ public List<Long> getChildren(HtmlSection section, long pid) {
+ String pidStr = "" + pid;
+ ProcessBuilder pb = getChildren.prepareProcess(section, this, pidStr);
+ PrintWriter log = getChildren.getSection(section).getWriter();
+ CharArrayWriter writer = new CharArrayWriter();
+ ExitCode code = run(log, writer, pb, getChildren.getParameters());
+ Reader output = new CharArrayReader(writer.toCharArray());
+
+ if (!ExitCode.OK.equals(code)) {
+ log.println("WARNING: get children pids action failed");
+ try {
+ Utils.copyStream(output, log);
+ } catch (IOException e) {
+ e.printStackTrace(log);
+ }
+ return Collections.emptyList();
+ }
+
+ List<Long> result = new ArrayList<>();
+ try {
+ try (BufferedReader reader = new BufferedReader(output)) {
+ String line;
+ while ((line = reader.readLine()) != null) {
+ String value = line.trim();
+ if (value.isEmpty()) {
+ // ignore empty lines
+ continue;
+ }
+ try {
+ result.add(Long.valueOf(value));
+ } catch (NumberFormatException e) {
+ log.printf("WARNING: can't parse child pid %s : %s%n",
+ line, e.getMessage());
+ e.printStackTrace(log);
+ }
+ }
+ }
+ } catch (IOException e) {
+ e.printStackTrace(log);
+ }
+ return result;
+ }
+
+ public ProcessBuilder prepareProcess(PrintWriter log, String app,
+ String... args) {
+ File appBin = findApp(app);
+ if (appBin == null) {
+ log.printf("ERROR: can't find %s in %s.%n",
+ app, Arrays.toString(paths));
+ return null;
+ }
+ List<String> command = new ArrayList<>(args.length + 1);
+ command.add(appBin.toString());
+ Collections.addAll(command, args);
+ return new ProcessBuilder()
+ .command(command)
+ .directory(workDir.toFile());
+ }
+
+ private File findApp(String app) {
+ String name = app + executableSuffix;
+ for (Path pathElem : paths) {
+ File result = pathElem.resolve(name).toFile();
+ if (result.exists()) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ private void addJdks(Path[] jdkPaths) {
+ if (jdkPaths != null && jdkPaths.length != 0) {
+ Path[] result = new Path[jdkPaths.length + paths.length];
+ for (int i = 0; i < jdkPaths.length; ++i) {
+ result[i] = jdkPaths[i].resolve("bin");
+ }
+ System.arraycopy(paths, 0, result, jdkPaths.length, paths.length);
+ paths = result;
+ }
+ }
+
+ private ExitCode run(PrintWriter log, Writer out, ProcessBuilder pb,
+ ActionParameters params) {
+ char[] lineChars = new char[40];
+ Arrays.fill(lineChars, '-');
+ String line = new String(lineChars);
+ Stopwatch stopwatch = new Stopwatch();
+ stopwatch.start();
+
+ log.printf("%s%n[%tF %<tT] %s timeout=%s%n%1$s%n", line, new Date(), pb.command(), params.timeout);
+
+ Process process;
+ KillerTask killer;
+
+ ExitCode result = ExitCode.NEVER_STARTED;
+
+ try {
+ process = pb.start();
+ killer = new KillerTask(process);
+ killer.schedule(params.timeout);
+ Utils.copyStream(new InputStreamReader(process.getInputStream()),
+ out);
+ try {
+ result = new ExitCode(process.waitFor());
+ } catch (InterruptedException e) {
+ log.println("WARNING: interrupted when waiting for the tool:%n");
+ e.printStackTrace(log);
+ } finally {
+ killer.cancel();
+ }
+ if (killer.hasTimedOut()) {
+ log.printf(
+ "WARNING: tool timed out: killed process after %d ms%n",
+ params.timeout);
+ result = ExitCode.TIMED_OUT;
+ }
+ } catch (IOException e) {
+ log.printf("WARNING: caught IOException while running tool%n");
+ e.printStackTrace(log);
+ result = ExitCode.LAUNCH_ERROR;
+ }
+
+ stopwatch.stop();
+ log.printf("%s%n[%tF %<tT] exit code: %d time: %d ms%n%1$s%n",
+ line, new Date(), result.value,
+ TimeUnit.NANOSECONDS.toMillis(stopwatch.getElapsedTimeNs()));
+ return result;
+ }
+
+ public void runPatternAction(SimpleAction action, HtmlSection section) {
+ if (action != null) {
+ HtmlSection subSection = action.getSection(section);
+ PrintWriter log = subSection.getWriter();
+ ProcessBuilder pb = action.prepareProcess(log, this);
+ exec(subSection, pb, action.getParameters());
+ }
+ }
+
+ public void runPatternAction(PatternAction action, HtmlSection section,
+ String value) {
+ if (action != null) {
+ ProcessBuilder pb = action.prepareProcess(section, this, value);
+ HtmlSection subSection = action.getSection(section);
+ exec(subSection, pb, action.getParameters());
+ }
+ }
+
+ public boolean isJava(long pid, PrintWriter log) {
+ ProcessBuilder pb = prepareProcess(log, "jps", "-q");
+ if (pb == null) {
+ return false;
+ }
+ pb.redirectErrorStream(true);
+ boolean result = false;
+ String pidStr = "" + pid;
+ try {
+ Process process = pb.start();
+ try (BufferedReader reader = new BufferedReader(
+ new InputStreamReader(process.getInputStream()))) {
+ String line;
+ while ((line = reader.readLine()) != null){
+ if (pidStr.equals(line)) {
+ result = true;
+ }
+ }
+ }
+ process.waitFor();
+ } catch (IOException e) {
+ log.printf("WARNING: can't run jps : %s%n", e.getMessage());
+ e.printStackTrace(log);
+ } catch (InterruptedException e) {
+ log.printf("WARNING: interrupted%n");
+ e.printStackTrace(log);
+ }
+ return result;
+ }
+
+ private static class KillerTask extends TimerTask {
+ private static final Timer WATCHDOG = new Timer("WATCHDOG", true);
+ private final Process process;
+ private boolean timedOut;
+
+ public KillerTask(Process process) {
+ this.process = process;
+ }
+
+ public void run() {
+ try {
+ process.exitValue();
+ } catch (IllegalThreadStateException e) {
+ process.destroyForcibly();
+ timedOut = true;
+ }
+ }
+
+ public boolean hasTimedOut() {
+ return timedOut;
+ }
+
+ public void schedule(long timeout) {
+ if (timeout > 0) {
+ WATCHDOG.schedule(this, timeout);
+ }
+ }
+ }
+
+ private void exec(HtmlSection section, ProcessBuilder process,
+ ActionParameters params) {
+ if (process == null) {
+ return;
+ }
+ PrintWriter sectionWriter = section.getWriter();
+ if (params.repeat > 1) {
+ for (int i = 0, n = params.repeat; i < n; ++i) {
+ HtmlSection iteration = section.createChildren(
+ String.format("iteration_%d", i));
+ PrintWriter writer = iteration.getWriter();
+ ExitCode exitCode = run(writer, writer, process, params);
+ if (params.stopOnError && !ExitCode.OK.equals(exitCode)) {
+ sectionWriter.printf(
+ "ERROR: non zero exit code[%d] -- break.",
+ exitCode.value);
+ break;
+ }
+ // sleep, if this is not the last iteration
+ if (i < n - 1) {
+ try {
+ Thread.sleep(params.pause);
+ } catch (InterruptedException e) {
+ sectionWriter.printf(
+ "WARNING: interrupted while sleeping between invocations");
+ e.printStackTrace(sectionWriter);
+ }
+ }
+ }
+ } else {
+ run(section.getWriter(), section.getWriter(), process, params);
+ }
+ }
+
+ /**
+ * Special values for prepareProcess exit code.
+ *
+ * <p>Can we clash with normal codes?
+ * On Solaris and Linux, only [0..255] are returned.
+ * On Windows, prepareProcess exit codes are stored in unsigned int.
+ * On MacOSX no limits (except it should fit C int type)
+ * are defined in the exit() man pages.
+ */
+ private static class ExitCode {
+ /** Process exits gracefully */
+ public static final ExitCode OK = new ExitCode(0);
+ /** Error launching prepareProcess */
+ public static final ExitCode LAUNCH_ERROR = new ExitCode(-1);
+ /** Application prepareProcess has been killed by watchdog due to timeout */
+ public static final ExitCode TIMED_OUT = new ExitCode(-2);
+ /** Application prepareProcess has never been started due to program logic */
+ public static final ExitCode NEVER_STARTED = new ExitCode(-3);
+
+ public final int value;
+
+ private ExitCode(int value) {
+ this.value = value;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ ExitCode exitCode = (ExitCode) o;
+ return value == exitCode.value;
+ }
+
+ @Override
+ public int hashCode() {
+ return value;
+ }
+ }
+
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionParameters.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionParameters.java
new file mode 100644
index 0000000..4bd919e
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionParameters.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.action;
+
+import jdk.test.failurehandler.value.DefaultValue;
+import jdk.test.failurehandler.value.Value;
+
+public class ActionParameters {
+ @Value (name = "repeat")
+ @DefaultValue (value = "1")
+ public int repeat = 1;
+
+ @Value (name = "pause")
+ @DefaultValue (value = "500")
+ public long pause = 500;
+
+ @Value (name = "stopOnError")
+ @DefaultValue (value = "false")
+ public boolean stopOnError = false;
+
+ @Value (name = "timeout")
+ @DefaultValue (value = "" + 20_000L)
+ public long timeout = -1L;
+
+ public ActionParameters() { }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionSet.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionSet.java
new file mode 100644
index 0000000..3ed5b31
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionSet.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.action;
+
+import jdk.test.failurehandler.ProcessInfoGatherer;
+import jdk.test.failurehandler.EnvironmentInfoGatherer;
+import jdk.test.failurehandler.HtmlSection;
+import jdk.test.failurehandler.Utils;
+
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+public class ActionSet implements ProcessInfoGatherer, EnvironmentInfoGatherer {
+ private static final String ENVIRONMENT_PROPERTY = "environment";
+ private static final String ON_PID_PROPERTY = "onTimeout";
+
+ private final ActionHelper helper;
+
+ public String getName() {
+ return name;
+ }
+
+ private final String name;
+ private final List<SimpleAction> environmentActions;
+ private final List<PatternAction> processActions;
+
+
+ public ActionSet(ActionHelper helper, PrintWriter log, String name) {
+ this.helper = helper;
+ this.name = name;
+
+ Properties p = Utils.getProperties(name);
+ environmentActions = getSimpleActions(log, p, ENVIRONMENT_PROPERTY);
+ processActions = getPatternActions(log, p, ON_PID_PROPERTY);
+ }
+
+ private List<SimpleAction> getSimpleActions(PrintWriter log, Properties p,
+ String key) {
+ String[] tools = getTools(log, p, key);
+ List<SimpleAction> result = new ArrayList<>(tools.length);
+ for (String tool : tools) {
+ try {
+ SimpleAction action = new SimpleAction(
+ Utils.prependPrefix(name, tool), tool, p);
+ result.add(action);
+ } catch (Exception e) {
+ log.printf("ERROR: %s cannot be created : %s %n",
+ tool, e.getMessage());
+ e.printStackTrace(log);
+ }
+ }
+ return result;
+ }
+
+ private List<PatternAction> getPatternActions(PrintWriter log,
+ Properties p, String key) {
+ String[] tools = getTools(log, p, key);
+ List<PatternAction> result = new ArrayList<>(tools.length);
+ for (String tool : tools) {
+ try {
+ PatternAction action = new PatternAction(
+ Utils.prependPrefix(name, tool), tool, p);
+ result.add(action);
+ } catch (Exception e) {
+ log.printf("ERROR: %s cannot be created : %s %n",
+ tool, e.getMessage());
+ e.printStackTrace(log);
+ }
+ }
+ return result;
+ }
+
+ private String[] getTools(PrintWriter writer, Properties p, String key) {
+ String value = p.getProperty(key);
+ if (value == null || value.isEmpty()) {
+ writer.printf("ERROR: '%s' property is empty%n", key);
+ return new String[]{};
+ }
+ return value.split(" ");
+ }
+
+
+ @Override
+ public void gatherProcessInfo(HtmlSection section, long pid) {
+ String pidStr = "" + pid;
+ for (PatternAction action : processActions) {
+ if (action.isJavaOnly()) {
+ if (helper.isJava(pid, section.getWriter())) {
+ helper.runPatternAction(action, section, pidStr);
+ }
+ } else {
+ helper.runPatternAction(action, section, pidStr);
+ }
+ }
+ }
+
+ @Override
+ public void gatherEnvironmentInfo(HtmlSection section) {
+ for (SimpleAction action : environmentActions) {
+ helper.runPatternAction(action, section);
+ }
+ }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/PatternAction.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/PatternAction.java
new file mode 100644
index 0000000..fbcaaa7
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/PatternAction.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.action;
+
+import jdk.test.failurehandler.value.InvalidValueException;
+import jdk.test.failurehandler.HtmlSection;
+import jdk.test.failurehandler.value.Value;
+import jdk.test.failurehandler.value.ValueHandler;
+
+import java.util.Properties;
+
+public class PatternAction implements Action {
+ @Value(name = "pattern")
+ private String pattern = null;
+
+ private final SimpleAction action;
+ private final String[] originalArgs;
+
+ public PatternAction(String id, Properties properties)
+ throws InvalidValueException {
+ this(id, id, properties);
+ }
+
+ public PatternAction(String name, String id, Properties properties)
+ throws InvalidValueException {
+ action = new SimpleAction(("pattern." + name), id, properties);
+ ValueHandler.apply(this, properties, id);
+ originalArgs = action.args.clone();
+ }
+
+ public ProcessBuilder prepareProcess(HtmlSection section,
+ ActionHelper helper, String value) {
+ action.sections[0] = value;
+ section = getSection(section);
+ String[] args = action.args;
+ System.arraycopy(originalArgs, 0, args, 0, originalArgs.length);
+
+ for (int i = 0, n = args.length; i < n; ++i) {
+ args[i] = args[i].replace(pattern, value) ;
+ }
+ return action.prepareProcess(section.getWriter(), helper);
+ }
+
+ @Override
+ public HtmlSection getSection(HtmlSection section) {
+ return action.getSection(section);
+ }
+
+ @Override
+ public ActionParameters getParameters() {
+ return action.getParameters();
+ }
+
+ @Override
+ public boolean isJavaOnly() {
+ return action.isJavaOnly();
+ }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/SimpleAction.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/SimpleAction.java
new file mode 100644
index 0000000..e6a0e9a
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/SimpleAction.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.action;
+
+import jdk.test.failurehandler.HtmlSection;
+import jdk.test.failurehandler.value.InvalidValueException;
+import jdk.test.failurehandler.value.SubValues;
+import jdk.test.failurehandler.value.Value;
+import jdk.test.failurehandler.value.ValueHandler;
+import jdk.test.failurehandler.value.DefaultValue;
+
+import java.io.PrintWriter;
+import java.util.Properties;
+
+public class SimpleAction implements Action {
+ /* package-private */ final String[] sections;
+ @Value(name = "javaOnly")
+ @DefaultValue(value = "false")
+ private boolean javaOnly = false;
+
+ @Value (name = "app")
+ private String app = null;
+
+ @Value (name = "args")
+ @DefaultValue (value = "")
+ /* package-private */ String[] args = new String[]{};
+
+ @SubValues(prefix = "params")
+ private final ActionParameters params;
+
+ public SimpleAction(String id, Properties properties)
+ throws InvalidValueException {
+ this(id, id, properties);
+ }
+ public SimpleAction(String name, String id, Properties properties)
+ throws InvalidValueException {
+ sections = name.split("\\.");
+ this.params = new ActionParameters();
+ ValueHandler.apply(this, properties, id);
+ }
+
+ public ProcessBuilder prepareProcess(PrintWriter log, ActionHelper helper) {
+ ProcessBuilder process = helper.prepareProcess(log, app, args);
+ if (process != null) {
+ process.redirectErrorStream(true);
+ }
+
+ return process;
+ }
+
+ @Override
+ public boolean isJavaOnly() {
+ return javaOnly;
+ }
+
+ @Override
+ public HtmlSection getSection(HtmlSection section) {
+ return section.createChildren(sections);
+ }
+
+ @Override
+ public ActionParameters getParameters() {
+ return params;
+ }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/GatherDiagnosticInfoObserver.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/GatherDiagnosticInfoObserver.java
new file mode 100644
index 0000000..7a14d37
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/GatherDiagnosticInfoObserver.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (c) 2015, 2016, 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 jdk.test.failurehandler.jtreg;
+
+import com.sun.javatest.Harness;
+import com.sun.javatest.Parameters;
+import com.sun.javatest.TestResult;
+import com.sun.javatest.InterviewParameters;
+import jdk.test.failurehandler.*;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * The jtreg test execution observer, which gathers info about
+ * system and dumps it to a file.
+ */
+public class GatherDiagnosticInfoObserver implements Harness.Observer {
+ public static final String LOG_FILENAME = "environment.log";
+ public static final String ENVIRONMENT_OUTPUT = "environment.html";
+
+ private String compileJdk;
+ private String testJdk;
+
+ /*
+ * The harness calls this method after each test.
+ */
+ @Override
+ public void finishedTest(TestResult tr) {
+ if (!tr.getStatus().isError() && !tr.getStatus().isFailed()) {
+ return;
+ }
+
+ String jtrFile = tr.getFile().toString();
+ final Path workDir = Paths.get(
+ jtrFile.substring(0, jtrFile.lastIndexOf('.')));
+ workDir.toFile().mkdir();
+
+ String name = getClass().getName();
+ PrintWriter log;
+ boolean needClose = false;
+ try {
+ log = new PrintWriter(new FileWriter(
+ workDir.resolve(LOG_FILENAME).toFile(), true), true);
+ needClose = true;
+ } catch (IOException e) {
+ log = new PrintWriter(System.out);
+ log.printf("ERROR: %s cannot open log file %s", name,
+ LOG_FILENAME);
+ e.printStackTrace(log);
+ }
+ try {
+ log.printf("%s ---%n", name);
+ GathererFactory gathererFactory = new GathererFactory(
+ OS.current().family, workDir, log,
+ Paths.get(testJdk), Paths.get(compileJdk));
+ gatherEnvInfo(workDir, name, log,
+ gathererFactory.getEnvironmentInfoGatherer());
+ } catch (Throwable e) {
+ log.printf("ERROR: exception in observer %s:", name);
+ e.printStackTrace(log);
+ } finally {
+ log.printf("--- %s%n", name);
+ if (needClose) {
+ log.close();
+ } else {
+ log.flush();
+ }
+ }
+ }
+
+ private void gatherEnvInfo(Path workDir, String name, PrintWriter log,
+ EnvironmentInfoGatherer gatherer) {
+ File output = workDir.resolve(ENVIRONMENT_OUTPUT).toFile();
+ try (HtmlPage html = new HtmlPage(new PrintWriter(
+ new FileWriter(output, true), true))) {
+ try (ElapsedTimePrinter timePrinter
+ = new ElapsedTimePrinter(new Stopwatch(), name, log)) {
+ gatherer.gatherEnvironmentInfo(html.getRootSection());
+ }
+ } catch (Throwable e) {
+ log.printf("ERROR: exception in observer on getting environment "
+ + "information %s:", name);
+ e.printStackTrace(log);
+ }
+ }
+
+ /*
+ * The harness calls this method one time per run, not per test.
+ */
+ @Override
+ public void startingTestRun(Parameters params) {
+ // TODO find a better way to get JDKs
+ InterviewParameters rp = (InterviewParameters) params;
+ Map<?,?> map = new HashMap<>();
+ rp.save(map);
+ compileJdk = (String) map.get("regtest.compilejdk");
+ testJdk = (String) map.get("regtest.testjdk");
+ }
+
+ @Override
+ public void startingTest(TestResult tr) {
+ // no-op
+ }
+
+ @Override
+ public void stoppingTestRun() {
+ // no-op
+ }
+
+ @Override
+ public void finishedTesting() {
+ // no-op
+ }
+
+ @Override
+ public void finishedTestRun(boolean allOK) {
+ // no-op
+ }
+
+ @Override
+ public void error(String msg) {
+ // no-op
+ }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/GatherProcessInfoTimeoutHandler.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/GatherProcessInfoTimeoutHandler.java
new file mode 100644
index 0000000..767e866
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/GatherProcessInfoTimeoutHandler.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 2015, 2016, 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 jdk.test.failurehandler.jtreg;
+
+import com.sun.javatest.regtest.TimeoutHandler;
+import jdk.test.failurehandler.*;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.lang.reflect.Field;
+import java.nio.file.Path;
+
+/**
+ * A timeout handler for jtreg, which gathers information about the timed out
+ * process and its children.
+ */
+public class GatherProcessInfoTimeoutHandler extends TimeoutHandler {
+ private static final boolean HAS_NATIVE_LIBRARY;
+ static {
+ boolean value = true;
+ try {
+ System.loadLibrary("timeoutHandler");
+ } catch (UnsatisfiedLinkError ignore) {
+ // not all os need timeoutHandler native-library
+ value = false;
+ }
+ HAS_NATIVE_LIBRARY = value;
+ }
+ private static final String LOG_FILENAME = "processes.log";
+ private static final String OUTPUT_FILENAME = "processes.html";
+
+ public GatherProcessInfoTimeoutHandler(PrintWriter jtregLog, File outputDir,
+ File testJdk) {
+ super(jtregLog, outputDir, testJdk);
+ }
+
+ /**
+ * Runs various actions for jtreg timeout handler.
+ *
+ * <p>Please see method code for the actions.
+ */
+ @Override
+ protected void runActions(Process process, long pid)
+ throws InterruptedException {
+ Path workDir = outputDir.toPath();
+
+ String name = getClass().getName();
+ PrintWriter actionsLog;
+ try {
+ // try to open a separate file for action log
+ actionsLog = new PrintWriter(new FileWriter(
+ workDir.resolve(LOG_FILENAME).toFile(), true), true);
+ } catch (IOException e) {
+ // use jtreg log as a fallback
+ actionsLog = log;
+ actionsLog.printf("ERROR: %s cannot open log file %s : %s", name,
+ LOG_FILENAME, e.getMessage());
+ }
+ try {
+ actionsLog.printf("%s ---%n", name);
+
+ File output = workDir.resolve(OUTPUT_FILENAME).toFile();
+ try {
+ PrintWriter pw = new PrintWriter(new FileWriter(output, true), true);
+ runGatherer(name, workDir, actionsLog, pw, pid);
+ } catch (IOException e) {
+ actionsLog.printf("IOException: cannot open output file[%s] : %s",
+ output, e.getMessage());
+ e.printStackTrace(actionsLog);
+ }
+ } finally {
+ actionsLog.printf("--- %s%n", name);
+ // don't close jtreg log
+ if (actionsLog != log) {
+ actionsLog.close();
+ } else {
+ log.flush();
+ }
+ }
+ }
+
+ @Override
+ protected long getProcessId(Process process) {
+ long result = super.getProcessId(process);
+ if (result == 0L) {
+ /* jtreg didn't find pid, most probably we are on JDK < 9
+ there is no Process::getPid */
+ if (HAS_NATIVE_LIBRARY && "windows".equals(OS.current().family)) {
+ try {
+ Field field = process.getClass().getDeclaredField("handle");
+ boolean old = field.isAccessible();
+ try {
+ field.setAccessible(true);
+ long handle = field.getLong(process);
+ result = getWin32Pid(handle);
+ } finally {
+ field.setAccessible(old);
+ }
+ } catch (ReflectiveOperationException e) {
+ e.printStackTrace(log);
+ }
+ }
+ }
+ return result;
+ }
+
+ private native long getWin32Pid(long handle);
+
+ private void runGatherer(String name, Path workDir, PrintWriter log,
+ PrintWriter out, long pid) {
+ try (HtmlPage html = new HtmlPage(out)) {
+ ProcessInfoGatherer gatherer = new GathererFactory(
+ OS.current().family,
+ workDir, log, testJdk.toPath()).getProcessInfoGatherer();
+ try (ElapsedTimePrinter timePrinter
+ = new ElapsedTimePrinter(new Stopwatch(), name, log)) {
+ gatherer.gatherProcessInfo(html.getRootSection(), pid);
+ }
+ } catch (Throwable e) {
+ log.printf("ERROR: exception in timeout handler %s:", name);
+ e.printStackTrace(log);
+ }
+ }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/OS.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/OS.java
new file mode 100644
index 0000000..ccc1861
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/OS.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2016, 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 jdk.test.failurehandler.jtreg;
+
+// Stripped down version of jtreg internal class com.sun.javatest.regtest.config.OS
+class OS {
+ public final String family;
+
+ private static OS current;
+
+ public static OS current() {
+ if (current == null) {
+ String name = System.getProperty("os.name");
+ current = new OS(name);
+ }
+ return current;
+ }
+
+ private OS(String name) {
+ if (name.startsWith("Linux")) {
+ family = "linux";
+ } else if (name.startsWith("Mac") || name.startsWith("Darwin")) {
+ family = "mac";
+ } else if (name.startsWith("SunOS") || name.startsWith("Solaris")) {
+ family = "solaris";
+ } else if (name.startsWith("Windows")) {
+ family = "windows";
+ } else {
+ // use first word of name
+ family = name.replaceFirst("^([^ ]+).*", "$1");
+ }
+ }
+}
+
+
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/ArrayParser.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/ArrayParser.java
new file mode 100644
index 0000000..fd2e4e6
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/ArrayParser.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.value;
+
+import java.lang.reflect.Array;
+import java.util.Objects;
+
+public class ArrayParser implements ValueParser {
+ private final ValueParser parser;
+
+ public ArrayParser(ValueParser parser) {
+ Objects.requireNonNull(parser);
+ this.parser = parser;
+ }
+
+ @Override
+ public Object parse(Class<?> type, String value, String delimiter) {
+ Class<?> component = type.getComponentType();
+ if (component.isArray()) {
+ throw new IllegalArgumentException(
+ "multidimensional array fields aren't supported");
+ }
+ String[] values = (value == null || value.isEmpty())
+ ? new String[]{}
+ : value.split(delimiter);
+ Object result = Array.newInstance(component, values.length);
+ for (int i = 0, n = values.length; i < n; ++i) {
+ Array.set(result, i, parser.parse(component, values[i], delimiter));
+ }
+ return result;
+ }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/DefaultParser.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/DefaultParser.java
new file mode 100644
index 0000000..7de7442
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/DefaultParser.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.value;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class DefaultParser implements ValueParser {
+ private static final Map<Class<?>, BasicParser> PARSERS = new HashMap<>();
+
+ static {
+ BasicParser.init();
+ }
+
+ @Override
+ public Object parse(Class<?> type, String value, String s) {
+ if (type.isArray()) {
+ return new ArrayParser(this).parse(type, value, s);
+ }
+ ValueParser parser = PARSERS.get(type);
+ if (parser == null) {
+ throw new IllegalArgumentException("can't find parser for "
+ + type.getName());
+ }
+
+ return parser.parse(type, value, s);
+ }
+
+ private static enum BasicParser implements ValueParser {
+ BOOL(boolean.class, Boolean.class) {
+ @Override
+ public Object parse(Class<?> type, String value, String s) {
+ return Boolean.valueOf(value);
+ }
+ },
+ BYTE(byte.class, Byte.class) {
+ @Override
+ public Object parse(Class<?> type, String value, String s) {
+ return Byte.decode(value);
+ }
+ },
+ CHAR(char.class, Character.class) {
+ @Override
+ public Object parse(Class<?> type, String value, String s) {
+ if (value.length() != 1) {
+ throw new IllegalArgumentException(
+ String.format("can't cast %s to char", value));
+ }
+ return value.charAt(0);
+ }
+ },
+ SHORT(short.class, Short.class) {
+ @Override
+ public Object parse(Class<?> type, String value, String s) {
+ return Short.decode(value);
+ }
+ },
+ INT(int.class, Integer.class) {
+ @Override
+ public Object parse(Class<?> type, String value, String s) {
+ return Integer.decode(value);
+ }
+ },
+ LONG(long.class, Long.class) {
+ @Override
+ public Object parse(Class<?> type, String value, String s) {
+ return Long.decode(value);
+ }
+ },
+ FLOAT(float.class, Float.class) {
+ @Override
+ public Object parse(Class<?> type, String value, String s) {
+ return Float.parseFloat(value);
+ }
+ },
+ DOUBLE(double.class, Double.class) {
+ @Override
+ public Object parse(Class<?> type, String value, String s) {
+ return Double.parseDouble(value);
+ }
+ },
+ STRING(String.class, Object.class) {
+ @Override
+ public Object parse(Class<?> type, String value, String s) {
+ return value;
+ }
+ };
+
+ private BasicParser(Class<?>... classes) {
+ for (Class<?> aClass : classes) {
+ DefaultParser.PARSERS.put(aClass, this);
+ }
+ }
+
+ private static void init() {
+ // no-op used to provoke <cinit>
+ }
+ }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/DefaultValue.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/DefaultValue.java
new file mode 100644
index 0000000..081a9fd
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/DefaultValue.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.value;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(value = RetentionPolicy.RUNTIME)
+@Target(value = ElementType.FIELD)
+public @interface DefaultValue {
+ String value();
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/InvalidValueException.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/InvalidValueException.java
new file mode 100644
index 0000000..6d544c2
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/InvalidValueException.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.value;
+
+public class InvalidValueException extends Exception {
+ public InvalidValueException() { }
+
+ public InvalidValueException(String message) {
+ super(message);
+ }
+
+ public InvalidValueException(String s, Throwable e) {
+ super(s, e);
+ }
+
+ public InvalidValueException(Throwable cause) {
+ super(cause);
+ }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/PathValueParser.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/PathValueParser.java
new file mode 100644
index 0000000..89ed3a7
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/PathValueParser.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.value;
+
+import java.io.File;
+
+public class PathValueParser implements ValueParser {
+ @Override
+ public Object parse(Class<?> type, String value, String delimiter) {
+ if (type.isArray()) {
+ return new ArrayParser(this).parse(type, value, delimiter);
+ }
+ return new File(value).toPath();
+ }
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/SubValues.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/SubValues.java
new file mode 100644
index 0000000..cc09a0d
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/SubValues.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.value;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(value = RetentionPolicy.RUNTIME)
+@Target(value = ElementType.FIELD)
+public @interface SubValues {
+ String prefix();
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/Value.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/Value.java
new file mode 100644
index 0000000..9f4c3cd
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/Value.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.value;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(value = RetentionPolicy.RUNTIME)
+@Target(value = ElementType.FIELD)
+public @interface Value {
+ String name();
+ Class<? extends ValueParser> parser() default DefaultParser.class;
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/ValueHandler.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/ValueHandler.java
new file mode 100644
index 0000000..971f11e
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/ValueHandler.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.value;
+
+import jdk.test.failurehandler.Utils;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.Objects;
+import java.util.Properties;
+
+public final class ValueHandler {
+ public static <T> void apply(T object, Properties properties,
+ String prefix) throws InvalidValueException {
+ Objects.requireNonNull(object, "object cannot be null");
+ Objects.requireNonNull(properties, "properties cannot be null");
+ Class<?> aClass = object.getClass();
+ while (aClass != null) {
+ for (Field field : aClass.getDeclaredFields()) {
+ Value p = field.getAnnotation(Value.class);
+ if (p != null) {
+ applyToField(p, object, field, properties, prefix);
+ } else {
+ SubValues sub
+ = field.getAnnotation(SubValues.class);
+ if (sub != null) {
+ getAccess(field);
+ try {
+ apply(field.get(object), properties,
+ Utils.prependPrefix(prefix, sub.prefix()));
+ } catch (IllegalAccessException e) {
+ throw new InvalidValueException(String.format(
+ "can't apply sub properties to %s.",
+ field.getName()));
+ }
+ }
+ }
+ }
+ aClass = aClass.getSuperclass();
+ }
+ }
+
+ private static void applyToField(Value property, Object object,
+ Field field, Properties properties, String prefix)
+ throws InvalidValueException {
+ getAccess(field);
+ if (Modifier.isFinal(field.getModifiers())) {
+ throw new InvalidValueException(
+ String.format("field '%s' is final", field));
+ }
+ String name = Utils.prependPrefix(prefix, property.name());
+ String value = getProperty(properties, prefix, property.name());
+ if (value == null) {
+ DefaultValue defaultValue
+ = field.getAnnotation(DefaultValue.class);
+ value = defaultValue == null ? null : defaultValue.value();
+ }
+ if (value == null) {
+ throw new InvalidValueException(String.format(
+ "can't set '%s', because properties don't have '%s'.",
+ field.getName(), name));
+ }
+ String delimiter = getProperty(properties,
+ Utils.prependPrefix(prefix, property.name()), "delimiter");
+ delimiter = delimiter == null ? " " : delimiter;
+ Class<? extends ValueParser> parserClass = property.parser();
+ try {
+ field.set(object, parserClass.newInstance().parse(
+ field.getType(), value, delimiter));
+ } catch (ReflectiveOperationException | IllegalArgumentException e) {
+ throw new InvalidValueException(
+ String.format("can't set field '%s' : %s",
+ field.getName(), e.getMessage()), e);
+ }
+ }
+
+ private static String getProperty(Properties properties,
+ String prefix, String name) {
+ if (prefix == null || prefix.isEmpty()) {
+ return properties.getProperty(name);
+ }
+ int index = prefix.length();
+ do {
+ String value = properties.getProperty(
+ Utils.prependPrefix(prefix.substring(0, index), name));
+ if (value != null) {
+ return value;
+ }
+ index = prefix.lastIndexOf('.', index - 1);
+ } while (index > 0);
+ return properties.getProperty(name);
+ }
+
+ private static void getAccess(Field field) {
+ int modifiers = field.getModifiers();
+ if (!Modifier.isPublic(modifiers)) {
+ field.setAccessible(true);
+ }
+ }
+
+}
diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/ValueParser.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/ValueParser.java
new file mode 100644
index 0000000..fe7c00a
--- /dev/null
+++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/value/ValueParser.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.value;
+
+public interface ValueParser {
+ Object parse(Class<?> type, String value, String delimiter);
+}
diff --git a/test/failure_handler/src/share/conf/common.properties b/test/failure_handler/src/share/conf/common.properties
new file mode 100644
index 0000000..80f4efa
--- /dev/null
+++ b/test/failure_handler/src/share/conf/common.properties
@@ -0,0 +1,69 @@
+#
+# Copyright (c) 2015, 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.
+#
+
+pattern=%p
+javaOnly=true
+args=%p
+################################################################################
+# process info to gather
+################################################################################
+onTimeout=\
+ jinfo \
+ jcmd.compiler.codecache jcmd.compiler.codelist \
+ jcmd.compiler.queue \
+ jcmd.vm.classloader_stats jcmd.vm.stringtable \
+ jcmd.vm.symboltable jcmd.vm.uptime jcmd.vm.dynlibs \
+ jcmd.vm.system_properties \
+ jcmd.gc.heap_info jcmd.gc.class_stats jcmd.gc.class_histogram jcmd.gc.finalizer_info \
+ jstack
+
+jinfo.app=jinfo
+
+jcmd.app=jcmd
+
+jcmd.compiler.codecache.args=%p Compiler.codecache
+jcmd.compiler.codelist.args=%p Compiler.codelist
+jcmd.compiler.queue.args=%p Compiler.queue
+
+jcmd.vm.classloader_stats.args=%p VM.classloader_stats
+jcmd.vm.stringtable.args=%p VM.stringtable
+jcmd.vm.symboltable.args=%p VM.symboltable
+jcmd.vm.uptime.args=%p VM.uptime
+jcmd.vm.dynlibs.args=%p VM.dynlibs
+jcmd.vm.system_properties.args=%p VM.system_properties
+
+jcmd.gc.class_stats.args=%p GC.class_stats
+jcmd.gc.class_histogram.args=%p GC.class_histogram
+jcmd.gc.finalizer_info.args=%p GC.finalizer_info
+jcmd.gc.heap_info.args=%p GC.heap_info
+
+jstack.app=jstack
+jstack.params.repeat=6
+
+################################################################################
+# environment info to gather
+################################################################################
+environment=jps
+jps.app=jps
+jps.args=-mlv
+################################################################################
diff --git a/test/failure_handler/src/share/conf/linux.properties b/test/failure_handler/src/share/conf/linux.properties
new file mode 100644
index 0000000..a9cb01f
--- /dev/null
+++ b/test/failure_handler/src/share/conf/linux.properties
@@ -0,0 +1,110 @@
+#
+# Copyright (c) 2015, 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.
+#
+
+config.execSuffix=
+config.getChildren.pattern=%p
+config.getChildren.app=ps
+config.getChildren.args=--no-headers -o pid --ppid %p
+################################################################################
+# process info to gather
+################################################################################
+onTimeout=\
+ native.pmap.normal native.pmap.everything \
+ native.files native.locks \
+ native.stack native.core
+################################################################################
+native.pattern=%p
+native.javaOnly=false
+native.args=%p
+
+native.pmap.app=pmap
+native.pmap.normal.args=-p %p
+native.pmap.everything.args=-XXp %p
+
+native.files.app=lsof
+native.files.args=-p %p
+
+native.locks.app=lslocks
+native.locks.args=-u --pid %p
+
+native.stack.app=gdb
+native.stack.args=--pid=%p\0-batch\0-ex\0thread apply all backtrace
+native.stack.args.delimiter=\0
+native.stack.params.repeat=6
+
+native.core.app=gcore
+native.core.args=-o ./core.%p %p
+native.core.params.timeout=3600000
+################################################################################
+# environment info to gather
+################################################################################
+environment=\
+ users.current users.logged users.last \
+ disk \
+ env \
+ system.dmesg system.sysctl \
+ process.top process.ps \
+ memory.free memory.vmstat.default memory.vmstat.statistics \
+ memory.vmstat.slabinfo memory.vmstat.disk \
+ files \
+ locks \
+ net.sockets net.statistics
+################################################################################
+users.current.app=id
+users.current.args=-a
+users.logged.app=who
+users.logged.args=-a
+users.last.app=last
+users.last.args=-10
+
+disk.app=df
+disk.args=-h
+
+env.app=env
+
+system.dmesg.app=dmesg
+system.sysctl.app=sysctl
+system.sysctl.args=-a
+
+process.top.app=top
+process.top.args=-b -n 1
+process.ps.app=ps
+process.ps.args=-Leo pid,pcpu,cputime,start,pmem,vsz,rssize,stackp,stat,sgi_p,wchan,user,args
+
+memory.free.app=free
+memory.free.args=-h
+memory.vmstat.app=vmstat
+memory.vmstat.default.args=3 3
+memory.vmstat.statistics.args=-s
+memory.vmstat.slabinfo.args=-m
+memory.vmstat.disk.args=-d
+
+files.app=lsof
+locks.app=lslocks
+locks.args=-u
+
+net.app=netstat
+net.sockets.args=-aeeopv
+net.statistics.args=-sv
+################################################################################
+
diff --git a/test/failure_handler/src/share/conf/mac.properties b/test/failure_handler/src/share/conf/mac.properties
new file mode 100644
index 0000000..de14390
--- /dev/null
+++ b/test/failure_handler/src/share/conf/mac.properties
@@ -0,0 +1,110 @@
+#
+# Copyright (c) 2015, 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.
+#
+
+config.execSuffix=
+config.getChildren.pattern=%p
+config.getChildren.app=pgrep
+config.getChildren.args=-P %p
+################################################################################
+# process info to gather
+################################################################################
+onTimeout=\
+ native.DevToolsSecurity \
+ native.vmmap native.heap native.leaks native.spindump \
+ native.stack native.core
+################################################################################
+native.pattern=%p
+native.javaOnly=false
+native.args=%p
+
+native.DevToolsSecurity.app=DevToolsSecurity
+native.DevToolsSecurity.args=--status
+
+# spindump requires root privileges
+native.spindump.app=spindump
+native.spindump.args=%p -stdout
+
+native.vmmap.app=bash
+native.vmmap.delimiter=\0
+native.vmmap.args=-c\0DevToolsSecurity --status | grep -q enabled && vmmap %p
+
+native.leaks.app=bash
+native.leaks.delimiter=\0
+native.leaks.args=-c\0DevToolsSecurity --status | grep -q enabled && leaks %p
+
+native.heap.app=bash
+native.heap.delimiter=\0
+native.heap.args=-c\0DevToolsSecurity --status | grep -q enabled && heap %p
+
+native.stack.app=bash
+native.stack.delimiter=\0
+native.stack.params.repeat=6
+native.stack.args=-c\0DevToolsSecurity --status | grep -q enabled && lldb -o 'attach %p' -o 'thread backtrace all' -o 'detach' -o 'quit'
+
+native.core.app=bash
+native.core.delimiter=\0
+native.core.args=-c\0gcore -o ./core.%p %p || \
+ (DevToolsSecurity --status | grep -q enabled && lldb --batch -o 'attach %p' -o 'process save-core core.%p' -o 'detach' -o 'quit')
+native.core.params.timeout=3600000
+################################################################################
+# environment info to gather
+################################################################################
+environment=\
+ users.current users.logged users.last \
+ disk \
+ env \
+ system.dmesg system.sysctl \
+ process.ps process.top \
+ memory.vmstat \
+ netstat.av netstat.aL netstat.m netstat.s
+################################################################################
+users.current.app=id
+users.current.args=-a
+users.logged.app=who
+users.logged.args=-a
+users.last.app=last
+users.last.args=-10
+
+disk.app=df
+disk.args=-h
+
+env.app=env
+
+system.dmesg.app=dmesg
+system.sysctl.app=sysctl
+system.sysctl.args=-a
+
+process.ps.app=ps
+process.ps.args=-Meo pid,pcpu,cputime,start,pmem,vsz,rss,state,wchan,user,args
+process.top.app=top
+process.top.args=-l 1
+
+memory.vmstat.app=vm_stat
+memory.vmstat.args=-c 3 3
+
+netstat.app=netstat
+netstat.av.args=-av
+netstat.aL.args=-aL
+netstat.m.args=-m
+netstat.s.args=-s
+################################################################################
diff --git a/test/failure_handler/src/share/conf/solaris.properties b/test/failure_handler/src/share/conf/solaris.properties
new file mode 100644
index 0000000..4c0b673
--- /dev/null
+++ b/test/failure_handler/src/share/conf/solaris.properties
@@ -0,0 +1,111 @@
+#
+# Copyright (c) 2015, 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.
+#
+
+config.execSuffix=
+# pattern will be replaced with the PID
+config.getChildren.pattern=%p
+config.getChildren.app=pgrep
+config.getChildren.args=-P %p
+################################################################################
+# prepareProcess info to gather
+################################################################################
+onTimeout=\
+ native.pmap \
+ native.pfiles \
+ native.stack native.core
+################################################################################
+# solaris specific
+################################################################################
+native.pattern=%p
+native.javaOnly=false
+
+native.pmap.app=pmap
+native.pmap.args=-F %p
+
+native.pfiles.app=pfiles
+native.pfiles.args=-F %p
+
+# native.locks TODO find 'analog for solaris' for Linux lslocks
+
+native.stack.app=pstack
+native.stack.args=-F %p
+native.stack.params.repeat=6
+
+native.core.app=gcore
+native.core.args=-F -o ./core %p
+native.core.params.timeout=3600000
+################################################################################
+# environment info to gather
+################################################################################
+environment=\
+ users.current users.logged users.last \
+ disk \
+ env \
+ system.dmesg system.prtconf system.sysdef \
+ process.ps process.top \
+ memory.swap memory.vmstat.default memory.vmstat.statistics memory.pagesize \
+ netstat.av netstat.m netstat.s netstat.i
+################################################################################
+# common unix
+################################################################################
+users.current.app=id
+users.current.args=-a
+users.logged.app=who
+users.logged.args=-a
+users.last.app=last
+users.last.args=-10
+
+disk.app=df
+disk.args=-h
+
+env.app=env
+
+system.dmesg.app=dmesg
+system.prtconf.app=prtconf
+system.sysdef.app=sysdef
+
+memory.swap.app=swap
+memory.swap.args=-l
+
+process.ps.app=ps
+process.ps.args=-Leo pid,lwp,ppid,tty,s,wchan,pcpu,time,stime,pmem,vsz,osz,rss,args
+
+process.top.app=top
+process.top.args=-b -n
+
+memory.vmstat.app=vmstat
+memory.vmstat.default.args=3 3
+memory.vmstat.statistics.args=-s
+
+memory.pagesize.app=pagesize
+
+# TODO: how to start prstat to show statistics and exit?
+# prstat.app=prstat
+# prstat.args=-a
+
+netstat.app=netstat
+netstat.av.args=-av
+netstat.m.args=-m
+netstat.s.args=-s
+netstat.i.args=-i 1 5
+################################################################################
diff --git a/test/failure_handler/src/share/conf/windows.properties b/test/failure_handler/src/share/conf/windows.properties
new file mode 100644
index 0000000..ed5385c
--- /dev/null
+++ b/test/failure_handler/src/share/conf/windows.properties
@@ -0,0 +1,115 @@
+#
+# Copyright (c) 2015, 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.
+#
+
+config.execSuffix=.exe
+config.getChildren.app=bash
+config.getChildren.pattern=%p
+config.getChildren.args=-c\0wmic process where ParentProcessId=%p get ProcessId | tail -n+2
+config.getChildren.args.delimiter=\0
+################################################################################
+# process info to gather
+################################################################################
+onTimeout=\
+ native.info \
+ native.pmap.normal native.pmap.everything \
+ native.files native.locks \
+ native.stack native.core
+################################################################################
+native.pattern=%p
+native.javaOnly=false
+native.args=%p
+
+native.info.app=wmic
+native.info.args=process where processId=%p list full
+
+native.pmap.app=pmap
+native.pmap.normal.args=%p
+native.pmap.everything.args=-x %p
+
+native.files.app=handle
+native.files.args=-p %p
+# TODO
+native.locks.app=lslocks
+native.locks.args=-u --pid %p
+
+native.stack.app=cdb
+native.stack.args=-c "~*kP n;qd" -p %p
+native.stack.params.repeat=6
+
+native.core.app=cdb
+native.core.args=-c ".dump /f core.%p;qd" -p %p
+native.core.params.timeout=3600000
+################################################################################
+# environment info to gather
+################################################################################
+environment=\
+ users.current users.logged \
+ disk \
+ env \
+ system.events.system system.events.application system.os \
+ process.top process.ps process.tasklist \
+ memory.free memory.vmstat.default memory.vmstat.statistics \
+ memory.vmstat.slabinfo memory.vmstat.disk \
+ files \
+ net.sockets net.statistics
+################################################################################
+users.current.app=id
+users.current.args=-a
+users.logged.app=query
+users.logged.args=user
+
+disk.app=df
+disk.args=-h
+
+env.app=env
+
+system.events.app=powershell
+system.events.delimiter=\0
+system.events.system.args=-NoLogo\0-Command\0Get-EventLog System -After (Get-Date).AddDays(-1) | Format-List
+system.events.application.args=-NoLogo\0-Command\0Get-EventLog Application -After (Get-Date).AddDays(-1) | Format-List
+
+system.os.app=wmic
+system.os.args=os get /format:list
+
+process.top.app=top
+process.top.args=-b -n 1
+process.ps.app=ps
+process.ps.args=-efW
+process.tasklist.app=tasklist
+process.tasklist.args=/V
+
+memory.free.app=free
+memory.vmstat.app=vmstat
+memory.vmstat.statistics.args=-s
+memory.vmstat.slabinfo.args=-m
+memory.vmstat.disk.args=-d
+
+files.app=openfiles
+files.args=/query
+
+net.sockets.app=bash
+net.sockets.args=-c\0netstat -b -a -t -o || netstat -a -t -o
+net.sockets.args.delimiter=\0
+net.statistics.app=netstat
+net.statistics.args=-s -e
+################################################################################
diff --git a/test/failure_handler/src/windows/native/libtimeoutHandler/GatherProcessInfoTimeoutHandler.c b/test/failure_handler/src/windows/native/libtimeoutHandler/GatherProcessInfoTimeoutHandler.c
new file mode 100644
index 0000000..827fc5b
--- /dev/null
+++ b/test/failure_handler/src/windows/native/libtimeoutHandler/GatherProcessInfoTimeoutHandler.c
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2015, 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.
+ */
+
+#include <jni.h>
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+JNIEXPORT jlong JNICALL Java_jdk_test_failurehandler_jtreg_GatherProcessInfoTimeoutHandler_getWin32Pid
+ (JNIEnv* env, jobject o, jlong handle) {
+ return GetProcessId((HANDLE) handle);
+}
+#ifdef __cplusplus
+}
+#endif
diff --git a/test/failure_handler/test/TEST.ROOT b/test/failure_handler/test/TEST.ROOT
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/failure_handler/test/TEST.ROOT
diff --git a/test/failure_handler/test/sanity/Crash.java b/test/failure_handler/test/sanity/Crash.java
new file mode 100644
index 0000000..8ada290
--- /dev/null
+++ b/test/failure_handler/test/sanity/Crash.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2015, 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 sun.misc.Unsafe;
+
+import java.lang.reflect.Field;
+
+/*
+ * @test
+ * @run main/othervm Crash
+ */
+public class Crash {
+ public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
+ Field f = Unsafe.class.getDeclaredField("theUnsafe");
+ f.setAccessible(true);
+ Unsafe u = (Unsafe) f.get(null);
+ u.setMemory(0, 42, (byte) 0xFF);
+ }
+}
diff --git a/test/failure_handler/test/sanity/Deadlock.java b/test/failure_handler/test/sanity/Deadlock.java
new file mode 100644
index 0000000..d74c7a5
--- /dev/null
+++ b/test/failure_handler/test/sanity/Deadlock.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2015, 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.
+ */
+
+
+/*
+ * @test
+ * @summary Deadlocked client
+ */
+public class Deadlock {
+ public double e;
+ private volatile int i;
+
+ public static void main(String[] args) {
+ new Deadlock().test();
+ }
+ private void test() {
+ final Object a = new Object();
+ final Object b = new Object();
+
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ synchronized (a) {
+ do {
+ i |= 1;
+ } while (i != 3);
+
+ synchronized (b) {
+ e = 1;
+ }
+ }
+ }}).start();
+
+ synchronized (b) {
+ do {
+ i |= 2;
+ } while (i != 3);
+ synchronized (a) {
+ e = 2;
+ }
+ }
+ }
+}
diff --git a/test/failure_handler/test/sanity/Livelock.java b/test/failure_handler/test/sanity/Livelock.java
new file mode 100644
index 0000000..6ab96fd
--- /dev/null
+++ b/test/failure_handler/test/sanity/Livelock.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2015, 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.
+ */
+
+/*
+ * @test
+ * @summary Busy infinite loop client, calculating E number
+ */
+public class Livelock {
+
+ public static double elim;
+
+ public static void main(String[] args) {
+ System.out.printf(
+ "%24s %24s %24s %24s %24s %24s%n",
+ "n", "n!", "e = lim(...)", "e = taylor series",
+ "err e-lim", "err e-taylor");
+
+ while (true) {
+ double esum = 2;
+ double nfac = 1;
+ double iter = 1;
+ for (double n = 1; !Double.isInfinite(n) && !Double.isNaN(n) ; n = n * 2) {
+ elim = Math.pow(1 + 1 / n, n);
+
+ iter += 1;
+ nfac *= iter;
+ esum += 1 / nfac;
+
+ System.out.printf("% 24.16e % 24.16e % 24.16e % 24.16e"
+ + "%- 24.16e %- 24.16e%n",
+ n, nfac, elim, esum, (Math.E - elim), (Math.E - esum));
+ }
+ }
+ }
+}
diff --git a/test/failure_handler/test/sanity/OOME.java b/test/failure_handler/test/sanity/OOME.java
new file mode 100644
index 0000000..6cec15b
--- /dev/null
+++ b/test/failure_handler/test/sanity/OOME.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2015, 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.util.LinkedList;
+
+/*
+ * @test
+ * @summary Slowly eat all memory in an infinite loop
+ * @run main/othervm Crash
+ */
+public class OOME {
+ @SuppressWarnings ("UnusedDeclaration")
+ private static Object garbage;
+ public static void main(String args[]) {
+
+ int chunkSize = 0x8000;
+ LinkedList<int[]> list = new LinkedList<>();
+ garbage = list;
+
+ while (true) {
+ try {
+ list.add(new int[chunkSize]);
+ } catch (OutOfMemoryError e) {
+ chunkSize >>= 1;
+ }
+ }
+ }
+}
diff --git a/test/failure_handler/test/sanity/Suicide.java b/test/failure_handler/test/sanity/Suicide.java
new file mode 100644
index 0000000..7f978e0
--- /dev/null
+++ b/test/failure_handler/test/sanity/Suicide.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2015, 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.lang.management.ManagementFactory;
+
+/*
+ * @test
+ * @summary Suicide test
+ * @run main/othervm Suicide
+ */
+public class Suicide {
+ public static void main(String[] args) {
+ String cmd = null;
+ try {
+ String pidStr = ManagementFactory.getRuntimeMXBean().getName()
+ .split("@")[0];
+ String osName = System.getProperty("os.name");
+ if (osName.contains("Windows")) {
+ cmd = "taskkill.exe /F /PID " + pidStr;
+ } else {
+ cmd = "kill -9 " + pidStr;
+ }
+
+ System.out.printf("executing `%s'%n", cmd);
+ Runtime.getRuntime().exec(cmd);
+ Thread.sleep(2000);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ System.err.printf("TEST/ENV BUG: %s didn't kill JVM%n", cmd);
+ System.exit(1);
+ }
+}
diff --git a/test/failure_handler/test/sanity/SystemExit.java b/test/failure_handler/test/sanity/SystemExit.java
new file mode 100644
index 0000000..e0eabb7
--- /dev/null
+++ b/test/failure_handler/test/sanity/SystemExit.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2015, 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.
+ */
+
+/*
+ * @test
+ * @run main/othervm SystemExit
+ */
+public class SystemExit {
+ public static void main(String[] args) {
+ System.exit(1);
+ }
+}
diff --git a/test/failure_handler/test/sanity/ThrowError.java b/test/failure_handler/test/sanity/ThrowError.java
new file mode 100644
index 0000000..45100d6
--- /dev/null
+++ b/test/failure_handler/test/sanity/ThrowError.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2015, 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.
+ */
+
+/*
+ * @test
+ */
+public class ThrowError {
+ public static void main(String[] args) {
+ throw new Error("TEST FAIL");
+ }
+}
diff --git a/test/failure_handler/test/sanity/WaitForDeadlock.java b/test/failure_handler/test/sanity/WaitForDeadlock.java
new file mode 100644
index 0000000..98f14bc
--- /dev/null
+++ b/test/failure_handler/test/sanity/WaitForDeadlock.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2015, 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.IOException;
+import java.nio.file.Paths;
+
+/*
+ * @test
+ * @build Deadlock
+ * @run driver WaitForDeadlock
+ */
+public class WaitForDeadlock {
+ public static void main(String[] args) throws Exception {
+ System.out.println("START");
+ ProcessBuilder pb = new ProcessBuilder(Paths.get(
+ System.getProperty("test.jdk"), "bin", "java").toString(),
+ "-cp", System.getProperty("java.class.path"),
+ Deadlock.class.getName());
+ pb.redirectError(ProcessBuilder.Redirect.to(Paths.get("out").toFile()));
+ pb.redirectOutput(ProcessBuilder.Redirect.to(Paths.get("err").toFile()));
+ int r = pb.start().waitFor();
+ System.out.println("END. " + r);
+ }
+}
diff --git a/test/failure_handler/test/unit/jdk/test/failurehandler/value/DefaultParserTest.java b/test/failure_handler/test/unit/jdk/test/failurehandler/value/DefaultParserTest.java
new file mode 100644
index 0000000..55297e0
--- /dev/null
+++ b/test/failure_handler/test/unit/jdk/test/failurehandler/value/DefaultParserTest.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.value;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class DefaultParserTest {
+ @Test
+ public void testParseStringArray() throws Exception {
+ DefaultParser parser = new DefaultParser();
+ String line = "a aa aaa";
+ String[] result = {"a", "aa", "", "", "aaa"};
+ Assert.assertArrayEquals(result,
+ (Object[]) parser.parse(result.getClass(), line, " "));
+
+ line = null;
+ result = new String[]{};
+ Assert.assertArrayEquals(result,
+ (Object[]) parser.parse(result.getClass(), line, " "));
+ }
+
+ @Test
+ public void testParseObjectArray() throws Exception {
+ DefaultParser parser = new DefaultParser();
+ String line = "a aa aaa";
+ String[] result = {"a", "aa", "", "", "aaa"};
+ Assert.assertArrayEquals(result,
+ (String[]) parser.parse(result.getClass(), line, " "));
+ Object[] result2 = {"a", "aa", "", "", "aaa"};
+ Assert.assertArrayEquals(result2,
+ (Object[]) parser.parse(result.getClass(), line, " "));
+ }
+
+ @Test
+ public void testParseCharArray() throws Exception {
+ DefaultParser parser = new DefaultParser();
+ String line = "a b c a";
+ char[] result = {'a', 'b', 'c', 'a'};
+ Assert.assertArrayEquals(result,
+ (char[]) parser.parse(result.getClass(), line, " "));
+
+ Character[] result2 = {'a', 'b', 'c', 'a'};
+ Assert.assertArrayEquals(result2,
+ (Character[]) parser.parse(result2.getClass(), line, " "));
+ }
+
+ @Test
+ public void testParseBoolean() throws Exception {
+ DefaultParser parser = new DefaultParser();
+ String line = "a b c a";
+ Assert.assertEquals(false,
+ (boolean) parser.parse(boolean.class, line, " "));
+ Assert.assertEquals(Boolean.FALSE,
+ parser.parse(Boolean.class, line, " "));
+ line = "trUe";
+ Assert.assertEquals(true,
+ (boolean) parser.parse(boolean.class, line, " "));
+ Assert.assertEquals(Boolean.TRUE,
+ parser.parse(Boolean.class, line, " "));
+ }
+
+ @Test
+ public void testParseShort() throws Exception {
+ DefaultParser parser = new DefaultParser();
+ Assert.assertSame("10", (short) 10,
+ parser.parse(short.class, "10", " "));
+ Assert.assertSame("010", (short) 8,
+ parser.parse(short.class, "010", " "));
+ Assert.assertSame("0x10", (short) 16,
+ parser.parse(short.class, "0x10", " "));
+ }
+
+ @Test
+ public void testParseByte() throws Exception {
+ DefaultParser parser = new DefaultParser();
+ Assert.assertSame("11", (byte) 11,
+ parser.parse(byte.class, "11", " "));
+ Assert.assertSame("011", (byte) 9,
+ parser.parse(byte.class, "011", " "));
+ Assert.assertSame("0x11", (byte) 17,
+ parser.parse(byte.class, "0x11", " "));
+ }
+
+ @Test
+ public void testParseInt() throws Exception {
+ DefaultParser parser = new DefaultParser();
+ Assert.assertEquals("20", (int) 20,
+ parser.parse(int.class, "20", " "));
+ Assert.assertEquals("020", (int) 16,
+ parser.parse(int.class, "020", " "));
+ Assert.assertEquals("0x20", (int) 32,
+ parser.parse(int.class, "0x20", " "));
+ }
+
+
+}
diff --git a/test/failure_handler/test/unit/jdk/test/failurehandler/value/ValueHandlerTest.java b/test/failure_handler/test/unit/jdk/test/failurehandler/value/ValueHandlerTest.java
new file mode 100644
index 0000000..51e8205
--- /dev/null
+++ b/test/failure_handler/test/unit/jdk/test/failurehandler/value/ValueHandlerTest.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2015, 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 jdk.test.failurehandler.value;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.lang.reflect.Field;
+import java.util.Properties;
+
+public class ValueHandlerTest {
+ @Test
+ public void testApplyAnonymousPrivateFinalInt() throws Exception {
+ Properties p = new Properties();
+ p.put("int", "010");
+ Object o = new Object() {
+ @Value (name = "int")
+ private final int i1 = -1;
+ };
+ Field f = o.getClass().getDeclaredField("i1");
+ f.setAccessible(true);
+ int value = f.getInt(o);
+ Assert.assertEquals(value, -1);
+ f.setAccessible(false);
+ ValueHandler.apply(o, p, null);
+ f.setAccessible(true);
+ value = f.getInt(o);
+ Assert.assertEquals(value, 8);
+ f.setAccessible(false);
+ }
+
+ @Test
+ public void testApplyPublicStaticWithDefault() throws Exception {
+ Assert.assertEquals(StaticDefaultCase.s, null);
+ Properties p = new Properties();
+ StaticDefaultCase o = new StaticDefaultCase();
+ ValueHandler.apply(o, p, "prefix");
+ Assert.assertEquals(StaticDefaultCase.s, "default");
+ p.put("s", "new2");
+ ValueHandler.apply(o, p, "prefix");
+ Assert.assertEquals(StaticDefaultCase.s, "new2");
+ p.put("prefix.s", "new");
+ ValueHandler.apply(o, p, "prefix");
+ Assert.assertEquals(StaticDefaultCase.s, "new");
+ ValueHandler.apply(o, p, null);
+ Assert.assertEquals(StaticDefaultCase.s, "new2");
+ }
+
+ protected class InnerClass1 {
+ @Value (name = "innerClass")
+ String[] arr = null;
+ }
+
+ public class InnerClass2 extends InnerClass1 {
+ @Value (name = "float")
+ float f = 0.0f;
+
+ @SubValues (prefix = "inner")
+ InnerClass1 inner1 = new InnerClass1();
+
+ @SubValues (prefix = "")
+ InnerClass1 inner2 = new InnerClass1();
+ }
+
+ @Test
+ public void testApplySub() throws Exception {
+ InnerClass2 o = new InnerClass2();
+ Assert.assertArrayEquals(o.arr, null);
+ Assert.assertArrayEquals(o.inner1.arr, null);
+ Assert.assertArrayEquals(o.inner2.arr, null);
+ Assert.assertEquals(o.f, 0.0f, Float.MIN_VALUE);
+
+ Properties p = new Properties();
+ p.put("float", "1.f");
+ p.put("innerClass", "a b");
+ p.put("inner.innerClass", "a b c");
+ ValueHandler.apply(o, p, "");
+ Assert.assertArrayEquals(o.arr, new String[]{"a", "b"});
+ Assert.assertArrayEquals(o.inner1.arr, new String[]{"a", "b", "c"});
+ Assert.assertArrayEquals(o.inner2.arr, new String[]{"a", "b"});
+ Assert.assertEquals(o.f, 1.0f, Float.MIN_VALUE);
+ }
+}
+
+class StaticDefaultCase {
+ @Value (name = "s")
+ @DefaultValue (value = "default")
+ public static String s;
+}
diff --git a/test/fmw/gtest/CHANGES b/test/fmw/gtest/CHANGES
new file mode 100644
index 0000000..0552132
--- /dev/null
+++ b/test/fmw/gtest/CHANGES
@@ -0,0 +1,157 @@
+Changes for 1.7.0:
+
+* New feature: death tests are supported on OpenBSD and in iOS
+ simulator now.
+* New feature: Google Test now implements a protocol to allow
+ a test runner to detect that a test program has exited
+ prematurely and report it as a failure (before it would be
+ falsely reported as a success if the exit code is 0).
+* New feature: Test::RecordProperty() can now be used outside of the
+ lifespan of a test method, in which case it will be attributed to
+ the current test case or the test program in the XML report.
+* New feature (potentially breaking): --gtest_list_tests now prints
+ the type parameters and value parameters for each test.
+* Improvement: char pointers and char arrays are now escaped properly
+ in failure messages.
+* Improvement: failure summary in XML reports now includes file and
+ line information.
+* Improvement: the <testsuites> XML element now has a timestamp attribute.
+* Improvement: When --gtest_filter is specified, XML report now doesn't
+ contain information about tests that are filtered out.
+* Fixed the bug where long --gtest_filter flag values are truncated in
+ death tests.
+* Potentially breaking change: RUN_ALL_TESTS() is now implemented as a
+ function instead of a macro in order to work better with Clang.
+* Compatibility fixes with C++ 11 and various platforms.
+* Bug/warning fixes.
+
+Changes for 1.6.0:
+
+* New feature: ADD_FAILURE_AT() for reporting a test failure at the
+ given source location -- useful for writing testing utilities.
+* New feature: the universal value printer is moved from Google Mock
+ to Google Test.
+* New feature: type parameters and value parameters are reported in
+ the XML report now.
+* A gtest_disable_pthreads CMake option.
+* Colored output works in GNU Screen sessions now.
+* Parameters of value-parameterized tests are now printed in the
+ textual output.
+* Failures from ad hoc test assertions run before RUN_ALL_TESTS() are
+ now correctly reported.
+* Arguments of ASSERT_XY and EXPECT_XY no longer need to support << to
+ ostream.
+* More complete handling of exceptions.
+* GTEST_ASSERT_XY can be used instead of ASSERT_XY in case the latter
+ name is already used by another library.
+* --gtest_catch_exceptions is now true by default, allowing a test
+ program to continue after an exception is thrown.
+* Value-parameterized test fixtures can now derive from Test and
+ WithParamInterface<T> separately, easing conversion of legacy tests.
+* Death test messages are clearly marked to make them more
+ distinguishable from other messages.
+* Compatibility fixes for Android, Google Native Client, MinGW, HP UX,
+ PowerPC, Lucid autotools, libCStd, Sun C++, Borland C++ Builder (Code Gear),
+ IBM XL C++ (Visual Age C++), and C++0x.
+* Bug fixes and implementation clean-ups.
+* Potentially incompatible changes: disables the harmful 'make install'
+ command in autotools.
+
+Changes for 1.5.0:
+
+ * New feature: assertions can be safely called in multiple threads
+ where the pthreads library is available.
+ * New feature: predicates used inside EXPECT_TRUE() and friends
+ can now generate custom failure messages.
+ * New feature: Google Test can now be compiled as a DLL.
+ * New feature: fused source files are included.
+ * New feature: prints help when encountering unrecognized Google Test flags.
+ * Experimental feature: CMake build script (requires CMake 2.6.4+).
+ * Experimental feature: the Pump script for meta programming.
+ * double values streamed to an assertion are printed with enough precision
+ to differentiate any two different values.
+ * Google Test now works on Solaris and AIX.
+ * Build and test script improvements.
+ * Bug fixes and implementation clean-ups.
+
+ Potentially breaking changes:
+
+ * Stopped supporting VC++ 7.1 with exceptions disabled.
+ * Dropped support for 'make install'.
+
+Changes for 1.4.0:
+
+ * New feature: the event listener API
+ * New feature: test shuffling
+ * New feature: the XML report format is closer to junitreport and can
+ be parsed by Hudson now.
+ * New feature: when a test runs under Visual Studio, its failures are
+ integrated in the IDE.
+ * New feature: /MD(d) versions of VC++ projects.
+ * New feature: elapsed time for the tests is printed by default.
+ * New feature: comes with a TR1 tuple implementation such that Boost
+ is no longer needed for Combine().
+ * New feature: EXPECT_DEATH_IF_SUPPORTED macro and friends.
+ * New feature: the Xcode project can now produce static gtest
+ libraries in addition to a framework.
+ * Compatibility fixes for Solaris, Cygwin, minGW, Windows Mobile,
+ Symbian, gcc, and C++Builder.
+ * Bug fixes and implementation clean-ups.
+
+Changes for 1.3.0:
+
+ * New feature: death tests on Windows, Cygwin, and Mac.
+ * New feature: ability to use Google Test assertions in other testing
+ frameworks.
+ * New feature: ability to run disabled test via
+ --gtest_also_run_disabled_tests.
+ * New feature: the --help flag for printing the usage.
+ * New feature: access to Google Test flag values in user code.
+ * New feature: a script that packs Google Test into one .h and one
+ .cc file for easy deployment.
+ * New feature: support for distributing test functions to multiple
+ machines (requires support from the test runner).
+ * Bug fixes and implementation clean-ups.
+
+Changes for 1.2.1:
+
+ * Compatibility fixes for Linux IA-64 and IBM z/OS.
+ * Added support for using Boost and other TR1 implementations.
+ * Changes to the build scripts to support upcoming release of Google C++
+ Mocking Framework.
+ * Added Makefile to the distribution package.
+ * Improved build instructions in README.
+
+Changes for 1.2.0:
+
+ * New feature: value-parameterized tests.
+ * New feature: the ASSERT/EXPECT_(NON)FATAL_FAILURE(_ON_ALL_THREADS)
+ macros.
+ * Changed the XML report format to match JUnit/Ant's.
+ * Added tests to the Xcode project.
+ * Added scons/SConscript for building with SCons.
+ * Added src/gtest-all.cc for building Google Test from a single file.
+ * Fixed compatibility with Solaris and z/OS.
+ * Enabled running Python tests on systems with python 2.3 installed,
+ e.g. Mac OS X 10.4.
+ * Bug fixes.
+
+Changes for 1.1.0:
+
+ * New feature: type-parameterized tests.
+ * New feature: exception assertions.
+ * New feature: printing elapsed time of tests.
+ * Improved the robustness of death tests.
+ * Added an Xcode project and samples.
+ * Adjusted the output format on Windows to be understandable by Visual Studio.
+ * Minor bug fixes.
+
+Changes for 1.0.1:
+
+ * Added project files for Visual Studio 7.1.
+ * Fixed issues with compiling on Mac OS X.
+ * Fixed issues with compiling on Cygwin.
+
+Changes for 1.0.0:
+
+ * Initial Open Source release of Google Test
diff --git a/test/fmw/gtest/LICENSE b/test/fmw/gtest/LICENSE
new file mode 100644
index 0000000..1941a11
--- /dev/null
+++ b/test/fmw/gtest/LICENSE
@@ -0,0 +1,28 @@
+Copyright 2008, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/test/fmw/gtest/README b/test/fmw/gtest/README
new file mode 100644
index 0000000..26f35a8
--- /dev/null
+++ b/test/fmw/gtest/README
@@ -0,0 +1,435 @@
+Google C++ Testing Framework
+============================
+
+http://code.google.com/p/googletest/
+
+Overview
+--------
+
+Google's framework for writing C++ tests on a variety of platforms
+(Linux, Mac OS X, Windows, Windows CE, Symbian, etc). Based on the
+xUnit architecture. Supports automatic test discovery, a rich set of
+assertions, user-defined assertions, death tests, fatal and non-fatal
+failures, various options for running the tests, and XML test report
+generation.
+
+Please see the project page above for more information as well as the
+mailing list for questions, discussions, and development. There is
+also an IRC channel on OFTC (irc.oftc.net) #gtest available. Please
+join us!
+
+Requirements for End Users
+--------------------------
+
+Google Test is designed to have fairly minimal requirements to build
+and use with your projects, but there are some. Currently, we support
+Linux, Windows, Mac OS X, and Cygwin. We will also make our best
+effort to support other platforms (e.g. Solaris, AIX, and z/OS).
+However, since core members of the Google Test project have no access
+to these platforms, Google Test may have outstanding issues there. If
+you notice any problems on your platform, please notify
+googletestframework@googlegroups.com. Patches for fixing them are
+even more welcome!
+
+### Linux Requirements ###
+
+These are the base requirements to build and use Google Test from a source
+package (as described below):
+ * GNU-compatible Make or gmake
+ * POSIX-standard shell
+ * POSIX(-2) Regular Expressions (regex.h)
+ * A C++98-standard-compliant compiler
+
+### Windows Requirements ###
+
+ * Microsoft Visual C++ 7.1 or newer
+
+### Cygwin Requirements ###
+
+ * Cygwin 1.5.25-14 or newer
+
+### Mac OS X Requirements ###
+
+ * Mac OS X 10.4 Tiger or newer
+ * Developer Tools Installed
+
+Also, you'll need CMake 2.6.4 or higher if you want to build the
+samples using the provided CMake script, regardless of the platform.
+
+Requirements for Contributors
+-----------------------------
+
+We welcome patches. If you plan to contribute a patch, you need to
+build Google Test and its own tests from an SVN checkout (described
+below), which has further requirements:
+
+ * Python version 2.3 or newer (for running some of the tests and
+ re-generating certain source files from templates)
+ * CMake 2.6.4 or newer
+
+Getting the Source
+------------------
+
+There are two primary ways of getting Google Test's source code: you
+can download a stable source release in your preferred archive format,
+or directly check out the source from our Subversion (SVN) repositary.
+The SVN checkout requires a few extra steps and some extra software
+packages on your system, but lets you track the latest development and
+make patches much more easily, so we highly encourage it.
+
+### Source Package ###
+
+Google Test is released in versioned source packages which can be
+downloaded from the download page [1]. Several different archive
+formats are provided, but the only difference is the tools used to
+manipulate them, and the size of the resulting file. Download
+whichever you are most comfortable with.
+
+ [1] http://code.google.com/p/googletest/downloads/list
+
+Once the package is downloaded, expand it using whichever tools you
+prefer for that type. This will result in a new directory with the
+name "gtest-X.Y.Z" which contains all of the source code. Here are
+some examples on Linux:
+
+ tar -xvzf gtest-X.Y.Z.tar.gz
+ tar -xvjf gtest-X.Y.Z.tar.bz2
+ unzip gtest-X.Y.Z.zip
+
+### SVN Checkout ###
+
+To check out the main branch (also known as the "trunk") of Google
+Test, run the following Subversion command:
+
+ svn checkout http://googletest.googlecode.com/svn/trunk/ gtest-svn
+
+Setting up the Build
+--------------------
+
+To build Google Test and your tests that use it, you need to tell your
+build system where to find its headers and source files. The exact
+way to do it depends on which build system you use, and is usually
+straightforward.
+
+### Generic Build Instructions ###
+
+Suppose you put Google Test in directory ${GTEST_DIR}. To build it,
+create a library build target (or a project as called by Visual Studio
+and Xcode) to compile
+
+ ${GTEST_DIR}/src/gtest-all.cc
+
+with ${GTEST_DIR}/include in the system header search path and ${GTEST_DIR}
+in the normal header search path. Assuming a Linux-like system and gcc,
+something like the following will do:
+
+ g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} \
+ -pthread -c ${GTEST_DIR}/src/gtest-all.cc
+ ar -rv libgtest.a gtest-all.o
+
+(We need -pthread as Google Test uses threads.)
+
+Next, you should compile your test source file with
+${GTEST_DIR}/include in the system header search path, and link it
+with gtest and any other necessary libraries:
+
+ g++ -isystem ${GTEST_DIR}/include -pthread path/to/your_test.cc libgtest.a \
+ -o your_test
+
+As an example, the make/ directory contains a Makefile that you can
+use to build Google Test on systems where GNU make is available
+(e.g. Linux, Mac OS X, and Cygwin). It doesn't try to build Google
+Test's own tests. Instead, it just builds the Google Test library and
+a sample test. You can use it as a starting point for your own build
+script.
+
+If the default settings are correct for your environment, the
+following commands should succeed:
+
+ cd ${GTEST_DIR}/make
+ make
+ ./sample1_unittest
+
+If you see errors, try to tweak the contents of make/Makefile to make
+them go away. There are instructions in make/Makefile on how to do
+it.
+
+### Using CMake ###
+
+Google Test comes with a CMake build script (CMakeLists.txt) that can
+be used on a wide range of platforms ("C" stands for cross-platofrm.).
+If you don't have CMake installed already, you can download it for
+free from http://www.cmake.org/.
+
+CMake works by generating native makefiles or build projects that can
+be used in the compiler environment of your choice. The typical
+workflow starts with:
+
+ mkdir mybuild # Create a directory to hold the build output.
+ cd mybuild
+ cmake ${GTEST_DIR} # Generate native build scripts.
+
+If you want to build Google Test's samples, you should replace the
+last command with
+
+ cmake -Dgtest_build_samples=ON ${GTEST_DIR}
+
+If you are on a *nix system, you should now see a Makefile in the
+current directory. Just type 'make' to build gtest.
+
+If you use Windows and have Vistual Studio installed, a gtest.sln file
+and several .vcproj files will be created. You can then build them
+using Visual Studio.
+
+On Mac OS X with Xcode installed, a .xcodeproj file will be generated.
+
+### Legacy Build Scripts ###
+
+Before settling on CMake, we have been providing hand-maintained build
+projects/scripts for Visual Studio, Xcode, and Autotools. While we
+continue to provide them for convenience, they are not actively
+maintained any more. We highly recommend that you follow the
+instructions in the previous two sections to integrate Google Test
+with your existing build system.
+
+If you still need to use the legacy build scripts, here's how:
+
+The msvc\ folder contains two solutions with Visual C++ projects.
+Open the gtest.sln or gtest-md.sln file using Visual Studio, and you
+are ready to build Google Test the same way you build any Visual
+Studio project. Files that have names ending with -md use DLL
+versions of Microsoft runtime libraries (the /MD or the /MDd compiler
+option). Files without that suffix use static versions of the runtime
+libraries (the /MT or the /MTd option). Please note that one must use
+the same option to compile both gtest and the test code. If you use
+Visual Studio 2005 or above, we recommend the -md version as /MD is
+the default for new projects in these versions of Visual Studio.
+
+On Mac OS X, open the gtest.xcodeproj in the xcode/ folder using
+Xcode. Build the "gtest" target. The universal binary framework will
+end up in your selected build directory (selected in the Xcode
+"Preferences..." -> "Building" pane and defaults to xcode/build).
+Alternatively, at the command line, enter:
+
+ xcodebuild
+
+This will build the "Release" configuration of gtest.framework in your
+default build location. See the "xcodebuild" man page for more
+information about building different configurations and building in
+different locations.
+
+If you wish to use the Google Test Xcode project with Xcode 4.x and
+above, you need to either:
+ * update the SDK configuration options in xcode/Config/General.xconfig.
+ Comment options SDKROOT, MACOS_DEPLOYMENT_TARGET, and GCC_VERSION. If
+ you choose this route you lose the ability to target earlier versions
+ of MacOS X.
+ * Install an SDK for an earlier version. This doesn't appear to be
+ supported by Apple, but has been reported to work
+ (http://stackoverflow.com/questions/5378518).
+
+Tweaking Google Test
+--------------------
+
+Google Test can be used in diverse environments. The default
+configuration may not work (or may not work well) out of the box in
+some environments. However, you can easily tweak Google Test by
+defining control macros on the compiler command line. Generally,
+these macros are named like GTEST_XYZ and you define them to either 1
+or 0 to enable or disable a certain feature.
+
+We list the most frequently used macros below. For a complete list,
+see file include/gtest/internal/gtest-port.h.
+
+### Choosing a TR1 Tuple Library ###
+
+Some Google Test features require the C++ Technical Report 1 (TR1)
+tuple library, which is not yet available with all compilers. The
+good news is that Google Test implements a subset of TR1 tuple that's
+enough for its own need, and will automatically use this when the
+compiler doesn't provide TR1 tuple.
+
+Usually you don't need to care about which tuple library Google Test
+uses. However, if your project already uses TR1 tuple, you need to
+tell Google Test to use the same TR1 tuple library the rest of your
+project uses, or the two tuple implementations will clash. To do
+that, add
+
+ -DGTEST_USE_OWN_TR1_TUPLE=0
+
+to the compiler flags while compiling Google Test and your tests. If
+you want to force Google Test to use its own tuple library, just add
+
+ -DGTEST_USE_OWN_TR1_TUPLE=1
+
+to the compiler flags instead.
+
+If you don't want Google Test to use tuple at all, add
+
+ -DGTEST_HAS_TR1_TUPLE=0
+
+and all features using tuple will be disabled.
+
+### Multi-threaded Tests ###
+
+Google Test is thread-safe where the pthread library is available.
+After #include "gtest/gtest.h", you can check the GTEST_IS_THREADSAFE
+macro to see whether this is the case (yes if the macro is #defined to
+1, no if it's undefined.).
+
+If Google Test doesn't correctly detect whether pthread is available
+in your environment, you can force it with
+
+ -DGTEST_HAS_PTHREAD=1
+
+or
+
+ -DGTEST_HAS_PTHREAD=0
+
+When Google Test uses pthread, you may need to add flags to your
+compiler and/or linker to select the pthread library, or you'll get
+link errors. If you use the CMake script or the deprecated Autotools
+script, this is taken care of for you. If you use your own build
+script, you'll need to read your compiler and linker's manual to
+figure out what flags to add.
+
+### As a Shared Library (DLL) ###
+
+Google Test is compact, so most users can build and link it as a
+static library for the simplicity. You can choose to use Google Test
+as a shared library (known as a DLL on Windows) if you prefer.
+
+To compile *gtest* as a shared library, add
+
+ -DGTEST_CREATE_SHARED_LIBRARY=1
+
+to the compiler flags. You'll also need to tell the linker to produce
+a shared library instead - consult your linker's manual for how to do
+it.
+
+To compile your *tests* that use the gtest shared library, add
+
+ -DGTEST_LINKED_AS_SHARED_LIBRARY=1
+
+to the compiler flags.
+
+Note: while the above steps aren't technically necessary today when
+using some compilers (e.g. GCC), they may become necessary in the
+future, if we decide to improve the speed of loading the library (see
+http://gcc.gnu.org/wiki/Visibility for details). Therefore you are
+recommended to always add the above flags when using Google Test as a
+shared library. Otherwise a future release of Google Test may break
+your build script.
+
+### Avoiding Macro Name Clashes ###
+
+In C++, macros don't obey namespaces. Therefore two libraries that
+both define a macro of the same name will clash if you #include both
+definitions. In case a Google Test macro clashes with another
+library, you can force Google Test to rename its macro to avoid the
+conflict.
+
+Specifically, if both Google Test and some other code define macro
+FOO, you can add
+
+ -DGTEST_DONT_DEFINE_FOO=1
+
+to the compiler flags to tell Google Test to change the macro's name
+from FOO to GTEST_FOO. Currently FOO can be FAIL, SUCCEED, or TEST.
+For example, with -DGTEST_DONT_DEFINE_TEST=1, you'll need to write
+
+ GTEST_TEST(SomeTest, DoesThis) { ... }
+
+instead of
+
+ TEST(SomeTest, DoesThis) { ... }
+
+in order to define a test.
+
+Upgrating from an Earlier Version
+---------------------------------
+
+We strive to keep Google Test releases backward compatible.
+Sometimes, though, we have to make some breaking changes for the
+users' long-term benefits. This section describes what you'll need to
+do if you are upgrading from an earlier version of Google Test.
+
+### Upgrading from 1.3.0 or Earlier ###
+
+You may need to explicitly enable or disable Google Test's own TR1
+tuple library. See the instructions in section "Choosing a TR1 Tuple
+Library".
+
+### Upgrading from 1.4.0 or Earlier ###
+
+The Autotools build script (configure + make) is no longer officially
+supportted. You are encouraged to migrate to your own build system or
+use CMake. If you still need to use Autotools, you can find
+instructions in the README file from Google Test 1.4.0.
+
+On platforms where the pthread library is available, Google Test uses
+it in order to be thread-safe. See the "Multi-threaded Tests" section
+for what this means to your build script.
+
+If you use Microsoft Visual C++ 7.1 with exceptions disabled, Google
+Test will no longer compile. This should affect very few people, as a
+large portion of STL (including <string>) doesn't compile in this mode
+anyway. We decided to stop supporting it in order to greatly simplify
+Google Test's implementation.
+
+Developing Google Test
+----------------------
+
+This section discusses how to make your own changes to Google Test.
+
+### Testing Google Test Itself ###
+
+To make sure your changes work as intended and don't break existing
+functionality, you'll want to compile and run Google Test's own tests.
+For that you can use CMake:
+
+ mkdir mybuild
+ cd mybuild
+ cmake -Dgtest_build_tests=ON ${GTEST_DIR}
+
+Make sure you have Python installed, as some of Google Test's tests
+are written in Python. If the cmake command complains about not being
+able to find Python ("Could NOT find PythonInterp (missing:
+PYTHON_EXECUTABLE)"), try telling it explicitly where your Python
+executable can be found:
+
+ cmake -DPYTHON_EXECUTABLE=path/to/python -Dgtest_build_tests=ON ${GTEST_DIR}
+
+Next, you can build Google Test and all of its own tests. On *nix,
+this is usually done by 'make'. To run the tests, do
+
+ make test
+
+All tests should pass.
+
+### Regenerating Source Files ###
+
+Some of Google Test's source files are generated from templates (not
+in the C++ sense) using a script. A template file is named FOO.pump,
+where FOO is the name of the file it will generate. For example, the
+file include/gtest/internal/gtest-type-util.h.pump is used to generate
+gtest-type-util.h in the same directory.
+
+Normally you don't need to worry about regenerating the source files,
+unless you need to modify them. In that case, you should modify the
+corresponding .pump files instead and run the pump.py Python script to
+regenerate them. You can find pump.py in the scripts/ directory.
+Read the Pump manual [2] for how to use it.
+
+ [2] http://code.google.com/p/googletest/wiki/PumpManual
+
+### Contributing a Patch ###
+
+We welcome patches. Please read the Google Test developer's guide [3]
+for how you can contribute. In particular, make sure you have signed
+the Contributor License Agreement, or we won't be able to accept the
+patch.
+
+ [3] http://code.google.com/p/googletest/wiki/GoogleTestDevGuide
+
+Happy testing!
diff --git a/test/fmw/gtest/include/gtest/gtest-death-test.h b/test/fmw/gtest/include/gtest/gtest-death-test.h
new file mode 100644
index 0000000..957a69c
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/gtest-death-test.h
@@ -0,0 +1,294 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file defines the public API for death tests. It is
+// #included by gtest.h so a user doesn't need to include this
+// directly.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
+#define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
+
+#include "gtest/internal/gtest-death-test-internal.h"
+
+namespace testing {
+
+// This flag controls the style of death tests. Valid values are "threadsafe",
+// meaning that the death test child process will re-execute the test binary
+// from the start, running only a single death test, or "fast",
+// meaning that the child process will execute the test logic immediately
+// after forking.
+GTEST_DECLARE_string_(death_test_style);
+
+#if GTEST_HAS_DEATH_TEST
+
+namespace internal {
+
+// Returns a Boolean value indicating whether the caller is currently
+// executing in the context of the death test child process. Tools such as
+// Valgrind heap checkers may need this to modify their behavior in death
+// tests. IMPORTANT: This is an internal utility. Using it may break the
+// implementation of death tests. User code MUST NOT use it.
+GTEST_API_ bool InDeathTestChild();
+
+} // namespace internal
+
+// The following macros are useful for writing death tests.
+
+// Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is
+// executed:
+//
+// 1. It generates a warning if there is more than one active
+// thread. This is because it's safe to fork() or clone() only
+// when there is a single thread.
+//
+// 2. The parent process clone()s a sub-process and runs the death
+// test in it; the sub-process exits with code 0 at the end of the
+// death test, if it hasn't exited already.
+//
+// 3. The parent process waits for the sub-process to terminate.
+//
+// 4. The parent process checks the exit code and error message of
+// the sub-process.
+//
+// Examples:
+//
+// ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number");
+// for (int i = 0; i < 5; i++) {
+// EXPECT_DEATH(server.ProcessRequest(i),
+// "Invalid request .* in ProcessRequest()")
+// << "Failed to die on request " << i;
+// }
+//
+// ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting");
+//
+// bool KilledBySIGHUP(int exit_code) {
+// return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP;
+// }
+//
+// ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!");
+//
+// On the regular expressions used in death tests:
+//
+// On POSIX-compliant systems (*nix), we use the <regex.h> library,
+// which uses the POSIX extended regex syntax.
+//
+// On other platforms (e.g. Windows), we only support a simple regex
+// syntax implemented as part of Google Test. This limited
+// implementation should be enough most of the time when writing
+// death tests; though it lacks many features you can find in PCRE
+// or POSIX extended regex syntax. For example, we don't support
+// union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and
+// repetition count ("x{5,7}"), among others.
+//
+// Below is the syntax that we do support. We chose it to be a
+// subset of both PCRE and POSIX extended regex, so it's easy to
+// learn wherever you come from. In the following: 'A' denotes a
+// literal character, period (.), or a single \\ escape sequence;
+// 'x' and 'y' denote regular expressions; 'm' and 'n' are for
+// natural numbers.
+//
+// c matches any literal character c
+// \\d matches any decimal digit
+// \\D matches any character that's not a decimal digit
+// \\f matches \f
+// \\n matches \n
+// \\r matches \r
+// \\s matches any ASCII whitespace, including \n
+// \\S matches any character that's not a whitespace
+// \\t matches \t
+// \\v matches \v
+// \\w matches any letter, _, or decimal digit
+// \\W matches any character that \\w doesn't match
+// \\c matches any literal character c, which must be a punctuation
+// . matches any single character except \n
+// A? matches 0 or 1 occurrences of A
+// A* matches 0 or many occurrences of A
+// A+ matches 1 or many occurrences of A
+// ^ matches the beginning of a string (not that of each line)
+// $ matches the end of a string (not that of each line)
+// xy matches x followed by y
+//
+// If you accidentally use PCRE or POSIX extended regex features
+// not implemented by us, you will get a run-time failure. In that
+// case, please try to rewrite your regular expression within the
+// above syntax.
+//
+// This implementation is *not* meant to be as highly tuned or robust
+// as a compiled regex library, but should perform well enough for a
+// death test, which already incurs significant overhead by launching
+// a child process.
+//
+// Known caveats:
+//
+// A "threadsafe" style death test obtains the path to the test
+// program from argv[0] and re-executes it in the sub-process. For
+// simplicity, the current implementation doesn't search the PATH
+// when launching the sub-process. This means that the user must
+// invoke the test program via a path that contains at least one
+// path separator (e.g. path/to/foo_test and
+// /absolute/path/to/bar_test are fine, but foo_test is not). This
+// is rarely a problem as people usually don't put the test binary
+// directory in PATH.
+//
+// TODO(wan@google.com): make thread-safe death tests search the PATH.
+
+// Asserts that a given statement causes the program to exit, with an
+// integer exit status that satisfies predicate, and emitting error output
+// that matches regex.
+# define ASSERT_EXIT(statement, predicate, regex) \
+ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_)
+
+// Like ASSERT_EXIT, but continues on to successive tests in the
+// test case, if any:
+# define EXPECT_EXIT(statement, predicate, regex) \
+ GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_)
+
+// Asserts that a given statement causes the program to exit, either by
+// explicitly exiting with a nonzero exit code or being killed by a
+// signal, and emitting error output that matches regex.
+# define ASSERT_DEATH(statement, regex) \
+ ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+
+// Like ASSERT_DEATH, but continues on to successive tests in the
+// test case, if any:
+# define EXPECT_DEATH(statement, regex) \
+ EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
+
+// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*:
+
+// Tests that an exit code describes a normal exit with a given exit code.
+class GTEST_API_ ExitedWithCode {
+ public:
+ explicit ExitedWithCode(int exit_code);
+ bool operator()(int exit_status) const;
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ExitedWithCode& other);
+
+ const int exit_code_;
+};
+
+# if !GTEST_OS_WINDOWS
+// Tests that an exit code describes an exit due to termination by a
+// given signal.
+class GTEST_API_ KilledBySignal {
+ public:
+ explicit KilledBySignal(int signum);
+ bool operator()(int exit_status) const;
+ private:
+ const int signum_;
+};
+# endif // !GTEST_OS_WINDOWS
+
+// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode.
+// The death testing framework causes this to have interesting semantics,
+// since the sideeffects of the call are only visible in opt mode, and not
+// in debug mode.
+//
+// In practice, this can be used to test functions that utilize the
+// LOG(DFATAL) macro using the following style:
+//
+// int DieInDebugOr12(int* sideeffect) {
+// if (sideeffect) {
+// *sideeffect = 12;
+// }
+// LOG(DFATAL) << "death";
+// return 12;
+// }
+//
+// TEST(TestCase, TestDieOr12WorksInDgbAndOpt) {
+// int sideeffect = 0;
+// // Only asserts in dbg.
+// EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death");
+//
+// #ifdef NDEBUG
+// // opt-mode has sideeffect visible.
+// EXPECT_EQ(12, sideeffect);
+// #else
+// // dbg-mode no visible sideeffect.
+// EXPECT_EQ(0, sideeffect);
+// #endif
+// }
+//
+// This will assert that DieInDebugReturn12InOpt() crashes in debug
+// mode, usually due to a DCHECK or LOG(DFATAL), but returns the
+// appropriate fallback value (12 in this case) in opt mode. If you
+// need to test that a function has appropriate side-effects in opt
+// mode, include assertions against the side-effects. A general
+// pattern for this is:
+//
+// EXPECT_DEBUG_DEATH({
+// // Side-effects here will have an effect after this statement in
+// // opt mode, but none in debug mode.
+// EXPECT_EQ(12, DieInDebugOr12(&sideeffect));
+// }, "death");
+//
+# ifdef NDEBUG
+
+# define EXPECT_DEBUG_DEATH(statement, regex) \
+ GTEST_EXECUTE_STATEMENT_(statement, regex)
+
+# define ASSERT_DEBUG_DEATH(statement, regex) \
+ GTEST_EXECUTE_STATEMENT_(statement, regex)
+
+# else
+
+# define EXPECT_DEBUG_DEATH(statement, regex) \
+ EXPECT_DEATH(statement, regex)
+
+# define ASSERT_DEBUG_DEATH(statement, regex) \
+ ASSERT_DEATH(statement, regex)
+
+# endif // NDEBUG for EXPECT_DEBUG_DEATH
+#endif // GTEST_HAS_DEATH_TEST
+
+// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and
+// ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if
+// death tests are supported; otherwise they just issue a warning. This is
+// useful when you are combining death test assertions with normal test
+// assertions in one test.
+#if GTEST_HAS_DEATH_TEST
+# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
+ EXPECT_DEATH(statement, regex)
+# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
+ ASSERT_DEATH(statement, regex)
+#else
+# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
+ GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, )
+# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
+ GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return)
+#endif
+
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
diff --git a/test/fmw/gtest/include/gtest/gtest-message.h b/test/fmw/gtest/include/gtest/gtest-message.h
new file mode 100644
index 0000000..fe879bc
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/gtest-message.h
@@ -0,0 +1,250 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file defines the Message class.
+//
+// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
+// leave some internal implementation details in this header file.
+// They are clearly marked by comments like this:
+//
+// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+//
+// Such code is NOT meant to be used by a user directly, and is subject
+// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
+// program!
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
+#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
+
+#include <limits>
+
+#include "gtest/internal/gtest-port.h"
+
+// Ensures that there is at least one operator<< in the global namespace.
+// See Message& operator<<(...) below for why.
+void operator<<(const testing::internal::Secret&, int);
+
+namespace testing {
+
+// The Message class works like an ostream repeater.
+//
+// Typical usage:
+//
+// 1. You stream a bunch of values to a Message object.
+// It will remember the text in a stringstream.
+// 2. Then you stream the Message object to an ostream.
+// This causes the text in the Message to be streamed
+// to the ostream.
+//
+// For example;
+//
+// testing::Message foo;
+// foo << 1 << " != " << 2;
+// std::cout << foo;
+//
+// will print "1 != 2".
+//
+// Message is not intended to be inherited from. In particular, its
+// destructor is not virtual.
+//
+// Note that stringstream behaves differently in gcc and in MSVC. You
+// can stream a NULL char pointer to it in the former, but not in the
+// latter (it causes an access violation if you do). The Message
+// class hides this difference by treating a NULL char pointer as
+// "(null)".
+class GTEST_API_ Message {
+ private:
+ // The type of basic IO manipulators (endl, ends, and flush) for
+ // narrow streams.
+ typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&);
+
+ public:
+ // Constructs an empty Message.
+ Message();
+
+ // Copy constructor.
+ Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT
+ *ss_ << msg.GetString();
+ }
+
+ // Constructs a Message from a C-string.
+ explicit Message(const char* str) : ss_(new ::std::stringstream) {
+ *ss_ << str;
+ }
+
+#if GTEST_OS_SYMBIAN
+ // Streams a value (either a pointer or not) to this object.
+ template <typename T>
+ inline Message& operator <<(const T& value) {
+ StreamHelper(typename internal::is_pointer<T>::type(), value);
+ return *this;
+ }
+#else
+ // Streams a non-pointer value to this object.
+ template <typename T>
+ inline Message& operator <<(const T& val) {
+ // Some libraries overload << for STL containers. These
+ // overloads are defined in the global namespace instead of ::std.
+ //
+ // C++'s symbol lookup rule (i.e. Koenig lookup) says that these
+ // overloads are visible in either the std namespace or the global
+ // namespace, but not other namespaces, including the testing
+ // namespace which Google Test's Message class is in.
+ //
+ // To allow STL containers (and other types that has a << operator
+ // defined in the global namespace) to be used in Google Test
+ // assertions, testing::Message must access the custom << operator
+ // from the global namespace. With this using declaration,
+ // overloads of << defined in the global namespace and those
+ // visible via Koenig lookup are both exposed in this function.
+ using ::operator <<;
+ *ss_ << val;
+ return *this;
+ }
+
+ // Streams a pointer value to this object.
+ //
+ // This function is an overload of the previous one. When you
+ // stream a pointer to a Message, this definition will be used as it
+ // is more specialized. (The C++ Standard, section
+ // [temp.func.order].) If you stream a non-pointer, then the
+ // previous definition will be used.
+ //
+ // The reason for this overload is that streaming a NULL pointer to
+ // ostream is undefined behavior. Depending on the compiler, you
+ // may get "0", "(nil)", "(null)", or an access violation. To
+ // ensure consistent result across compilers, we always treat NULL
+ // as "(null)".
+ template <typename T>
+ inline Message& operator <<(T* const& pointer) { // NOLINT
+ if (pointer == NULL) {
+ *ss_ << "(null)";
+ } else {
+ *ss_ << pointer;
+ }
+ return *this;
+ }
+#endif // GTEST_OS_SYMBIAN
+
+ // Since the basic IO manipulators are overloaded for both narrow
+ // and wide streams, we have to provide this specialized definition
+ // of operator <<, even though its body is the same as the
+ // templatized version above. Without this definition, streaming
+ // endl or other basic IO manipulators to Message will confuse the
+ // compiler.
+ Message& operator <<(BasicNarrowIoManip val) {
+ *ss_ << val;
+ return *this;
+ }
+
+ // Instead of 1/0, we want to see true/false for bool values.
+ Message& operator <<(bool b) {
+ return *this << (b ? "true" : "false");
+ }
+
+ // These two overloads allow streaming a wide C string to a Message
+ // using the UTF-8 encoding.
+ Message& operator <<(const wchar_t* wide_c_str);
+ Message& operator <<(wchar_t* wide_c_str);
+
+#if GTEST_HAS_STD_WSTRING
+ // Converts the given wide string to a narrow string using the UTF-8
+ // encoding, and streams the result to this Message object.
+ Message& operator <<(const ::std::wstring& wstr);
+#endif // GTEST_HAS_STD_WSTRING
+
+#if GTEST_HAS_GLOBAL_WSTRING
+ // Converts the given wide string to a narrow string using the UTF-8
+ // encoding, and streams the result to this Message object.
+ Message& operator <<(const ::wstring& wstr);
+#endif // GTEST_HAS_GLOBAL_WSTRING
+
+ // Gets the text streamed to this object so far as an std::string.
+ // Each '\0' character in the buffer is replaced with "\\0".
+ //
+ // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ std::string GetString() const;
+
+ private:
+
+#if GTEST_OS_SYMBIAN
+ // These are needed as the Nokia Symbian Compiler cannot decide between
+ // const T& and const T* in a function template. The Nokia compiler _can_
+ // decide between class template specializations for T and T*, so a
+ // tr1::type_traits-like is_pointer works, and we can overload on that.
+ template <typename T>
+ inline void StreamHelper(internal::true_type /*is_pointer*/, T* pointer) {
+ if (pointer == NULL) {
+ *ss_ << "(null)";
+ } else {
+ *ss_ << pointer;
+ }
+ }
+ template <typename T>
+ inline void StreamHelper(internal::false_type /*is_pointer*/,
+ const T& value) {
+ // See the comments in Message& operator <<(const T&) above for why
+ // we need this using statement.
+ using ::operator <<;
+ *ss_ << value;
+ }
+#endif // GTEST_OS_SYMBIAN
+
+ // We'll hold the text streamed to this object here.
+ const internal::scoped_ptr< ::std::stringstream> ss_;
+
+ // We declare (but don't implement) this to prevent the compiler
+ // from implementing the assignment operator.
+ void operator=(const Message&);
+};
+
+// Streams a Message to an ostream.
+inline std::ostream& operator <<(std::ostream& os, const Message& sb) {
+ return os << sb.GetString();
+}
+
+namespace internal {
+
+// Converts a streamable value to an std::string. A NULL pointer is
+// converted to "(null)". When the input value is a ::string,
+// ::std::string, ::wstring, or ::std::wstring object, each NUL
+// character in it is replaced with "\\0".
+template <typename T>
+std::string StreamableToString(const T& streamable) {
+ return (Message() << streamable).GetString();
+}
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
diff --git a/test/fmw/gtest/include/gtest/gtest-param-test.h b/test/fmw/gtest/include/gtest/gtest-param-test.h
new file mode 100644
index 0000000..d6702c8
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/gtest-param-test.h
@@ -0,0 +1,1421 @@
+// This file was GENERATED by command:
+// pump.py gtest-param-test.h.pump
+// DO NOT EDIT BY HAND!!!
+
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: vladl@google.com (Vlad Losev)
+//
+// Macros and functions for implementing parameterized tests
+// in Google C++ Testing Framework (Google Test)
+//
+// This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
+//
+#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
+#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
+
+
+// Value-parameterized tests allow you to test your code with different
+// parameters without writing multiple copies of the same test.
+//
+// Here is how you use value-parameterized tests:
+
+#if 0
+
+// To write value-parameterized tests, first you should define a fixture
+// class. It is usually derived from testing::TestWithParam<T> (see below for
+// another inheritance scheme that's sometimes useful in more complicated
+// class hierarchies), where the type of your parameter values.
+// TestWithParam<T> is itself derived from testing::Test. T can be any
+// copyable type. If it's a raw pointer, you are responsible for managing the
+// lifespan of the pointed values.
+
+class FooTest : public ::testing::TestWithParam<const char*> {
+ // You can implement all the usual class fixture members here.
+};
+
+// Then, use the TEST_P macro to define as many parameterized tests
+// for this fixture as you want. The _P suffix is for "parameterized"
+// or "pattern", whichever you prefer to think.
+
+TEST_P(FooTest, DoesBlah) {
+ // Inside a test, access the test parameter with the GetParam() method
+ // of the TestWithParam<T> class:
+ EXPECT_TRUE(foo.Blah(GetParam()));
+ ...
+}
+
+TEST_P(FooTest, HasBlahBlah) {
+ ...
+}
+
+// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test
+// case with any set of parameters you want. Google Test defines a number
+// of functions for generating test parameters. They return what we call
+// (surprise!) parameter generators. Here is a summary of them, which
+// are all in the testing namespace:
+//
+//
+// Range(begin, end [, step]) - Yields values {begin, begin+step,
+// begin+step+step, ...}. The values do not
+// include end. step defaults to 1.
+// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}.
+// ValuesIn(container) - Yields values from a C-style array, an STL
+// ValuesIn(begin,end) container, or an iterator range [begin, end).
+// Bool() - Yields sequence {false, true}.
+// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product
+// for the math savvy) of the values generated
+// by the N generators.
+//
+// For more details, see comments at the definitions of these functions below
+// in this file.
+//
+// The following statement will instantiate tests from the FooTest test case
+// each with parameter values "meeny", "miny", and "moe".
+
+INSTANTIATE_TEST_CASE_P(InstantiationName,
+ FooTest,
+ Values("meeny", "miny", "moe"));
+
+// To distinguish different instances of the pattern, (yes, you
+// can instantiate it more then once) the first argument to the
+// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the
+// actual test case name. Remember to pick unique prefixes for different
+// instantiations. The tests from the instantiation above will have
+// these names:
+//
+// * InstantiationName/FooTest.DoesBlah/0 for "meeny"
+// * InstantiationName/FooTest.DoesBlah/1 for "miny"
+// * InstantiationName/FooTest.DoesBlah/2 for "moe"
+// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny"
+// * InstantiationName/FooTest.HasBlahBlah/1 for "miny"
+// * InstantiationName/FooTest.HasBlahBlah/2 for "moe"
+//
+// You can use these names in --gtest_filter.
+//
+// This statement will instantiate all tests from FooTest again, each
+// with parameter values "cat" and "dog":
+
+const char* pets[] = {"cat", "dog"};
+INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
+
+// The tests from the instantiation above will have these names:
+//
+// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat"
+// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog"
+// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat"
+// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog"
+//
+// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests
+// in the given test case, whether their definitions come before or
+// AFTER the INSTANTIATE_TEST_CASE_P statement.
+//
+// Please also note that generator expressions (including parameters to the
+// generators) are evaluated in InitGoogleTest(), after main() has started.
+// This allows the user on one hand, to adjust generator parameters in order
+// to dynamically determine a set of tests to run and on the other hand,
+// give the user a chance to inspect the generated tests with Google Test
+// reflection API before RUN_ALL_TESTS() is executed.
+//
+// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc
+// for more examples.
+//
+// In the future, we plan to publish the API for defining new parameter
+// generators. But for now this interface remains part of the internal
+// implementation and is subject to change.
+//
+//
+// A parameterized test fixture must be derived from testing::Test and from
+// testing::WithParamInterface<T>, where T is the type of the parameter
+// values. Inheriting from TestWithParam<T> satisfies that requirement because
+// TestWithParam<T> inherits from both Test and WithParamInterface. In more
+// complicated hierarchies, however, it is occasionally useful to inherit
+// separately from Test and WithParamInterface. For example:
+
+class BaseTest : public ::testing::Test {
+ // You can inherit all the usual members for a non-parameterized test
+ // fixture here.
+};
+
+class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
+ // The usual test fixture members go here too.
+};
+
+TEST_F(BaseTest, HasFoo) {
+ // This is an ordinary non-parameterized test.
+}
+
+TEST_P(DerivedTest, DoesBlah) {
+ // GetParam works just the same here as if you inherit from TestWithParam.
+ EXPECT_TRUE(foo.Blah(GetParam()));
+}
+
+#endif // 0
+
+#include "gtest/internal/gtest-port.h"
+
+#if !GTEST_OS_SYMBIAN
+# include <utility>
+#endif
+
+// scripts/fuse_gtest.py depends on gtest's own header being #included
+// *unconditionally*. Therefore these #includes cannot be moved
+// inside #if GTEST_HAS_PARAM_TEST.
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-param-util.h"
+#include "gtest/internal/gtest-param-util-generated.h"
+
+#if GTEST_HAS_PARAM_TEST
+
+namespace testing {
+
+// Functions producing parameter generators.
+//
+// Google Test uses these generators to produce parameters for value-
+// parameterized tests. When a parameterized test case is instantiated
+// with a particular generator, Google Test creates and runs tests
+// for each element in the sequence produced by the generator.
+//
+// In the following sample, tests from test case FooTest are instantiated
+// each three times with parameter values 3, 5, and 8:
+//
+// class FooTest : public TestWithParam<int> { ... };
+//
+// TEST_P(FooTest, TestThis) {
+// }
+// TEST_P(FooTest, TestThat) {
+// }
+// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8));
+//
+
+// Range() returns generators providing sequences of values in a range.
+//
+// Synopsis:
+// Range(start, end)
+// - returns a generator producing a sequence of values {start, start+1,
+// start+2, ..., }.
+// Range(start, end, step)
+// - returns a generator producing a sequence of values {start, start+step,
+// start+step+step, ..., }.
+// Notes:
+// * The generated sequences never include end. For example, Range(1, 5)
+// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)
+// returns a generator producing {1, 3, 5, 7}.
+// * start and end must have the same type. That type may be any integral or
+// floating-point type or a user defined type satisfying these conditions:
+// * It must be assignable (have operator=() defined).
+// * It must have operator+() (operator+(int-compatible type) for
+// two-operand version).
+// * It must have operator<() defined.
+// Elements in the resulting sequences will also have that type.
+// * Condition start < end must be satisfied in order for resulting sequences
+// to contain any elements.
+//
+template <typename T, typename IncrementT>
+internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
+ return internal::ParamGenerator<T>(
+ new internal::RangeGenerator<T, IncrementT>(start, end, step));
+}
+
+template <typename T>
+internal::ParamGenerator<T> Range(T start, T end) {
+ return Range(start, end, 1);
+}
+
+// ValuesIn() function allows generation of tests with parameters coming from
+// a container.
+//
+// Synopsis:
+// ValuesIn(const T (&array)[N])
+// - returns a generator producing sequences with elements from
+// a C-style array.
+// ValuesIn(const Container& container)
+// - returns a generator producing sequences with elements from
+// an STL-style container.
+// ValuesIn(Iterator begin, Iterator end)
+// - returns a generator producing sequences with elements from
+// a range [begin, end) defined by a pair of STL-style iterators. These
+// iterators can also be plain C pointers.
+//
+// Please note that ValuesIn copies the values from the containers
+// passed in and keeps them to generate tests in RUN_ALL_TESTS().
+//
+// Examples:
+//
+// This instantiates tests from test case StringTest
+// each with C-string values of "foo", "bar", and "baz":
+//
+// const char* strings[] = {"foo", "bar", "baz"};
+// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings));
+//
+// This instantiates tests from test case StlStringTest
+// each with STL strings with values "a" and "b":
+//
+// ::std::vector< ::std::string> GetParameterStrings() {
+// ::std::vector< ::std::string> v;
+// v.push_back("a");
+// v.push_back("b");
+// return v;
+// }
+//
+// INSTANTIATE_TEST_CASE_P(CharSequence,
+// StlStringTest,
+// ValuesIn(GetParameterStrings()));
+//
+//
+// This will also instantiate tests from CharTest
+// each with parameter values 'a' and 'b':
+//
+// ::std::list<char> GetParameterChars() {
+// ::std::list<char> list;
+// list.push_back('a');
+// list.push_back('b');
+// return list;
+// }
+// ::std::list<char> l = GetParameterChars();
+// INSTANTIATE_TEST_CASE_P(CharSequence2,
+// CharTest,
+// ValuesIn(l.begin(), l.end()));
+//
+template <typename ForwardIterator>
+internal::ParamGenerator<
+ typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
+ValuesIn(ForwardIterator begin, ForwardIterator end) {
+ typedef typename ::testing::internal::IteratorTraits<ForwardIterator>
+ ::value_type ParamType;
+ return internal::ParamGenerator<ParamType>(
+ new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
+}
+
+template <typename T, size_t N>
+internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {
+ return ValuesIn(array, array + N);
+}
+
+template <class Container>
+internal::ParamGenerator<typename Container::value_type> ValuesIn(
+ const Container& container) {
+ return ValuesIn(container.begin(), container.end());
+}
+
+// Values() allows generating tests from explicitly specified list of
+// parameters.
+//
+// Synopsis:
+// Values(T v1, T v2, ..., T vN)
+// - returns a generator producing sequences with elements v1, v2, ..., vN.
+//
+// For example, this instantiates tests from test case BarTest each
+// with values "one", "two", and "three":
+//
+// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three"));
+//
+// This instantiates tests from test case BazTest each with values 1, 2, 3.5.
+// The exact type of values will depend on the type of parameter in BazTest.
+//
+// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5));
+//
+// Currently, Values() supports from 1 to 50 parameters.
+//
+template <typename T1>
+internal::ValueArray1<T1> Values(T1 v1) {
+ return internal::ValueArray1<T1>(v1);
+}
+
+template <typename T1, typename T2>
+internal::ValueArray2<T1, T2> Values(T1 v1, T2 v2) {
+ return internal::ValueArray2<T1, T2>(v1, v2);
+}
+
+template <typename T1, typename T2, typename T3>
+internal::ValueArray3<T1, T2, T3> Values(T1 v1, T2 v2, T3 v3) {
+ return internal::ValueArray3<T1, T2, T3>(v1, v2, v3);
+}
+
+template <typename T1, typename T2, typename T3, typename T4>
+internal::ValueArray4<T1, T2, T3, T4> Values(T1 v1, T2 v2, T3 v3, T4 v4) {
+ return internal::ValueArray4<T1, T2, T3, T4>(v1, v2, v3, v4);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+internal::ValueArray5<T1, T2, T3, T4, T5> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+ T5 v5) {
+ return internal::ValueArray5<T1, T2, T3, T4, T5>(v1, v2, v3, v4, v5);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6>
+internal::ValueArray6<T1, T2, T3, T4, T5, T6> Values(T1 v1, T2 v2, T3 v3,
+ T4 v4, T5 v5, T6 v6) {
+ return internal::ValueArray6<T1, T2, T3, T4, T5, T6>(v1, v2, v3, v4, v5, v6);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7>
+internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7> Values(T1 v1, T2 v2, T3 v3,
+ T4 v4, T5 v5, T6 v6, T7 v7) {
+ return internal::ValueArray7<T1, T2, T3, T4, T5, T6, T7>(v1, v2, v3, v4, v5,
+ v6, v7);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8>
+internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8> Values(T1 v1, T2 v2,
+ T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) {
+ return internal::ValueArray8<T1, T2, T3, T4, T5, T6, T7, T8>(v1, v2, v3, v4,
+ v5, v6, v7, v8);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9>
+internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9> Values(T1 v1, T2 v2,
+ T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) {
+ return internal::ValueArray9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(v1, v2, v3,
+ v4, v5, v6, v7, v8, v9);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10>
+internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Values(T1 v1,
+ T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) {
+ return internal::ValueArray10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(v1,
+ v2, v3, v4, v5, v6, v7, v8, v9, v10);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11>
+internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
+ T11> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11) {
+ return internal::ValueArray11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
+ T11>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12>
+internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12) {
+ return internal::ValueArray12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13>
+internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13) {
+ return internal::ValueArray13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14>
+internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) {
+ return internal::ValueArray14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
+ v14);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15>
+internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
+ T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) {
+ return internal::ValueArray15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
+ v13, v14, v15);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16>
+internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+ T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16) {
+ return internal::ValueArray16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
+ v12, v13, v14, v15, v16);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17>
+internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+ T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17) {
+ return internal::ValueArray17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
+ v11, v12, v13, v14, v15, v16, v17);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18>
+internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
+ T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17, T18 v18) {
+ return internal::ValueArray18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
+ v10, v11, v12, v13, v14, v15, v16, v17, v18);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19>
+internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
+ T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
+ T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) {
+ return internal::ValueArray19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19>(v1, v2, v3, v4, v5, v6, v7, v8,
+ v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20>
+internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+ T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
+ T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) {
+ return internal::ValueArray20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20>(v1, v2, v3, v4, v5, v6, v7,
+ v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21>
+internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+ T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
+ T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) {
+ return internal::ValueArray21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(v1, v2, v3, v4, v5, v6,
+ v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22>
+internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22> Values(T1 v1, T2 v2, T3 v3,
+ T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+ T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+ T21 v21, T22 v22) {
+ return internal::ValueArray22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(v1, v2, v3, v4,
+ v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
+ v20, v21, v22);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23>
+internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> Values(T1 v1, T2 v2,
+ T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+ T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+ T21 v21, T22 v22, T23 v23) {
+ return internal::ValueArray23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(v1, v2, v3,
+ v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
+ v20, v21, v22, v23);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24>
+internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Values(T1 v1, T2 v2,
+ T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+ T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+ T21 v21, T22 v22, T23 v23, T24 v24) {
+ return internal::ValueArray24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(v1, v2,
+ v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
+ v19, v20, v21, v22, v23, v24);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25>
+internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Values(T1 v1,
+ T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
+ T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
+ T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) {
+ return internal::ValueArray25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(v1,
+ v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
+ v18, v19, v20, v21, v22, v23, v24, v25);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26>
+internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26) {
+ return internal::ValueArray26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
+ v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27>
+internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27) {
+ return internal::ValueArray27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
+ v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28>
+internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28) {
+ return internal::ValueArray28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
+ v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
+ v28);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29>
+internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29) {
+ return internal::ValueArray29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
+ v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
+ v27, v28, v29);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30>
+internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
+ T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
+ T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
+ T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) {
+ return internal::ValueArray30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
+ v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
+ v26, v27, v28, v29, v30);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31>
+internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+ T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+ T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) {
+ return internal::ValueArray31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
+ v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
+ v25, v26, v27, v28, v29, v30, v31);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32>
+internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+ T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+ T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
+ T32 v32) {
+ return internal::ValueArray32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
+ v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
+ v24, v25, v26, v27, v28, v29, v30, v31, v32);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33>
+internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
+ T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+ T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
+ T32 v32, T33 v33) {
+ return internal::ValueArray33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33>(v1, v2, v3, v4, v5, v6, v7, v8,
+ v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
+ v24, v25, v26, v27, v28, v29, v30, v31, v32, v33);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34>
+internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
+ T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
+ T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
+ T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
+ T31 v31, T32 v32, T33 v33, T34 v34) {
+ return internal::ValueArray34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34>(v1, v2, v3, v4, v5, v6, v7,
+ v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
+ v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35>
+internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+ T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
+ T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
+ T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
+ T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) {
+ return internal::ValueArray35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35>(v1, v2, v3, v4, v5, v6,
+ v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
+ v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36>
+internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+ T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
+ T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
+ T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
+ T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) {
+ return internal::ValueArray36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36>(v1, v2, v3, v4,
+ v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
+ v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
+ v34, v35, v36);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37>
+internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37> Values(T1 v1, T2 v2, T3 v3,
+ T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+ T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+ T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
+ T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
+ T37 v37) {
+ return internal::ValueArray37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37>(v1, v2, v3,
+ v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
+ v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
+ v34, v35, v36, v37);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38>
+internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Values(T1 v1, T2 v2,
+ T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+ T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+ T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
+ T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
+ T37 v37, T38 v38) {
+ return internal::ValueArray38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38>(v1, v2,
+ v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18,
+ v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32,
+ v33, v34, v35, v36, v37, v38);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39>
+internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Values(T1 v1, T2 v2,
+ T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12,
+ T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20,
+ T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28,
+ T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36,
+ T37 v37, T38 v38, T39 v39) {
+ return internal::ValueArray39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39>(v1,
+ v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17,
+ v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31,
+ v32, v33, v34, v35, v36, v37, v38, v39);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40>
+internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Values(T1 v1,
+ T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11,
+ T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19,
+ T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27,
+ T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35,
+ T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) {
+ return internal::ValueArray40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15,
+ v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29,
+ v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41>
+internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) {
+ return internal::ValueArray41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14,
+ v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28,
+ v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42>
+internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42) {
+ return internal::ValueArray42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13,
+ v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27,
+ v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41,
+ v42);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43>
+internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43) {
+ return internal::ValueArray43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12,
+ v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26,
+ v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40,
+ v41, v42, v43);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44>
+internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44) {
+ return internal::ValueArray44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43, T44>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11,
+ v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25,
+ v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39,
+ v40, v41, v42, v43, v44);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45>
+internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
+ T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
+ T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
+ T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
+ T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
+ T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) {
+ return internal::ValueArray45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43, T44, T45>(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10,
+ v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24,
+ v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38,
+ v39, v40, v41, v42, v43, v44, v45);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46>
+internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+ T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+ T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
+ T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
+ T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) {
+ return internal::ValueArray46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43, T44, T45, T46>(v1, v2, v3, v4, v5, v6, v7, v8, v9,
+ v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
+ v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
+ v38, v39, v40, v41, v42, v43, v44, v45, v46);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47>
+internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+ T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+ T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
+ T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
+ T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) {
+ return internal::ValueArray47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43, T44, T45, T46, T47>(v1, v2, v3, v4, v5, v6, v7, v8,
+ v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23,
+ v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37,
+ v38, v39, v40, v41, v42, v43, v44, v45, v46, v47);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48>
+internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47, T48> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6,
+ T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15,
+ T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23,
+ T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31,
+ T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39,
+ T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47,
+ T48 v48) {
+ return internal::ValueArray48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43, T44, T45, T46, T47, T48>(v1, v2, v3, v4, v5, v6, v7,
+ v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22,
+ v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36,
+ v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49>
+internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47, T48, T49> Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5,
+ T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14,
+ T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22,
+ T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30,
+ T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38,
+ T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46,
+ T47 v47, T48 v48, T49 v49) {
+ return internal::ValueArray49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43, T44, T45, T46, T47, T48, T49>(v1, v2, v3, v4, v5, v6,
+ v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21,
+ v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35,
+ v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49, typename T50>
+internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47, T48, T49, T50> Values(T1 v1, T2 v2, T3 v3, T4 v4,
+ T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13,
+ T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21,
+ T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29,
+ T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37,
+ T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45,
+ T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) {
+ return internal::ValueArray50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>(v1, v2, v3, v4,
+ v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19,
+ v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33,
+ v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47,
+ v48, v49, v50);
+}
+
+// Bool() allows generating tests with parameters in a set of (false, true).
+//
+// Synopsis:
+// Bool()
+// - returns a generator producing sequences with elements {false, true}.
+//
+// It is useful when testing code that depends on Boolean flags. Combinations
+// of multiple flags can be tested when several Bool()'s are combined using
+// Combine() function.
+//
+// In the following example all tests in the test case FlagDependentTest
+// will be instantiated twice with parameters false and true.
+//
+// class FlagDependentTest : public testing::TestWithParam<bool> {
+// virtual void SetUp() {
+// external_flag = GetParam();
+// }
+// }
+// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool());
+//
+inline internal::ParamGenerator<bool> Bool() {
+ return Values(false, true);
+}
+
+# if GTEST_HAS_COMBINE
+// Combine() allows the user to combine two or more sequences to produce
+// values of a Cartesian product of those sequences' elements.
+//
+// Synopsis:
+// Combine(gen1, gen2, ..., genN)
+// - returns a generator producing sequences with elements coming from
+// the Cartesian product of elements from the sequences generated by
+// gen1, gen2, ..., genN. The sequence elements will have a type of
+// tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types
+// of elements from sequences produces by gen1, gen2, ..., genN.
+//
+// Combine can have up to 10 arguments. This number is currently limited
+// by the maximum number of elements in the tuple implementation used by Google
+// Test.
+//
+// Example:
+//
+// This will instantiate tests in test case AnimalTest each one with
+// the parameter values tuple("cat", BLACK), tuple("cat", WHITE),
+// tuple("dog", BLACK), and tuple("dog", WHITE):
+//
+// enum Color { BLACK, GRAY, WHITE };
+// class AnimalTest
+// : public testing::TestWithParam<tuple<const char*, Color> > {...};
+//
+// TEST_P(AnimalTest, AnimalLooksNice) {...}
+//
+// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest,
+// Combine(Values("cat", "dog"),
+// Values(BLACK, WHITE)));
+//
+// This will instantiate tests in FlagDependentTest with all variations of two
+// Boolean flags:
+//
+// class FlagDependentTest
+// : public testing::TestWithParam<tuple<bool, bool> > {
+// virtual void SetUp() {
+// // Assigns external_flag_1 and external_flag_2 values from the tuple.
+// tie(external_flag_1, external_flag_2) = GetParam();
+// }
+// };
+//
+// TEST_P(FlagDependentTest, TestFeature1) {
+// // Test your code using external_flag_1 and external_flag_2 here.
+// }
+// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest,
+// Combine(Bool(), Bool()));
+//
+template <typename Generator1, typename Generator2>
+internal::CartesianProductHolder2<Generator1, Generator2> Combine(
+ const Generator1& g1, const Generator2& g2) {
+ return internal::CartesianProductHolder2<Generator1, Generator2>(
+ g1, g2);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3>
+internal::CartesianProductHolder3<Generator1, Generator2, Generator3> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3) {
+ return internal::CartesianProductHolder3<Generator1, Generator2, Generator3>(
+ g1, g2, g3);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+ typename Generator4>
+internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
+ Generator4> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3,
+ const Generator4& g4) {
+ return internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
+ Generator4>(
+ g1, g2, g3, g4);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+ typename Generator4, typename Generator5>
+internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
+ Generator4, Generator5> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3,
+ const Generator4& g4, const Generator5& g5) {
+ return internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
+ Generator4, Generator5>(
+ g1, g2, g3, g4, g5);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+ typename Generator4, typename Generator5, typename Generator6>
+internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3,
+ const Generator4& g4, const Generator5& g5, const Generator6& g6) {
+ return internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6>(
+ g1, g2, g3, g4, g5, g6);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+ typename Generator4, typename Generator5, typename Generator6,
+ typename Generator7>
+internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3,
+ const Generator4& g4, const Generator5& g5, const Generator6& g6,
+ const Generator7& g7) {
+ return internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7>(
+ g1, g2, g3, g4, g5, g6, g7);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+ typename Generator4, typename Generator5, typename Generator6,
+ typename Generator7, typename Generator8>
+internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7, Generator8> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3,
+ const Generator4& g4, const Generator5& g5, const Generator6& g6,
+ const Generator7& g7, const Generator8& g8) {
+ return internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7, Generator8>(
+ g1, g2, g3, g4, g5, g6, g7, g8);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+ typename Generator4, typename Generator5, typename Generator6,
+ typename Generator7, typename Generator8, typename Generator9>
+internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7, Generator8,
+ Generator9> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3,
+ const Generator4& g4, const Generator5& g5, const Generator6& g6,
+ const Generator7& g7, const Generator8& g8, const Generator9& g9) {
+ return internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>(
+ g1, g2, g3, g4, g5, g6, g7, g8, g9);
+}
+
+template <typename Generator1, typename Generator2, typename Generator3,
+ typename Generator4, typename Generator5, typename Generator6,
+ typename Generator7, typename Generator8, typename Generator9,
+ typename Generator10>
+internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
+ Generator10> Combine(
+ const Generator1& g1, const Generator2& g2, const Generator3& g3,
+ const Generator4& g4, const Generator5& g5, const Generator6& g6,
+ const Generator7& g7, const Generator8& g8, const Generator9& g9,
+ const Generator10& g10) {
+ return internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
+ Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
+ Generator10>(
+ g1, g2, g3, g4, g5, g6, g7, g8, g9, g10);
+}
+# endif // GTEST_HAS_COMBINE
+
+
+
+# define TEST_P(test_case_name, test_name) \
+ class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
+ : public test_case_name { \
+ public: \
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
+ virtual void TestBody(); \
+ private: \
+ static int AddToRegistry() { \
+ ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
+ GetTestCasePatternHolder<test_case_name>(\
+ #test_case_name, __FILE__, __LINE__)->AddTestPattern(\
+ #test_case_name, \
+ #test_name, \
+ new ::testing::internal::TestMetaFactory< \
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \
+ return 0; \
+ } \
+ static int gtest_registering_dummy_; \
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(\
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
+ }; \
+ int GTEST_TEST_CLASS_NAME_(test_case_name, \
+ test_name)::gtest_registering_dummy_ = \
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
+ void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
+
+# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \
+ ::testing::internal::ParamGenerator<test_case_name::ParamType> \
+ gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \
+ int gtest_##prefix##test_case_name##_dummy_ = \
+ ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
+ GetTestCasePatternHolder<test_case_name>(\
+ #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\
+ #prefix, \
+ &gtest_##prefix##test_case_name##_EvalGenerator_, \
+ __FILE__, __LINE__)
+
+} // namespace testing
+
+#endif // GTEST_HAS_PARAM_TEST
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
diff --git a/test/fmw/gtest/include/gtest/gtest-param-test.h.pump b/test/fmw/gtest/include/gtest/gtest-param-test.h.pump
new file mode 100644
index 0000000..2dc9303
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/gtest-param-test.h.pump
@@ -0,0 +1,487 @@
+$$ -*- mode: c++; -*-
+$var n = 50 $$ Maximum length of Values arguments we want to support.
+$var maxtuple = 10 $$ Maximum number of Combine arguments we want to support.
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: vladl@google.com (Vlad Losev)
+//
+// Macros and functions for implementing parameterized tests
+// in Google C++ Testing Framework (Google Test)
+//
+// This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
+//
+#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
+#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
+
+
+// Value-parameterized tests allow you to test your code with different
+// parameters without writing multiple copies of the same test.
+//
+// Here is how you use value-parameterized tests:
+
+#if 0
+
+// To write value-parameterized tests, first you should define a fixture
+// class. It is usually derived from testing::TestWithParam<T> (see below for
+// another inheritance scheme that's sometimes useful in more complicated
+// class hierarchies), where the type of your parameter values.
+// TestWithParam<T> is itself derived from testing::Test. T can be any
+// copyable type. If it's a raw pointer, you are responsible for managing the
+// lifespan of the pointed values.
+
+class FooTest : public ::testing::TestWithParam<const char*> {
+ // You can implement all the usual class fixture members here.
+};
+
+// Then, use the TEST_P macro to define as many parameterized tests
+// for this fixture as you want. The _P suffix is for "parameterized"
+// or "pattern", whichever you prefer to think.
+
+TEST_P(FooTest, DoesBlah) {
+ // Inside a test, access the test parameter with the GetParam() method
+ // of the TestWithParam<T> class:
+ EXPECT_TRUE(foo.Blah(GetParam()));
+ ...
+}
+
+TEST_P(FooTest, HasBlahBlah) {
+ ...
+}
+
+// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test
+// case with any set of parameters you want. Google Test defines a number
+// of functions for generating test parameters. They return what we call
+// (surprise!) parameter generators. Here is a summary of them, which
+// are all in the testing namespace:
+//
+//
+// Range(begin, end [, step]) - Yields values {begin, begin+step,
+// begin+step+step, ...}. The values do not
+// include end. step defaults to 1.
+// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}.
+// ValuesIn(container) - Yields values from a C-style array, an STL
+// ValuesIn(begin,end) container, or an iterator range [begin, end).
+// Bool() - Yields sequence {false, true}.
+// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product
+// for the math savvy) of the values generated
+// by the N generators.
+//
+// For more details, see comments at the definitions of these functions below
+// in this file.
+//
+// The following statement will instantiate tests from the FooTest test case
+// each with parameter values "meeny", "miny", and "moe".
+
+INSTANTIATE_TEST_CASE_P(InstantiationName,
+ FooTest,
+ Values("meeny", "miny", "moe"));
+
+// To distinguish different instances of the pattern, (yes, you
+// can instantiate it more then once) the first argument to the
+// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the
+// actual test case name. Remember to pick unique prefixes for different
+// instantiations. The tests from the instantiation above will have
+// these names:
+//
+// * InstantiationName/FooTest.DoesBlah/0 for "meeny"
+// * InstantiationName/FooTest.DoesBlah/1 for "miny"
+// * InstantiationName/FooTest.DoesBlah/2 for "moe"
+// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny"
+// * InstantiationName/FooTest.HasBlahBlah/1 for "miny"
+// * InstantiationName/FooTest.HasBlahBlah/2 for "moe"
+//
+// You can use these names in --gtest_filter.
+//
+// This statement will instantiate all tests from FooTest again, each
+// with parameter values "cat" and "dog":
+
+const char* pets[] = {"cat", "dog"};
+INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
+
+// The tests from the instantiation above will have these names:
+//
+// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat"
+// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog"
+// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat"
+// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog"
+//
+// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests
+// in the given test case, whether their definitions come before or
+// AFTER the INSTANTIATE_TEST_CASE_P statement.
+//
+// Please also note that generator expressions (including parameters to the
+// generators) are evaluated in InitGoogleTest(), after main() has started.
+// This allows the user on one hand, to adjust generator parameters in order
+// to dynamically determine a set of tests to run and on the other hand,
+// give the user a chance to inspect the generated tests with Google Test
+// reflection API before RUN_ALL_TESTS() is executed.
+//
+// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc
+// for more examples.
+//
+// In the future, we plan to publish the API for defining new parameter
+// generators. But for now this interface remains part of the internal
+// implementation and is subject to change.
+//
+//
+// A parameterized test fixture must be derived from testing::Test and from
+// testing::WithParamInterface<T>, where T is the type of the parameter
+// values. Inheriting from TestWithParam<T> satisfies that requirement because
+// TestWithParam<T> inherits from both Test and WithParamInterface. In more
+// complicated hierarchies, however, it is occasionally useful to inherit
+// separately from Test and WithParamInterface. For example:
+
+class BaseTest : public ::testing::Test {
+ // You can inherit all the usual members for a non-parameterized test
+ // fixture here.
+};
+
+class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
+ // The usual test fixture members go here too.
+};
+
+TEST_F(BaseTest, HasFoo) {
+ // This is an ordinary non-parameterized test.
+}
+
+TEST_P(DerivedTest, DoesBlah) {
+ // GetParam works just the same here as if you inherit from TestWithParam.
+ EXPECT_TRUE(foo.Blah(GetParam()));
+}
+
+#endif // 0
+
+#include "gtest/internal/gtest-port.h"
+
+#if !GTEST_OS_SYMBIAN
+# include <utility>
+#endif
+
+// scripts/fuse_gtest.py depends on gtest's own header being #included
+// *unconditionally*. Therefore these #includes cannot be moved
+// inside #if GTEST_HAS_PARAM_TEST.
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-param-util.h"
+#include "gtest/internal/gtest-param-util-generated.h"
+
+#if GTEST_HAS_PARAM_TEST
+
+namespace testing {
+
+// Functions producing parameter generators.
+//
+// Google Test uses these generators to produce parameters for value-
+// parameterized tests. When a parameterized test case is instantiated
+// with a particular generator, Google Test creates and runs tests
+// for each element in the sequence produced by the generator.
+//
+// In the following sample, tests from test case FooTest are instantiated
+// each three times with parameter values 3, 5, and 8:
+//
+// class FooTest : public TestWithParam<int> { ... };
+//
+// TEST_P(FooTest, TestThis) {
+// }
+// TEST_P(FooTest, TestThat) {
+// }
+// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8));
+//
+
+// Range() returns generators providing sequences of values in a range.
+//
+// Synopsis:
+// Range(start, end)
+// - returns a generator producing a sequence of values {start, start+1,
+// start+2, ..., }.
+// Range(start, end, step)
+// - returns a generator producing a sequence of values {start, start+step,
+// start+step+step, ..., }.
+// Notes:
+// * The generated sequences never include end. For example, Range(1, 5)
+// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)
+// returns a generator producing {1, 3, 5, 7}.
+// * start and end must have the same type. That type may be any integral or
+// floating-point type or a user defined type satisfying these conditions:
+// * It must be assignable (have operator=() defined).
+// * It must have operator+() (operator+(int-compatible type) for
+// two-operand version).
+// * It must have operator<() defined.
+// Elements in the resulting sequences will also have that type.
+// * Condition start < end must be satisfied in order for resulting sequences
+// to contain any elements.
+//
+template <typename T, typename IncrementT>
+internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
+ return internal::ParamGenerator<T>(
+ new internal::RangeGenerator<T, IncrementT>(start, end, step));
+}
+
+template <typename T>
+internal::ParamGenerator<T> Range(T start, T end) {
+ return Range(start, end, 1);
+}
+
+// ValuesIn() function allows generation of tests with parameters coming from
+// a container.
+//
+// Synopsis:
+// ValuesIn(const T (&array)[N])
+// - returns a generator producing sequences with elements from
+// a C-style array.
+// ValuesIn(const Container& container)
+// - returns a generator producing sequences with elements from
+// an STL-style container.
+// ValuesIn(Iterator begin, Iterator end)
+// - returns a generator producing sequences with elements from
+// a range [begin, end) defined by a pair of STL-style iterators. These
+// iterators can also be plain C pointers.
+//
+// Please note that ValuesIn copies the values from the containers
+// passed in and keeps them to generate tests in RUN_ALL_TESTS().
+//
+// Examples:
+//
+// This instantiates tests from test case StringTest
+// each with C-string values of "foo", "bar", and "baz":
+//
+// const char* strings[] = {"foo", "bar", "baz"};
+// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings));
+//
+// This instantiates tests from test case StlStringTest
+// each with STL strings with values "a" and "b":
+//
+// ::std::vector< ::std::string> GetParameterStrings() {
+// ::std::vector< ::std::string> v;
+// v.push_back("a");
+// v.push_back("b");
+// return v;
+// }
+//
+// INSTANTIATE_TEST_CASE_P(CharSequence,
+// StlStringTest,
+// ValuesIn(GetParameterStrings()));
+//
+//
+// This will also instantiate tests from CharTest
+// each with parameter values 'a' and 'b':
+//
+// ::std::list<char> GetParameterChars() {
+// ::std::list<char> list;
+// list.push_back('a');
+// list.push_back('b');
+// return list;
+// }
+// ::std::list<char> l = GetParameterChars();
+// INSTANTIATE_TEST_CASE_P(CharSequence2,
+// CharTest,
+// ValuesIn(l.begin(), l.end()));
+//
+template <typename ForwardIterator>
+internal::ParamGenerator<
+ typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
+ValuesIn(ForwardIterator begin, ForwardIterator end) {
+ typedef typename ::testing::internal::IteratorTraits<ForwardIterator>
+ ::value_type ParamType;
+ return internal::ParamGenerator<ParamType>(
+ new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
+}
+
+template <typename T, size_t N>
+internal::ParamGenerator<T> ValuesIn(const T (&array)[N]) {
+ return ValuesIn(array, array + N);
+}
+
+template <class Container>
+internal::ParamGenerator<typename Container::value_type> ValuesIn(
+ const Container& container) {
+ return ValuesIn(container.begin(), container.end());
+}
+
+// Values() allows generating tests from explicitly specified list of
+// parameters.
+//
+// Synopsis:
+// Values(T v1, T v2, ..., T vN)
+// - returns a generator producing sequences with elements v1, v2, ..., vN.
+//
+// For example, this instantiates tests from test case BarTest each
+// with values "one", "two", and "three":
+//
+// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three"));
+//
+// This instantiates tests from test case BazTest each with values 1, 2, 3.5.
+// The exact type of values will depend on the type of parameter in BazTest.
+//
+// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5));
+//
+// Currently, Values() supports from 1 to $n parameters.
+//
+$range i 1..n
+$for i [[
+$range j 1..i
+
+template <$for j, [[typename T$j]]>
+internal::ValueArray$i<$for j, [[T$j]]> Values($for j, [[T$j v$j]]) {
+ return internal::ValueArray$i<$for j, [[T$j]]>($for j, [[v$j]]);
+}
+
+]]
+
+// Bool() allows generating tests with parameters in a set of (false, true).
+//
+// Synopsis:
+// Bool()
+// - returns a generator producing sequences with elements {false, true}.
+//
+// It is useful when testing code that depends on Boolean flags. Combinations
+// of multiple flags can be tested when several Bool()'s are combined using
+// Combine() function.
+//
+// In the following example all tests in the test case FlagDependentTest
+// will be instantiated twice with parameters false and true.
+//
+// class FlagDependentTest : public testing::TestWithParam<bool> {
+// virtual void SetUp() {
+// external_flag = GetParam();
+// }
+// }
+// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool());
+//
+inline internal::ParamGenerator<bool> Bool() {
+ return Values(false, true);
+}
+
+# if GTEST_HAS_COMBINE
+// Combine() allows the user to combine two or more sequences to produce
+// values of a Cartesian product of those sequences' elements.
+//
+// Synopsis:
+// Combine(gen1, gen2, ..., genN)
+// - returns a generator producing sequences with elements coming from
+// the Cartesian product of elements from the sequences generated by
+// gen1, gen2, ..., genN. The sequence elements will have a type of
+// tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types
+// of elements from sequences produces by gen1, gen2, ..., genN.
+//
+// Combine can have up to $maxtuple arguments. This number is currently limited
+// by the maximum number of elements in the tuple implementation used by Google
+// Test.
+//
+// Example:
+//
+// This will instantiate tests in test case AnimalTest each one with
+// the parameter values tuple("cat", BLACK), tuple("cat", WHITE),
+// tuple("dog", BLACK), and tuple("dog", WHITE):
+//
+// enum Color { BLACK, GRAY, WHITE };
+// class AnimalTest
+// : public testing::TestWithParam<tuple<const char*, Color> > {...};
+//
+// TEST_P(AnimalTest, AnimalLooksNice) {...}
+//
+// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest,
+// Combine(Values("cat", "dog"),
+// Values(BLACK, WHITE)));
+//
+// This will instantiate tests in FlagDependentTest with all variations of two
+// Boolean flags:
+//
+// class FlagDependentTest
+// : public testing::TestWithParam<tuple<bool, bool> > {
+// virtual void SetUp() {
+// // Assigns external_flag_1 and external_flag_2 values from the tuple.
+// tie(external_flag_1, external_flag_2) = GetParam();
+// }
+// };
+//
+// TEST_P(FlagDependentTest, TestFeature1) {
+// // Test your code using external_flag_1 and external_flag_2 here.
+// }
+// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest,
+// Combine(Bool(), Bool()));
+//
+$range i 2..maxtuple
+$for i [[
+$range j 1..i
+
+template <$for j, [[typename Generator$j]]>
+internal::CartesianProductHolder$i<$for j, [[Generator$j]]> Combine(
+ $for j, [[const Generator$j& g$j]]) {
+ return internal::CartesianProductHolder$i<$for j, [[Generator$j]]>(
+ $for j, [[g$j]]);
+}
+
+]]
+# endif // GTEST_HAS_COMBINE
+
+
+
+# define TEST_P(test_case_name, test_name) \
+ class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
+ : public test_case_name { \
+ public: \
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \
+ virtual void TestBody(); \
+ private: \
+ static int AddToRegistry() { \
+ ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
+ GetTestCasePatternHolder<test_case_name>(\
+ #test_case_name, __FILE__, __LINE__)->AddTestPattern(\
+ #test_case_name, \
+ #test_name, \
+ new ::testing::internal::TestMetaFactory< \
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \
+ return 0; \
+ } \
+ static int gtest_registering_dummy_; \
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(\
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \
+ }; \
+ int GTEST_TEST_CLASS_NAME_(test_case_name, \
+ test_name)::gtest_registering_dummy_ = \
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
+ void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
+
+# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \
+ ::testing::internal::ParamGenerator<test_case_name::ParamType> \
+ gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \
+ int gtest_##prefix##test_case_name##_dummy_ = \
+ ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \
+ GetTestCasePatternHolder<test_case_name>(\
+ #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\
+ #prefix, \
+ &gtest_##prefix##test_case_name##_EvalGenerator_, \
+ __FILE__, __LINE__)
+
+} // namespace testing
+
+#endif // GTEST_HAS_PARAM_TEST
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
diff --git a/test/fmw/gtest/include/gtest/gtest-printers.h b/test/fmw/gtest/include/gtest/gtest-printers.h
new file mode 100644
index 0000000..0639d9f
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/gtest-printers.h
@@ -0,0 +1,855 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Test - The Google C++ Testing Framework
+//
+// This file implements a universal value printer that can print a
+// value of any type T:
+//
+// void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
+//
+// A user can teach this function how to print a class type T by
+// defining either operator<<() or PrintTo() in the namespace that
+// defines T. More specifically, the FIRST defined function in the
+// following list will be used (assuming T is defined in namespace
+// foo):
+//
+// 1. foo::PrintTo(const T&, ostream*)
+// 2. operator<<(ostream&, const T&) defined in either foo or the
+// global namespace.
+//
+// If none of the above is defined, it will print the debug string of
+// the value if it is a protocol buffer, or print the raw bytes in the
+// value otherwise.
+//
+// To aid debugging: when T is a reference type, the address of the
+// value is also printed; when T is a (const) char pointer, both the
+// pointer value and the NUL-terminated string it points to are
+// printed.
+//
+// We also provide some convenient wrappers:
+//
+// // Prints a value to a string. For a (const or not) char
+// // pointer, the NUL-terminated string (but not the pointer) is
+// // printed.
+// std::string ::testing::PrintToString(const T& value);
+//
+// // Prints a value tersely: for a reference type, the referenced
+// // value (but not the address) is printed; for a (const or not) char
+// // pointer, the NUL-terminated string (but not the pointer) is
+// // printed.
+// void ::testing::internal::UniversalTersePrint(const T& value, ostream*);
+//
+// // Prints value using the type inferred by the compiler. The difference
+// // from UniversalTersePrint() is that this function prints both the
+// // pointer and the NUL-terminated string for a (const or not) char pointer.
+// void ::testing::internal::UniversalPrint(const T& value, ostream*);
+//
+// // Prints the fields of a tuple tersely to a string vector, one
+// // element for each field. Tuple support must be enabled in
+// // gtest-port.h.
+// std::vector<string> UniversalTersePrintTupleFieldsToStrings(
+// const Tuple& value);
+//
+// Known limitation:
+//
+// The print primitives print the elements of an STL-style container
+// using the compiler-inferred type of *iter where iter is a
+// const_iterator of the container. When const_iterator is an input
+// iterator but not a forward iterator, this inferred type may not
+// match value_type, and the print output may be incorrect. In
+// practice, this is rarely a problem as for most containers
+// const_iterator is a forward iterator. We'll fix this if there's an
+// actual need for it. Note that this fix cannot rely on value_type
+// being defined as many user-defined container types don't have
+// value_type.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
+#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
+
+#include <ostream> // NOLINT
+#include <sstream>
+#include <string>
+#include <utility>
+#include <vector>
+#include "gtest/internal/gtest-port.h"
+#include "gtest/internal/gtest-internal.h"
+
+namespace testing {
+
+// Definitions in the 'internal' and 'internal2' name spaces are
+// subject to change without notice. DO NOT USE THEM IN USER CODE!
+namespace internal2 {
+
+// Prints the given number of bytes in the given object to the given
+// ostream.
+GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes,
+ size_t count,
+ ::std::ostream* os);
+
+// For selecting which printer to use when a given type has neither <<
+// nor PrintTo().
+enum TypeKind {
+ kProtobuf, // a protobuf type
+ kConvertibleToInteger, // a type implicitly convertible to BiggestInt
+ // (e.g. a named or unnamed enum type)
+ kOtherType // anything else
+};
+
+// TypeWithoutFormatter<T, kTypeKind>::PrintValue(value, os) is called
+// by the universal printer to print a value of type T when neither
+// operator<< nor PrintTo() is defined for T, where kTypeKind is the
+// "kind" of T as defined by enum TypeKind.
+template <typename T, TypeKind kTypeKind>
+class TypeWithoutFormatter {
+ public:
+ // This default version is called when kTypeKind is kOtherType.
+ static void PrintValue(const T& value, ::std::ostream* os) {
+ PrintBytesInObjectTo(reinterpret_cast<const unsigned char*>(&value),
+ sizeof(value), os);
+ }
+};
+
+// We print a protobuf using its ShortDebugString() when the string
+// doesn't exceed this many characters; otherwise we print it using
+// DebugString() for better readability.
+const size_t kProtobufOneLinerMaxLength = 50;
+
+template <typename T>
+class TypeWithoutFormatter<T, kProtobuf> {
+ public:
+ static void PrintValue(const T& value, ::std::ostream* os) {
+ const ::testing::internal::string short_str = value.ShortDebugString();
+ const ::testing::internal::string pretty_str =
+ short_str.length() <= kProtobufOneLinerMaxLength ?
+ short_str : ("\n" + value.DebugString());
+ *os << ("<" + pretty_str + ">");
+ }
+};
+
+template <typename T>
+class TypeWithoutFormatter<T, kConvertibleToInteger> {
+ public:
+ // Since T has no << operator or PrintTo() but can be implicitly
+ // converted to BiggestInt, we print it as a BiggestInt.
+ //
+ // Most likely T is an enum type (either named or unnamed), in which
+ // case printing it as an integer is the desired behavior. In case
+ // T is not an enum, printing it as an integer is the best we can do
+ // given that it has no user-defined printer.
+ static void PrintValue(const T& value, ::std::ostream* os) {
+ const internal::BiggestInt kBigInt = value;
+ *os << kBigInt;
+ }
+};
+
+// Prints the given value to the given ostream. If the value is a
+// protocol message, its debug string is printed; if it's an enum or
+// of a type implicitly convertible to BiggestInt, it's printed as an
+// integer; otherwise the bytes in the value are printed. This is
+// what UniversalPrinter<T>::Print() does when it knows nothing about
+// type T and T has neither << operator nor PrintTo().
+//
+// A user can override this behavior for a class type Foo by defining
+// a << operator in the namespace where Foo is defined.
+//
+// We put this operator in namespace 'internal2' instead of 'internal'
+// to simplify the implementation, as much code in 'internal' needs to
+// use << in STL, which would conflict with our own << were it defined
+// in 'internal'.
+//
+// Note that this operator<< takes a generic std::basic_ostream<Char,
+// CharTraits> type instead of the more restricted std::ostream. If
+// we define it to take an std::ostream instead, we'll get an
+// "ambiguous overloads" compiler error when trying to print a type
+// Foo that supports streaming to std::basic_ostream<Char,
+// CharTraits>, as the compiler cannot tell whether
+// operator<<(std::ostream&, const T&) or
+// operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more
+// specific.
+template <typename Char, typename CharTraits, typename T>
+::std::basic_ostream<Char, CharTraits>& operator<<(
+ ::std::basic_ostream<Char, CharTraits>& os, const T& x) {
+ TypeWithoutFormatter<T,
+ (internal::IsAProtocolMessage<T>::value ? kProtobuf :
+ internal::ImplicitlyConvertible<const T&, internal::BiggestInt>::value ?
+ kConvertibleToInteger : kOtherType)>::PrintValue(x, &os);
+ return os;
+}
+
+} // namespace internal2
+} // namespace testing
+
+// This namespace MUST NOT BE NESTED IN ::testing, or the name look-up
+// magic needed for implementing UniversalPrinter won't work.
+namespace testing_internal {
+
+// Used to print a value that is not an STL-style container when the
+// user doesn't define PrintTo() for it.
+template <typename T>
+void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) {
+ // With the following statement, during unqualified name lookup,
+ // testing::internal2::operator<< appears as if it was declared in
+ // the nearest enclosing namespace that contains both
+ // ::testing_internal and ::testing::internal2, i.e. the global
+ // namespace. For more details, refer to the C++ Standard section
+ // 7.3.4-1 [namespace.udir]. This allows us to fall back onto
+ // testing::internal2::operator<< in case T doesn't come with a <<
+ // operator.
+ //
+ // We cannot write 'using ::testing::internal2::operator<<;', which
+ // gcc 3.3 fails to compile due to a compiler bug.
+ using namespace ::testing::internal2; // NOLINT
+
+ // Assuming T is defined in namespace foo, in the next statement,
+ // the compiler will consider all of:
+ //
+ // 1. foo::operator<< (thanks to Koenig look-up),
+ // 2. ::operator<< (as the current namespace is enclosed in ::),
+ // 3. testing::internal2::operator<< (thanks to the using statement above).
+ //
+ // The operator<< whose type matches T best will be picked.
+ //
+ // We deliberately allow #2 to be a candidate, as sometimes it's
+ // impossible to define #1 (e.g. when foo is ::std, defining
+ // anything in it is undefined behavior unless you are a compiler
+ // vendor.).
+ *os << value;
+}
+
+} // namespace testing_internal
+
+namespace testing {
+namespace internal {
+
+// UniversalPrinter<T>::Print(value, ostream_ptr) prints the given
+// value to the given ostream. The caller must ensure that
+// 'ostream_ptr' is not NULL, or the behavior is undefined.
+//
+// We define UniversalPrinter as a class template (as opposed to a
+// function template), as we need to partially specialize it for
+// reference types, which cannot be done with function templates.
+template <typename T>
+class UniversalPrinter;
+
+template <typename T>
+void UniversalPrint(const T& value, ::std::ostream* os);
+
+// Used to print an STL-style container when the user doesn't define
+// a PrintTo() for it.
+template <typename C>
+void DefaultPrintTo(IsContainer /* dummy */,
+ false_type /* is not a pointer */,
+ const C& container, ::std::ostream* os) {
+ const size_t kMaxCount = 32; // The maximum number of elements to print.
+ *os << '{';
+ size_t count = 0;
+ for (typename C::const_iterator it = container.begin();
+ it != container.end(); ++it, ++count) {
+ if (count > 0) {
+ *os << ',';
+ if (count == kMaxCount) { // Enough has been printed.
+ *os << " ...";
+ break;
+ }
+ }
+ *os << ' ';
+ // We cannot call PrintTo(*it, os) here as PrintTo() doesn't
+ // handle *it being a native array.
+ internal::UniversalPrint(*it, os);
+ }
+
+ if (count > 0) {
+ *os << ' ';
+ }
+ *os << '}';
+}
+
+// Used to print a pointer that is neither a char pointer nor a member
+// pointer, when the user doesn't define PrintTo() for it. (A member
+// variable pointer or member function pointer doesn't really point to
+// a location in the address space. Their representation is
+// implementation-defined. Therefore they will be printed as raw
+// bytes.)
+template <typename T>
+void DefaultPrintTo(IsNotContainer /* dummy */,
+ true_type /* is a pointer */,
+ T* p, ::std::ostream* os) {
+ if (p == NULL) {
+ *os << "NULL";
+ } else {
+ // C++ doesn't allow casting from a function pointer to any object
+ // pointer.
+ //
+ // IsTrue() silences warnings: "Condition is always true",
+ // "unreachable code".
+ if (IsTrue(ImplicitlyConvertible<T*, const void*>::value)) {
+ // T is not a function type. We just call << to print p,
+ // relying on ADL to pick up user-defined << for their pointer
+ // types, if any.
+ *os << p;
+ } else {
+ // T is a function type, so '*os << p' doesn't do what we want
+ // (it just prints p as bool). We want to print p as a const
+ // void*. However, we cannot cast it to const void* directly,
+ // even using reinterpret_cast, as earlier versions of gcc
+ // (e.g. 3.4.5) cannot compile the cast when p is a function
+ // pointer. Casting to UInt64 first solves the problem.
+ *os << reinterpret_cast<const void*>(
+ reinterpret_cast<internal::UInt64>(p));
+ }
+ }
+}
+
+// Used to print a non-container, non-pointer value when the user
+// doesn't define PrintTo() for it.
+template <typename T>
+void DefaultPrintTo(IsNotContainer /* dummy */,
+ false_type /* is not a pointer */,
+ const T& value, ::std::ostream* os) {
+ ::testing_internal::DefaultPrintNonContainerTo(value, os);
+}
+
+// Prints the given value using the << operator if it has one;
+// otherwise prints the bytes in it. This is what
+// UniversalPrinter<T>::Print() does when PrintTo() is not specialized
+// or overloaded for type T.
+//
+// A user can override this behavior for a class type Foo by defining
+// an overload of PrintTo() in the namespace where Foo is defined. We
+// give the user this option as sometimes defining a << operator for
+// Foo is not desirable (e.g. the coding style may prevent doing it,
+// or there is already a << operator but it doesn't do what the user
+// wants).
+template <typename T>
+void PrintTo(const T& value, ::std::ostream* os) {
+ // DefaultPrintTo() is overloaded. The type of its first two
+ // arguments determine which version will be picked. If T is an
+ // STL-style container, the version for container will be called; if
+ // T is a pointer, the pointer version will be called; otherwise the
+ // generic version will be called.
+ //
+ // Note that we check for container types here, prior to we check
+ // for protocol message types in our operator<<. The rationale is:
+ //
+ // For protocol messages, we want to give people a chance to
+ // override Google Mock's format by defining a PrintTo() or
+ // operator<<. For STL containers, other formats can be
+ // incompatible with Google Mock's format for the container
+ // elements; therefore we check for container types here to ensure
+ // that our format is used.
+ //
+ // The second argument of DefaultPrintTo() is needed to bypass a bug
+ // in Symbian's C++ compiler that prevents it from picking the right
+ // overload between:
+ //
+ // PrintTo(const T& x, ...);
+ // PrintTo(T* x, ...);
+ DefaultPrintTo(IsContainerTest<T>(0), is_pointer<T>(), value, os);
+}
+
+// The following list of PrintTo() overloads tells
+// UniversalPrinter<T>::Print() how to print standard types (built-in
+// types, strings, plain arrays, and pointers).
+
+// Overloads for various char types.
+GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os);
+GTEST_API_ void PrintTo(signed char c, ::std::ostream* os);
+inline void PrintTo(char c, ::std::ostream* os) {
+ // When printing a plain char, we always treat it as unsigned. This
+ // way, the output won't be affected by whether the compiler thinks
+ // char is signed or not.
+ PrintTo(static_cast<unsigned char>(c), os);
+}
+
+// Overloads for other simple built-in types.
+inline void PrintTo(bool x, ::std::ostream* os) {
+ *os << (x ? "true" : "false");
+}
+
+// Overload for wchar_t type.
+// Prints a wchar_t as a symbol if it is printable or as its internal
+// code otherwise and also as its decimal code (except for L'\0').
+// The L'\0' char is printed as "L'\\0'". The decimal code is printed
+// as signed integer when wchar_t is implemented by the compiler
+// as a signed type and is printed as an unsigned integer when wchar_t
+// is implemented as an unsigned type.
+GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os);
+
+// Overloads for C strings.
+GTEST_API_ void PrintTo(const char* s, ::std::ostream* os);
+inline void PrintTo(char* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const char*>(s), os);
+}
+
+// signed/unsigned char is often used for representing binary data, so
+// we print pointers to it as void* to be safe.
+inline void PrintTo(const signed char* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(signed char* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(const unsigned char* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const void*>(s), os);
+}
+inline void PrintTo(unsigned char* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const void*>(s), os);
+}
+
+// MSVC can be configured to define wchar_t as a typedef of unsigned
+// short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native
+// type. When wchar_t is a typedef, defining an overload for const
+// wchar_t* would cause unsigned short* be printed as a wide string,
+// possibly causing invalid memory accesses.
+#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
+// Overloads for wide C strings
+GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
+inline void PrintTo(wchar_t* s, ::std::ostream* os) {
+ PrintTo(ImplicitCast_<const wchar_t*>(s), os);
+}
+#endif
+
+// Overload for C arrays. Multi-dimensional arrays are printed
+// properly.
+
+// Prints the given number of elements in an array, without printing
+// the curly braces.
+template <typename T>
+void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) {
+ UniversalPrint(a[0], os);
+ for (size_t i = 1; i != count; i++) {
+ *os << ", ";
+ UniversalPrint(a[i], os);
+ }
+}
+
+// Overloads for ::string and ::std::string.
+#if GTEST_HAS_GLOBAL_STRING
+GTEST_API_ void PrintStringTo(const ::string&s, ::std::ostream* os);
+inline void PrintTo(const ::string& s, ::std::ostream* os) {
+ PrintStringTo(s, os);
+}
+#endif // GTEST_HAS_GLOBAL_STRING
+
+GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os);
+inline void PrintTo(const ::std::string& s, ::std::ostream* os) {
+ PrintStringTo(s, os);
+}
+
+// Overloads for ::wstring and ::std::wstring.
+#if GTEST_HAS_GLOBAL_WSTRING
+GTEST_API_ void PrintWideStringTo(const ::wstring&s, ::std::ostream* os);
+inline void PrintTo(const ::wstring& s, ::std::ostream* os) {
+ PrintWideStringTo(s, os);
+}
+#endif // GTEST_HAS_GLOBAL_WSTRING
+
+#if GTEST_HAS_STD_WSTRING
+GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os);
+inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) {
+ PrintWideStringTo(s, os);
+}
+#endif // GTEST_HAS_STD_WSTRING
+
+#if GTEST_HAS_TR1_TUPLE
+// Overload for ::std::tr1::tuple. Needed for printing function arguments,
+// which are packed as tuples.
+
+// Helper function for printing a tuple. T must be instantiated with
+// a tuple type.
+template <typename T>
+void PrintTupleTo(const T& t, ::std::ostream* os);
+
+// Overloaded PrintTo() for tuples of various arities. We support
+// tuples of up-to 10 fields. The following implementation works
+// regardless of whether tr1::tuple is implemented using the
+// non-standard variadic template feature or not.
+
+inline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1>
+void PrintTo(const ::std::tr1::tuple<T1>& t, ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2>
+void PrintTo(const ::std::tr1::tuple<T1, T2>& t, ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3>& t, ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4>& t, ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5>& t,
+ ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6>& t,
+ ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7>& t,
+ ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8>& t,
+ ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9>
+void PrintTo(const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>& t,
+ ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10>
+void PrintTo(
+ const ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>& t,
+ ::std::ostream* os) {
+ PrintTupleTo(t, os);
+}
+#endif // GTEST_HAS_TR1_TUPLE
+
+// Overload for std::pair.
+template <typename T1, typename T2>
+void PrintTo(const ::std::pair<T1, T2>& value, ::std::ostream* os) {
+ *os << '(';
+ // We cannot use UniversalPrint(value.first, os) here, as T1 may be
+ // a reference type. The same for printing value.second.
+ UniversalPrinter<T1>::Print(value.first, os);
+ *os << ", ";
+ UniversalPrinter<T2>::Print(value.second, os);
+ *os << ')';
+}
+
+// Implements printing a non-reference type T by letting the compiler
+// pick the right overload of PrintTo() for T.
+template <typename T>
+class UniversalPrinter {
+ public:
+ // MSVC warns about adding const to a function type, so we want to
+ // disable the warning.
+#ifdef _MSC_VER
+# pragma warning(push) // Saves the current warning state.
+# pragma warning(disable:4180) // Temporarily disables warning 4180.
+#endif // _MSC_VER
+
+ // Note: we deliberately don't call this PrintTo(), as that name
+ // conflicts with ::testing::internal::PrintTo in the body of the
+ // function.
+ static void Print(const T& value, ::std::ostream* os) {
+ // By default, ::testing::internal::PrintTo() is used for printing
+ // the value.
+ //
+ // Thanks to Koenig look-up, if T is a class and has its own
+ // PrintTo() function defined in its namespace, that function will
+ // be visible here. Since it is more specific than the generic ones
+ // in ::testing::internal, it will be picked by the compiler in the
+ // following statement - exactly what we want.
+ PrintTo(value, os);
+ }
+
+#ifdef _MSC_VER
+# pragma warning(pop) // Restores the warning state.
+#endif // _MSC_VER
+};
+
+// UniversalPrintArray(begin, len, os) prints an array of 'len'
+// elements, starting at address 'begin'.
+template <typename T>
+void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) {
+ if (len == 0) {
+ *os << "{}";
+ } else {
+ *os << "{ ";
+ const size_t kThreshold = 18;
+ const size_t kChunkSize = 8;
+ // If the array has more than kThreshold elements, we'll have to
+ // omit some details by printing only the first and the last
+ // kChunkSize elements.
+ // TODO(wan@google.com): let the user control the threshold using a flag.
+ if (len <= kThreshold) {
+ PrintRawArrayTo(begin, len, os);
+ } else {
+ PrintRawArrayTo(begin, kChunkSize, os);
+ *os << ", ..., ";
+ PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os);
+ }
+ *os << " }";
+ }
+}
+// This overload prints a (const) char array compactly.
+GTEST_API_ void UniversalPrintArray(
+ const char* begin, size_t len, ::std::ostream* os);
+
+// This overload prints a (const) wchar_t array compactly.
+GTEST_API_ void UniversalPrintArray(
+ const wchar_t* begin, size_t len, ::std::ostream* os);
+
+// Implements printing an array type T[N].
+template <typename T, size_t N>
+class UniversalPrinter<T[N]> {
+ public:
+ // Prints the given array, omitting some elements when there are too
+ // many.
+ static void Print(const T (&a)[N], ::std::ostream* os) {
+ UniversalPrintArray(a, N, os);
+ }
+};
+
+// Implements printing a reference type T&.
+template <typename T>
+class UniversalPrinter<T&> {
+ public:
+ // MSVC warns about adding const to a function type, so we want to
+ // disable the warning.
+#ifdef _MSC_VER
+# pragma warning(push) // Saves the current warning state.
+# pragma warning(disable:4180) // Temporarily disables warning 4180.
+#endif // _MSC_VER
+
+ static void Print(const T& value, ::std::ostream* os) {
+ // Prints the address of the value. We use reinterpret_cast here
+ // as static_cast doesn't compile when T is a function type.
+ *os << "@" << reinterpret_cast<const void*>(&value) << " ";
+
+ // Then prints the value itself.
+ UniversalPrint(value, os);
+ }
+
+#ifdef _MSC_VER
+# pragma warning(pop) // Restores the warning state.
+#endif // _MSC_VER
+};
+
+// Prints a value tersely: for a reference type, the referenced value
+// (but not the address) is printed; for a (const) char pointer, the
+// NUL-terminated string (but not the pointer) is printed.
+
+template <typename T>
+class UniversalTersePrinter {
+ public:
+ static void Print(const T& value, ::std::ostream* os) {
+ UniversalPrint(value, os);
+ }
+};
+template <typename T>
+class UniversalTersePrinter<T&> {
+ public:
+ static void Print(const T& value, ::std::ostream* os) {
+ UniversalPrint(value, os);
+ }
+};
+template <typename T, size_t N>
+class UniversalTersePrinter<T[N]> {
+ public:
+ static void Print(const T (&value)[N], ::std::ostream* os) {
+ UniversalPrinter<T[N]>::Print(value, os);
+ }
+};
+template <>
+class UniversalTersePrinter<const char*> {
+ public:
+ static void Print(const char* str, ::std::ostream* os) {
+ if (str == NULL) {
+ *os << "NULL";
+ } else {
+ UniversalPrint(string(str), os);
+ }
+ }
+};
+template <>
+class UniversalTersePrinter<char*> {
+ public:
+ static void Print(char* str, ::std::ostream* os) {
+ UniversalTersePrinter<const char*>::Print(str, os);
+ }
+};
+
+#if GTEST_HAS_STD_WSTRING
+template <>
+class UniversalTersePrinter<const wchar_t*> {
+ public:
+ static void Print(const wchar_t* str, ::std::ostream* os) {
+ if (str == NULL) {
+ *os << "NULL";
+ } else {
+ UniversalPrint(::std::wstring(str), os);
+ }
+ }
+};
+#endif
+
+template <>
+class UniversalTersePrinter<wchar_t*> {
+ public:
+ static void Print(wchar_t* str, ::std::ostream* os) {
+ UniversalTersePrinter<const wchar_t*>::Print(str, os);
+ }
+};
+
+template <typename T>
+void UniversalTersePrint(const T& value, ::std::ostream* os) {
+ UniversalTersePrinter<T>::Print(value, os);
+}
+
+// Prints a value using the type inferred by the compiler. The
+// difference between this and UniversalTersePrint() is that for a
+// (const) char pointer, this prints both the pointer and the
+// NUL-terminated string.
+template <typename T>
+void UniversalPrint(const T& value, ::std::ostream* os) {
+ // A workarond for the bug in VC++ 7.1 that prevents us from instantiating
+ // UniversalPrinter with T directly.
+ typedef T T1;
+ UniversalPrinter<T1>::Print(value, os);
+}
+
+#if GTEST_HAS_TR1_TUPLE
+typedef ::std::vector<string> Strings;
+
+// This helper template allows PrintTo() for tuples and
+// UniversalTersePrintTupleFieldsToStrings() to be defined by
+// induction on the number of tuple fields. The idea is that
+// TuplePrefixPrinter<N>::PrintPrefixTo(t, os) prints the first N
+// fields in tuple t, and can be defined in terms of
+// TuplePrefixPrinter<N - 1>.
+
+// The inductive case.
+template <size_t N>
+struct TuplePrefixPrinter {
+ // Prints the first N fields of a tuple.
+ template <typename Tuple>
+ static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) {
+ TuplePrefixPrinter<N - 1>::PrintPrefixTo(t, os);
+ *os << ", ";
+ UniversalPrinter<typename ::std::tr1::tuple_element<N - 1, Tuple>::type>
+ ::Print(::std::tr1::get<N - 1>(t), os);
+ }
+
+ // Tersely prints the first N fields of a tuple to a string vector,
+ // one element for each field.
+ template <typename Tuple>
+ static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) {
+ TuplePrefixPrinter<N - 1>::TersePrintPrefixToStrings(t, strings);
+ ::std::stringstream ss;
+ UniversalTersePrint(::std::tr1::get<N - 1>(t), &ss);
+ strings->push_back(ss.str());
+ }
+};
+
+// Base cases.
+template <>
+struct TuplePrefixPrinter<0> {
+ template <typename Tuple>
+ static void PrintPrefixTo(const Tuple&, ::std::ostream*) {}
+
+ template <typename Tuple>
+ static void TersePrintPrefixToStrings(const Tuple&, Strings*) {}
+};
+// We have to specialize the entire TuplePrefixPrinter<> class
+// template here, even though the definition of
+// TersePrintPrefixToStrings() is the same as the generic version, as
+// Embarcadero (formerly CodeGear, formerly Borland) C++ doesn't
+// support specializing a method template of a class template.
+template <>
+struct TuplePrefixPrinter<1> {
+ template <typename Tuple>
+ static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) {
+ UniversalPrinter<typename ::std::tr1::tuple_element<0, Tuple>::type>::
+ Print(::std::tr1::get<0>(t), os);
+ }
+
+ template <typename Tuple>
+ static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) {
+ ::std::stringstream ss;
+ UniversalTersePrint(::std::tr1::get<0>(t), &ss);
+ strings->push_back(ss.str());
+ }
+};
+
+// Helper function for printing a tuple. T must be instantiated with
+// a tuple type.
+template <typename T>
+void PrintTupleTo(const T& t, ::std::ostream* os) {
+ *os << "(";
+ TuplePrefixPrinter< ::std::tr1::tuple_size<T>::value>::
+ PrintPrefixTo(t, os);
+ *os << ")";
+}
+
+// Prints the fields of a tuple tersely to a string vector, one
+// element for each field. See the comment before
+// UniversalTersePrint() for how we define "tersely".
+template <typename Tuple>
+Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) {
+ Strings result;
+ TuplePrefixPrinter< ::std::tr1::tuple_size<Tuple>::value>::
+ TersePrintPrefixToStrings(value, &result);
+ return result;
+}
+#endif // GTEST_HAS_TR1_TUPLE
+
+} // namespace internal
+
+template <typename T>
+::std::string PrintToString(const T& value) {
+ ::std::stringstream ss;
+ internal::UniversalTersePrinter<T>::Print(value, &ss);
+ return ss.str();
+}
+
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
diff --git a/test/fmw/gtest/include/gtest/gtest-spi.h b/test/fmw/gtest/include/gtest/gtest-spi.h
new file mode 100644
index 0000000..f63fa9a
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/gtest-spi.h
@@ -0,0 +1,232 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// Utilities for testing Google Test itself and code that uses Google Test
+// (e.g. frameworks built on top of Google Test).
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_SPI_H_
+#define GTEST_INCLUDE_GTEST_GTEST_SPI_H_
+
+#include "gtest/gtest.h"
+
+namespace testing {
+
+// This helper class can be used to mock out Google Test failure reporting
+// so that we can test Google Test or code that builds on Google Test.
+//
+// An object of this class appends a TestPartResult object to the
+// TestPartResultArray object given in the constructor whenever a Google Test
+// failure is reported. It can either intercept only failures that are
+// generated in the same thread that created this object or it can intercept
+// all generated failures. The scope of this mock object can be controlled with
+// the second argument to the two arguments constructor.
+class GTEST_API_ ScopedFakeTestPartResultReporter
+ : public TestPartResultReporterInterface {
+ public:
+ // The two possible mocking modes of this object.
+ enum InterceptMode {
+ INTERCEPT_ONLY_CURRENT_THREAD, // Intercepts only thread local failures.
+ INTERCEPT_ALL_THREADS // Intercepts all failures.
+ };
+
+ // The c'tor sets this object as the test part result reporter used
+ // by Google Test. The 'result' parameter specifies where to report the
+ // results. This reporter will only catch failures generated in the current
+ // thread. DEPRECATED
+ explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result);
+
+ // Same as above, but you can choose the interception scope of this object.
+ ScopedFakeTestPartResultReporter(InterceptMode intercept_mode,
+ TestPartResultArray* result);
+
+ // The d'tor restores the previous test part result reporter.
+ virtual ~ScopedFakeTestPartResultReporter();
+
+ // Appends the TestPartResult object to the TestPartResultArray
+ // received in the constructor.
+ //
+ // This method is from the TestPartResultReporterInterface
+ // interface.
+ virtual void ReportTestPartResult(const TestPartResult& result);
+ private:
+ void Init();
+
+ const InterceptMode intercept_mode_;
+ TestPartResultReporterInterface* old_reporter_;
+ TestPartResultArray* const result_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedFakeTestPartResultReporter);
+};
+
+namespace internal {
+
+// A helper class for implementing EXPECT_FATAL_FAILURE() and
+// EXPECT_NONFATAL_FAILURE(). Its destructor verifies that the given
+// TestPartResultArray contains exactly one failure that has the given
+// type and contains the given substring. If that's not the case, a
+// non-fatal failure will be generated.
+class GTEST_API_ SingleFailureChecker {
+ public:
+ // The constructor remembers the arguments.
+ SingleFailureChecker(const TestPartResultArray* results,
+ TestPartResult::Type type,
+ const string& substr);
+ ~SingleFailureChecker();
+ private:
+ const TestPartResultArray* const results_;
+ const TestPartResult::Type type_;
+ const string substr_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(SingleFailureChecker);
+};
+
+} // namespace internal
+
+} // namespace testing
+
+// A set of macros for testing Google Test assertions or code that's expected
+// to generate Google Test fatal failures. It verifies that the given
+// statement will cause exactly one fatal Google Test failure with 'substr'
+// being part of the failure message.
+//
+// There are two different versions of this macro. EXPECT_FATAL_FAILURE only
+// affects and considers failures generated in the current thread and
+// EXPECT_FATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
+//
+// The verification of the assertion is done correctly even when the statement
+// throws an exception or aborts the current function.
+//
+// Known restrictions:
+// - 'statement' cannot reference local non-static variables or
+// non-static members of the current object.
+// - 'statement' cannot return a value.
+// - You cannot stream a failure message to this macro.
+//
+// Note that even though the implementations of the following two
+// macros are much alike, we cannot refactor them to use a common
+// helper macro, due to some peculiarity in how the preprocessor
+// works. The AcceptsMacroThatExpandsToUnprotectedComma test in
+// gtest_unittest.cc will fail to compile if we do that.
+#define EXPECT_FATAL_FAILURE(statement, substr) \
+ do { \
+ class GTestExpectFatalFailureHelper {\
+ public:\
+ static void Execute() { statement; }\
+ };\
+ ::testing::TestPartResultArray gtest_failures;\
+ ::testing::internal::SingleFailureChecker gtest_checker(\
+ &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
+ {\
+ ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
+ ::testing::ScopedFakeTestPartResultReporter:: \
+ INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
+ GTestExpectFatalFailureHelper::Execute();\
+ }\
+ } while (::testing::internal::AlwaysFalse())
+
+#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
+ do { \
+ class GTestExpectFatalFailureHelper {\
+ public:\
+ static void Execute() { statement; }\
+ };\
+ ::testing::TestPartResultArray gtest_failures;\
+ ::testing::internal::SingleFailureChecker gtest_checker(\
+ &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
+ {\
+ ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
+ ::testing::ScopedFakeTestPartResultReporter:: \
+ INTERCEPT_ALL_THREADS, &gtest_failures);\
+ GTestExpectFatalFailureHelper::Execute();\
+ }\
+ } while (::testing::internal::AlwaysFalse())
+
+// A macro for testing Google Test assertions or code that's expected to
+// generate Google Test non-fatal failures. It asserts that the given
+// statement will cause exactly one non-fatal Google Test failure with 'substr'
+// being part of the failure message.
+//
+// There are two different versions of this macro. EXPECT_NONFATAL_FAILURE only
+// affects and considers failures generated in the current thread and
+// EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
+//
+// 'statement' is allowed to reference local variables and members of
+// the current object.
+//
+// The verification of the assertion is done correctly even when the statement
+// throws an exception or aborts the current function.
+//
+// Known restrictions:
+// - You cannot stream a failure message to this macro.
+//
+// Note that even though the implementations of the following two
+// macros are much alike, we cannot refactor them to use a common
+// helper macro, due to some peculiarity in how the preprocessor
+// works. If we do that, the code won't compile when the user gives
+// EXPECT_NONFATAL_FAILURE() a statement that contains a macro that
+// expands to code containing an unprotected comma. The
+// AcceptsMacroThatExpandsToUnprotectedComma test in gtest_unittest.cc
+// catches that.
+//
+// For the same reason, we have to write
+// if (::testing::internal::AlwaysTrue()) { statement; }
+// instead of
+// GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
+// to avoid an MSVC warning on unreachable code.
+#define EXPECT_NONFATAL_FAILURE(statement, substr) \
+ do {\
+ ::testing::TestPartResultArray gtest_failures;\
+ ::testing::internal::SingleFailureChecker gtest_checker(\
+ &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
+ (substr));\
+ {\
+ ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
+ ::testing::ScopedFakeTestPartResultReporter:: \
+ INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
+ if (::testing::internal::AlwaysTrue()) { statement; }\
+ }\
+ } while (::testing::internal::AlwaysFalse())
+
+#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
+ do {\
+ ::testing::TestPartResultArray gtest_failures;\
+ ::testing::internal::SingleFailureChecker gtest_checker(\
+ &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
+ (substr));\
+ {\
+ ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
+ ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \
+ &gtest_failures);\
+ if (::testing::internal::AlwaysTrue()) { statement; }\
+ }\
+ } while (::testing::internal::AlwaysFalse())
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_SPI_H_
diff --git a/test/fmw/gtest/include/gtest/gtest-test-part.h b/test/fmw/gtest/include/gtest/gtest-test-part.h
new file mode 100644
index 0000000..77eb844
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/gtest-test-part.h
@@ -0,0 +1,179 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: mheule@google.com (Markus Heule)
+//
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
+#define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
+
+#include <iosfwd>
+#include <vector>
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-string.h"
+
+namespace testing {
+
+// A copyable object representing the result of a test part (i.e. an
+// assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()).
+//
+// Don't inherit from TestPartResult as its destructor is not virtual.
+class GTEST_API_ TestPartResult {
+ public:
+ // The possible outcomes of a test part (i.e. an assertion or an
+ // explicit SUCCEED(), FAIL(), or ADD_FAILURE()).
+ enum Type {
+ kSuccess, // Succeeded.
+ kNonFatalFailure, // Failed but the test can continue.
+ kFatalFailure // Failed and the test should be terminated.
+ };
+
+ // C'tor. TestPartResult does NOT have a default constructor.
+ // Always use this constructor (with parameters) to create a
+ // TestPartResult object.
+ TestPartResult(Type a_type,
+ const char* a_file_name,
+ int a_line_number,
+ const char* a_message)
+ : type_(a_type),
+ file_name_(a_file_name == NULL ? "" : a_file_name),
+ line_number_(a_line_number),
+ summary_(ExtractSummary(a_message)),
+ message_(a_message) {
+ }
+
+ // Gets the outcome of the test part.
+ Type type() const { return type_; }
+
+ // Gets the name of the source file where the test part took place, or
+ // NULL if it's unknown.
+ const char* file_name() const {
+ return file_name_.empty() ? NULL : file_name_.c_str();
+ }
+
+ // Gets the line in the source file where the test part took place,
+ // or -1 if it's unknown.
+ int line_number() const { return line_number_; }
+
+ // Gets the summary of the failure message.
+ const char* summary() const { return summary_.c_str(); }
+
+ // Gets the message associated with the test part.
+ const char* message() const { return message_.c_str(); }
+
+ // Returns true iff the test part passed.
+ bool passed() const { return type_ == kSuccess; }
+
+ // Returns true iff the test part failed.
+ bool failed() const { return type_ != kSuccess; }
+
+ // Returns true iff the test part non-fatally failed.
+ bool nonfatally_failed() const { return type_ == kNonFatalFailure; }
+
+ // Returns true iff the test part fatally failed.
+ bool fatally_failed() const { return type_ == kFatalFailure; }
+
+ private:
+ Type type_;
+
+ // Gets the summary of the failure message by omitting the stack
+ // trace in it.
+ static std::string ExtractSummary(const char* message);
+
+ // The name of the source file where the test part took place, or
+ // "" if the source file is unknown.
+ std::string file_name_;
+ // The line in the source file where the test part took place, or -1
+ // if the line number is unknown.
+ int line_number_;
+ std::string summary_; // The test failure summary.
+ std::string message_; // The test failure message.
+};
+
+// Prints a TestPartResult object.
+std::ostream& operator<<(std::ostream& os, const TestPartResult& result);
+
+// An array of TestPartResult objects.
+//
+// Don't inherit from TestPartResultArray as its destructor is not
+// virtual.
+class GTEST_API_ TestPartResultArray {
+ public:
+ TestPartResultArray() {}
+
+ // Appends the given TestPartResult to the array.
+ void Append(const TestPartResult& result);
+
+ // Returns the TestPartResult at the given index (0-based).
+ const TestPartResult& GetTestPartResult(int index) const;
+
+ // Returns the number of TestPartResult objects in the array.
+ int size() const;
+
+ private:
+ std::vector<TestPartResult> array_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray);
+};
+
+// This interface knows how to report a test part result.
+class TestPartResultReporterInterface {
+ public:
+ virtual ~TestPartResultReporterInterface() {}
+
+ virtual void ReportTestPartResult(const TestPartResult& result) = 0;
+};
+
+namespace internal {
+
+// This helper class is used by {ASSERT|EXPECT}_NO_FATAL_FAILURE to check if a
+// statement generates new fatal failures. To do so it registers itself as the
+// current test part result reporter. Besides checking if fatal failures were
+// reported, it only delegates the reporting to the former result reporter.
+// The original result reporter is restored in the destructor.
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+class GTEST_API_ HasNewFatalFailureHelper
+ : public TestPartResultReporterInterface {
+ public:
+ HasNewFatalFailureHelper();
+ virtual ~HasNewFatalFailureHelper();
+ virtual void ReportTestPartResult(const TestPartResult& result);
+ bool has_new_fatal_failure() const { return has_new_fatal_failure_; }
+ private:
+ bool has_new_fatal_failure_;
+ TestPartResultReporterInterface* original_reporter_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper);
+};
+
+} // namespace internal
+
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
diff --git a/test/fmw/gtest/include/gtest/gtest-typed-test.h b/test/fmw/gtest/include/gtest/gtest-typed-test.h
new file mode 100644
index 0000000..fe1e83b
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/gtest-typed-test.h
@@ -0,0 +1,259 @@
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
+#define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
+
+// This header implements typed tests and type-parameterized tests.
+
+// Typed (aka type-driven) tests repeat the same test for types in a
+// list. You must know which types you want to test with when writing
+// typed tests. Here's how you do it:
+
+#if 0
+
+// First, define a fixture class template. It should be parameterized
+// by a type. Remember to derive it from testing::Test.
+template <typename T>
+class FooTest : public testing::Test {
+ public:
+ ...
+ typedef std::list<T> List;
+ static T shared_;
+ T value_;
+};
+
+// Next, associate a list of types with the test case, which will be
+// repeated for each type in the list. The typedef is necessary for
+// the macro to parse correctly.
+typedef testing::Types<char, int, unsigned int> MyTypes;
+TYPED_TEST_CASE(FooTest, MyTypes);
+
+// If the type list contains only one type, you can write that type
+// directly without Types<...>:
+// TYPED_TEST_CASE(FooTest, int);
+
+// Then, use TYPED_TEST() instead of TEST_F() to define as many typed
+// tests for this test case as you want.
+TYPED_TEST(FooTest, DoesBlah) {
+ // Inside a test, refer to TypeParam to get the type parameter.
+ // Since we are inside a derived class template, C++ requires use to
+ // visit the members of FooTest via 'this'.
+ TypeParam n = this->value_;
+
+ // To visit static members of the fixture, add the TestFixture::
+ // prefix.
+ n += TestFixture::shared_;
+
+ // To refer to typedefs in the fixture, add the "typename
+ // TestFixture::" prefix.
+ typename TestFixture::List values;
+ values.push_back(n);
+ ...
+}
+
+TYPED_TEST(FooTest, HasPropertyA) { ... }
+
+#endif // 0
+
+// Type-parameterized tests are abstract test patterns parameterized
+// by a type. Compared with typed tests, type-parameterized tests
+// allow you to define the test pattern without knowing what the type
+// parameters are. The defined pattern can be instantiated with
+// different types any number of times, in any number of translation
+// units.
+//
+// If you are designing an interface or concept, you can define a
+// suite of type-parameterized tests to verify properties that any
+// valid implementation of the interface/concept should have. Then,
+// each implementation can easily instantiate the test suite to verify
+// that it conforms to the requirements, without having to write
+// similar tests repeatedly. Here's an example:
+
+#if 0
+
+// First, define a fixture class template. It should be parameterized
+// by a type. Remember to derive it from testing::Test.
+template <typename T>
+class FooTest : public testing::Test {
+ ...
+};
+
+// Next, declare that you will define a type-parameterized test case
+// (the _P suffix is for "parameterized" or "pattern", whichever you
+// prefer):
+TYPED_TEST_CASE_P(FooTest);
+
+// Then, use TYPED_TEST_P() to define as many type-parameterized tests
+// for this type-parameterized test case as you want.
+TYPED_TEST_P(FooTest, DoesBlah) {
+ // Inside a test, refer to TypeParam to get the type parameter.
+ TypeParam n = 0;
+ ...
+}
+
+TYPED_TEST_P(FooTest, HasPropertyA) { ... }
+
+// Now the tricky part: you need to register all test patterns before
+// you can instantiate them. The first argument of the macro is the
+// test case name; the rest are the names of the tests in this test
+// case.
+REGISTER_TYPED_TEST_CASE_P(FooTest,
+ DoesBlah, HasPropertyA);
+
+// Finally, you are free to instantiate the pattern with the types you
+// want. If you put the above code in a header file, you can #include
+// it in multiple C++ source files and instantiate it multiple times.
+//
+// To distinguish different instances of the pattern, the first
+// argument to the INSTANTIATE_* macro is a prefix that will be added
+// to the actual test case name. Remember to pick unique prefixes for
+// different instances.
+typedef testing::Types<char, int, unsigned int> MyTypes;
+INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes);
+
+// If the type list contains only one type, you can write that type
+// directly without Types<...>:
+// INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, int);
+
+#endif // 0
+
+#include "gtest/internal/gtest-port.h"
+#include "gtest/internal/gtest-type-util.h"
+
+// Implements typed tests.
+
+#if GTEST_HAS_TYPED_TEST
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Expands to the name of the typedef for the type parameters of the
+// given test case.
+# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_
+
+// The 'Types' template argument below must have spaces around it
+// since some compilers may choke on '>>' when passing a template
+// instance (e.g. Types<int>)
+# define TYPED_TEST_CASE(CaseName, Types) \
+ typedef ::testing::internal::TypeList< Types >::type \
+ GTEST_TYPE_PARAMS_(CaseName)
+
+# define TYPED_TEST(CaseName, TestName) \
+ template <typename gtest_TypeParam_> \
+ class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \
+ : public CaseName<gtest_TypeParam_> { \
+ private: \
+ typedef CaseName<gtest_TypeParam_> TestFixture; \
+ typedef gtest_TypeParam_ TypeParam; \
+ virtual void TestBody(); \
+ }; \
+ bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \
+ ::testing::internal::TypeParameterizedTest< \
+ CaseName, \
+ ::testing::internal::TemplateSel< \
+ GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \
+ GTEST_TYPE_PARAMS_(CaseName)>::Register(\
+ "", #CaseName, #TestName, 0); \
+ template <typename gtest_TypeParam_> \
+ void GTEST_TEST_CLASS_NAME_(CaseName, TestName)<gtest_TypeParam_>::TestBody()
+
+#endif // GTEST_HAS_TYPED_TEST
+
+// Implements type-parameterized tests.
+
+#if GTEST_HAS_TYPED_TEST_P
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Expands to the namespace name that the type-parameterized tests for
+// the given type-parameterized test case are defined in. The exact
+// name of the namespace is subject to change without notice.
+# define GTEST_CASE_NAMESPACE_(TestCaseName) \
+ gtest_case_##TestCaseName##_
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Expands to the name of the variable used to remember the names of
+// the defined tests in the given test case.
+# define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \
+ gtest_typed_test_case_p_state_##TestCaseName##_
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY.
+//
+// Expands to the name of the variable used to remember the names of
+// the registered tests in the given test case.
+# define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \
+ gtest_registered_test_names_##TestCaseName##_
+
+// The variables defined in the type-parameterized test macros are
+// static as typically these macros are used in a .h file that can be
+// #included in multiple translation units linked together.
+# define TYPED_TEST_CASE_P(CaseName) \
+ static ::testing::internal::TypedTestCasePState \
+ GTEST_TYPED_TEST_CASE_P_STATE_(CaseName)
+
+# define TYPED_TEST_P(CaseName, TestName) \
+ namespace GTEST_CASE_NAMESPACE_(CaseName) { \
+ template <typename gtest_TypeParam_> \
+ class TestName : public CaseName<gtest_TypeParam_> { \
+ private: \
+ typedef CaseName<gtest_TypeParam_> TestFixture; \
+ typedef gtest_TypeParam_ TypeParam; \
+ virtual void TestBody(); \
+ }; \
+ static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \
+ GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\
+ __FILE__, __LINE__, #CaseName, #TestName); \
+ } \
+ template <typename gtest_TypeParam_> \
+ void GTEST_CASE_NAMESPACE_(CaseName)::TestName<gtest_TypeParam_>::TestBody()
+
+# define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \
+ namespace GTEST_CASE_NAMESPACE_(CaseName) { \
+ typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \
+ } \
+ static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \
+ GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\
+ __FILE__, __LINE__, #__VA_ARGS__)
+
+// The 'Types' template argument below must have spaces around it
+// since some compilers may choke on '>>' when passing a template
+// instance (e.g. Types<int>)
+# define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \
+ bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \
+ ::testing::internal::TypeParameterizedTestCase<CaseName, \
+ GTEST_CASE_NAMESPACE_(CaseName)::gtest_AllTests_, \
+ ::testing::internal::TypeList< Types >::type>::Register(\
+ #Prefix, #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName))
+
+#endif // GTEST_HAS_TYPED_TEST_P
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
diff --git a/test/fmw/gtest/include/gtest/gtest.h b/test/fmw/gtest/include/gtest/gtest.h
new file mode 100644
index 0000000..6fa0a39
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/gtest.h
@@ -0,0 +1,2291 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file defines the public API for Google Test. It should be
+// included by any test program that uses Google Test.
+//
+// IMPORTANT NOTE: Due to limitation of the C++ language, we have to
+// leave some internal implementation details in this header file.
+// They are clearly marked by comments like this:
+//
+// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+//
+// Such code is NOT meant to be used by a user directly, and is subject
+// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
+// program!
+//
+// Acknowledgment: Google Test borrowed the idea of automatic test
+// registration from Barthelemy Dagenais' (barthelemy@prologique.com)
+// easyUnit framework.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
+#define GTEST_INCLUDE_GTEST_GTEST_H_
+
+#include <limits>
+#include <ostream>
+#include <vector>
+
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-string.h"
+#include "gtest/gtest-death-test.h"
+#include "gtest/gtest-message.h"
+#include "gtest/gtest-param-test.h"
+#include "gtest/gtest-printers.h"
+#include "gtest/gtest_prod.h"
+#include "gtest/gtest-test-part.h"
+#include "gtest/gtest-typed-test.h"
+
+// Depending on the platform, different string classes are available.
+// On Linux, in addition to ::std::string, Google also makes use of
+// class ::string, which has the same interface as ::std::string, but
+// has a different implementation.
+//
+// The user can define GTEST_HAS_GLOBAL_STRING to 1 to indicate that
+// ::string is available AND is a distinct type to ::std::string, or
+// define it to 0 to indicate otherwise.
+//
+// If the user's ::std::string and ::string are the same class due to
+// aliasing, he should define GTEST_HAS_GLOBAL_STRING to 0.
+//
+// If the user doesn't define GTEST_HAS_GLOBAL_STRING, it is defined
+// heuristically.
+
+namespace testing {
+
+// Declares the flags.
+
+// This flag temporary enables the disabled tests.
+GTEST_DECLARE_bool_(also_run_disabled_tests);
+
+// This flag brings the debugger on an assertion failure.
+GTEST_DECLARE_bool_(break_on_failure);
+
+// This flag controls whether Google Test catches all test-thrown exceptions
+// and logs them as failures.
+GTEST_DECLARE_bool_(catch_exceptions);
+
+// This flag enables using colors in terminal output. Available values are
+// "yes" to enable colors, "no" (disable colors), or "auto" (the default)
+// to let Google Test decide.
+GTEST_DECLARE_string_(color);
+
+// This flag sets up the filter to select by name using a glob pattern
+// the tests to run. If the filter is not given all tests are executed.
+GTEST_DECLARE_string_(filter);
+
+// This flag causes the Google Test to list tests. None of the tests listed
+// are actually run if the flag is provided.
+GTEST_DECLARE_bool_(list_tests);
+
+// This flag controls whether Google Test emits a detailed XML report to a file
+// in addition to its normal textual output.
+GTEST_DECLARE_string_(output);
+
+// This flags control whether Google Test prints the elapsed time for each
+// test.
+GTEST_DECLARE_bool_(print_time);
+
+// This flag specifies the random number seed.
+GTEST_DECLARE_int32_(random_seed);
+
+// This flag sets how many times the tests are repeated. The default value
+// is 1. If the value is -1 the tests are repeating forever.
+GTEST_DECLARE_int32_(repeat);
+
+// This flag controls whether Google Test includes Google Test internal
+// stack frames in failure stack traces.
+GTEST_DECLARE_bool_(show_internal_stack_frames);
+
+// When this flag is specified, tests' order is randomized on every iteration.
+GTEST_DECLARE_bool_(shuffle);
+
+// This flag specifies the maximum number of stack frames to be
+// printed in a failure message.
+GTEST_DECLARE_int32_(stack_trace_depth);
+
+// When this flag is specified, a failed assertion will throw an
+// exception if exceptions are enabled, or exit the program with a
+// non-zero code otherwise.
+GTEST_DECLARE_bool_(throw_on_failure);
+
+// When this flag is set with a "host:port" string, on supported
+// platforms test results are streamed to the specified port on
+// the specified host machine.
+GTEST_DECLARE_string_(stream_result_to);
+
+// The upper limit for valid stack trace depths.
+const int kMaxStackTraceDepth = 100;
+
+namespace internal {
+
+class AssertHelper;
+class DefaultGlobalTestPartResultReporter;
+class ExecDeathTest;
+class NoExecDeathTest;
+class FinalSuccessChecker;
+class GTestFlagSaver;
+class StreamingListenerTest;
+class TestResultAccessor;
+class TestEventListenersAccessor;
+class TestEventRepeater;
+class UnitTestRecordPropertyTestHelper;
+class WindowsDeathTest;
+class UnitTestImpl* GetUnitTestImpl();
+void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
+ const std::string& message);
+
+} // namespace internal
+
+// The friend relationship of some of these classes is cyclic.
+// If we don't forward declare them the compiler might confuse the classes
+// in friendship clauses with same named classes on the scope.
+class Test;
+class TestCase;
+class TestInfo;
+class UnitTest;
+
+// A class for indicating whether an assertion was successful. When
+// the assertion wasn't successful, the AssertionResult object
+// remembers a non-empty message that describes how it failed.
+//
+// To create an instance of this class, use one of the factory functions
+// (AssertionSuccess() and AssertionFailure()).
+//
+// This class is useful for two purposes:
+// 1. Defining predicate functions to be used with Boolean test assertions
+// EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts
+// 2. Defining predicate-format functions to be
+// used with predicate assertions (ASSERT_PRED_FORMAT*, etc).
+//
+// For example, if you define IsEven predicate:
+//
+// testing::AssertionResult IsEven(int n) {
+// if ((n % 2) == 0)
+// return testing::AssertionSuccess();
+// else
+// return testing::AssertionFailure() << n << " is odd";
+// }
+//
+// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5)))
+// will print the message
+//
+// Value of: IsEven(Fib(5))
+// Actual: false (5 is odd)
+// Expected: true
+//
+// instead of a more opaque
+//
+// Value of: IsEven(Fib(5))
+// Actual: false
+// Expected: true
+//
+// in case IsEven is a simple Boolean predicate.
+//
+// If you expect your predicate to be reused and want to support informative
+// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up
+// about half as often as positive ones in our tests), supply messages for
+// both success and failure cases:
+//
+// testing::AssertionResult IsEven(int n) {
+// if ((n % 2) == 0)
+// return testing::AssertionSuccess() << n << " is even";
+// else
+// return testing::AssertionFailure() << n << " is odd";
+// }
+//
+// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print
+//
+// Value of: IsEven(Fib(6))
+// Actual: true (8 is even)
+// Expected: false
+//
+// NB: Predicates that support negative Boolean assertions have reduced
+// performance in positive ones so be careful not to use them in tests
+// that have lots (tens of thousands) of positive Boolean assertions.
+//
+// To use this class with EXPECT_PRED_FORMAT assertions such as:
+//
+// // Verifies that Foo() returns an even number.
+// EXPECT_PRED_FORMAT1(IsEven, Foo());
+//
+// you need to define:
+//
+// testing::AssertionResult IsEven(const char* expr, int n) {
+// if ((n % 2) == 0)
+// return testing::AssertionSuccess();
+// else
+// return testing::AssertionFailure()
+// << "Expected: " << expr << " is even\n Actual: it's " << n;
+// }
+//
+// If Foo() returns 5, you will see the following message:
+//
+// Expected: Foo() is even
+// Actual: it's 5
+//
+class GTEST_API_ AssertionResult {
+ public:
+ // Copy constructor.
+ // Used in EXPECT_TRUE/FALSE(assertion_result).
+ AssertionResult(const AssertionResult& other);
+ // Used in the EXPECT_TRUE/FALSE(bool_expression).
+ explicit AssertionResult(bool success) : success_(success) {}
+
+ // Returns true iff the assertion succeeded.
+ operator bool() const { return success_; } // NOLINT
+
+ // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
+ AssertionResult operator!() const;
+
+ // Returns the text streamed into this AssertionResult. Test assertions
+ // use it when they fail (i.e., the predicate's outcome doesn't match the
+ // assertion's expectation). When nothing has been streamed into the
+ // object, returns an empty string.
+ const char* message() const {
+ return message_.get() != NULL ? message_->c_str() : "";
+ }
+ // TODO(vladl@google.com): Remove this after making sure no clients use it.
+ // Deprecated; please use message() instead.
+ const char* failure_message() const { return message(); }
+
+ // Streams a custom failure message into this object.
+ template <typename T> AssertionResult& operator<<(const T& value) {
+ AppendMessage(Message() << value);
+ return *this;
+ }
+
+ // Allows streaming basic output manipulators such as endl or flush into
+ // this object.
+ AssertionResult& operator<<(
+ ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) {
+ AppendMessage(Message() << basic_manipulator);
+ return *this;
+ }
+
+ private:
+ // Appends the contents of message to message_.
+ void AppendMessage(const Message& a_message) {
+ if (message_.get() == NULL)
+ message_.reset(new ::std::string);
+ message_->append(a_message.GetString().c_str());
+ }
+
+ // Stores result of the assertion predicate.
+ bool success_;
+ // Stores the message describing the condition in case the expectation
+ // construct is not satisfied with the predicate's outcome.
+ // Referenced via a pointer to avoid taking too much stack frame space
+ // with test assertions.
+ internal::scoped_ptr< ::std::string> message_;
+
+ GTEST_DISALLOW_ASSIGN_(AssertionResult);
+};
+
+// Makes a successful assertion result.
+GTEST_API_ AssertionResult AssertionSuccess();
+
+// Makes a failed assertion result.
+GTEST_API_ AssertionResult AssertionFailure();
+
+// Makes a failed assertion result with the given failure message.
+// Deprecated; use AssertionFailure() << msg.
+GTEST_API_ AssertionResult AssertionFailure(const Message& msg);
+
+// The abstract class that all tests inherit from.
+//
+// In Google Test, a unit test program contains one or many TestCases, and
+// each TestCase contains one or many Tests.
+//
+// When you define a test using the TEST macro, you don't need to
+// explicitly derive from Test - the TEST macro automatically does
+// this for you.
+//
+// The only time you derive from Test is when defining a test fixture
+// to be used a TEST_F. For example:
+//
+// class FooTest : public testing::Test {
+// protected:
+// virtual void SetUp() { ... }
+// virtual void TearDown() { ... }
+// ...
+// };
+//
+// TEST_F(FooTest, Bar) { ... }
+// TEST_F(FooTest, Baz) { ... }
+//
+// Test is not copyable.
+class GTEST_API_ Test {
+ public:
+ friend class TestInfo;
+
+ // Defines types for pointers to functions that set up and tear down
+ // a test case.
+ typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc;
+ typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc;
+
+ // The d'tor is virtual as we intend to inherit from Test.
+ virtual ~Test();
+
+ // Sets up the stuff shared by all tests in this test case.
+ //
+ // Google Test will call Foo::SetUpTestCase() before running the first
+ // test in test case Foo. Hence a sub-class can define its own
+ // SetUpTestCase() method to shadow the one defined in the super
+ // class.
+ static void SetUpTestCase() {}
+
+ // Tears down the stuff shared by all tests in this test case.
+ //
+ // Google Test will call Foo::TearDownTestCase() after running the last
+ // test in test case Foo. Hence a sub-class can define its own
+ // TearDownTestCase() method to shadow the one defined in the super
+ // class.
+ static void TearDownTestCase() {}
+
+ // Returns true iff the current test has a fatal failure.
+ static bool HasFatalFailure();
+
+ // Returns true iff the current test has a non-fatal failure.
+ static bool HasNonfatalFailure();
+
+ // Returns true iff the current test has a (either fatal or
+ // non-fatal) failure.
+ static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); }
+
+ // Logs a property for the current test, test case, or for the entire
+ // invocation of the test program when used outside of the context of a
+ // test case. Only the last value for a given key is remembered. These
+ // are public static so they can be called from utility functions that are
+ // not members of the test fixture. Calls to RecordProperty made during
+ // lifespan of the test (from the moment its constructor starts to the
+ // moment its destructor finishes) will be output in XML as attributes of
+ // the <testcase> element. Properties recorded from fixture's
+ // SetUpTestCase or TearDownTestCase are logged as attributes of the
+ // corresponding <testsuite> element. Calls to RecordProperty made in the
+ // global context (before or after invocation of RUN_ALL_TESTS and from
+ // SetUp/TearDown method of Environment objects registered with Google
+ // Test) will be output as attributes of the <testsuites> element.
+ static void RecordProperty(const std::string& key, const std::string& value);
+ static void RecordProperty(const std::string& key, int value);
+
+ protected:
+ // Creates a Test object.
+ Test();
+
+ // Sets up the test fixture.
+ virtual void SetUp();
+
+ // Tears down the test fixture.
+ virtual void TearDown();
+
+ private:
+ // Returns true iff the current test has the same fixture class as
+ // the first test in the current test case.
+ static bool HasSameFixtureClass();
+
+ // Runs the test after the test fixture has been set up.
+ //
+ // A sub-class must implement this to define the test logic.
+ //
+ // DO NOT OVERRIDE THIS FUNCTION DIRECTLY IN A USER PROGRAM.
+ // Instead, use the TEST or TEST_F macro.
+ virtual void TestBody() = 0;
+
+ // Sets up, executes, and tears down the test.
+ void Run();
+
+ // Deletes self. We deliberately pick an unusual name for this
+ // internal method to avoid clashing with names used in user TESTs.
+ void DeleteSelf_() { delete this; }
+
+ // Uses a GTestFlagSaver to save and restore all Google Test flags.
+ const internal::GTestFlagSaver* const gtest_flag_saver_;
+
+ // Often a user mis-spells SetUp() as Setup() and spends a long time
+ // wondering why it is never called by Google Test. The declaration of
+ // the following method is solely for catching such an error at
+ // compile time:
+ //
+ // - The return type is deliberately chosen to be not void, so it
+ // will be a conflict if a user declares void Setup() in his test
+ // fixture.
+ //
+ // - This method is private, so it will be another compiler error
+ // if a user calls it from his test fixture.
+ //
+ // DO NOT OVERRIDE THIS FUNCTION.
+ //
+ // If you see an error about overriding the following function or
+ // about it being private, you have mis-spelled SetUp() as Setup().
+ struct Setup_should_be_spelled_SetUp {};
+ virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; }
+
+ // We disallow copying Tests.
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Test);
+};
+
+typedef internal::TimeInMillis TimeInMillis;
+
+// A copyable object representing a user specified test property which can be
+// output as a key/value string pair.
+//
+// Don't inherit from TestProperty as its destructor is not virtual.
+class TestProperty {
+ public:
+ // C'tor. TestProperty does NOT have a default constructor.
+ // Always use this constructor (with parameters) to create a
+ // TestProperty object.
+ TestProperty(const std::string& a_key, const std::string& a_value) :
+ key_(a_key), value_(a_value) {
+ }
+
+ // Gets the user supplied key.
+ const char* key() const {
+ return key_.c_str();
+ }
+
+ // Gets the user supplied value.
+ const char* value() const {
+ return value_.c_str();
+ }
+
+ // Sets a new value, overriding the one supplied in the constructor.
+ void SetValue(const std::string& new_value) {
+ value_ = new_value;
+ }
+
+ private:
+ // The key supplied by the user.
+ std::string key_;
+ // The value supplied by the user.
+ std::string value_;
+};
+
+// The result of a single Test. This includes a list of
+// TestPartResults, a list of TestProperties, a count of how many
+// death tests there are in the Test, and how much time it took to run
+// the Test.
+//
+// TestResult is not copyable.
+class GTEST_API_ TestResult {
+ public:
+ // Creates an empty TestResult.
+ TestResult();
+
+ // D'tor. Do not inherit from TestResult.
+ ~TestResult();
+
+ // Gets the number of all test parts. This is the sum of the number
+ // of successful test parts and the number of failed test parts.
+ int total_part_count() const;
+
+ // Returns the number of the test properties.
+ int test_property_count() const;
+
+ // Returns true iff the test passed (i.e. no test part failed).
+ bool Passed() const { return !Failed(); }
+
+ // Returns true iff the test failed.
+ bool Failed() const;
+
+ // Returns true iff the test fatally failed.
+ bool HasFatalFailure() const;
+
+ // Returns true iff the test has a non-fatal failure.
+ bool HasNonfatalFailure() const;
+
+ // Returns the elapsed time, in milliseconds.
+ TimeInMillis elapsed_time() const { return elapsed_time_; }
+
+ // Returns the i-th test part result among all the results. i can range
+ // from 0 to test_property_count() - 1. If i is not in that range, aborts
+ // the program.
+ const TestPartResult& GetTestPartResult(int i) const;
+
+ // Returns the i-th test property. i can range from 0 to
+ // test_property_count() - 1. If i is not in that range, aborts the
+ // program.
+ const TestProperty& GetTestProperty(int i) const;
+
+ private:
+ friend class TestInfo;
+ friend class TestCase;
+ friend class UnitTest;
+ friend class internal::DefaultGlobalTestPartResultReporter;
+ friend class internal::ExecDeathTest;
+ friend class internal::TestResultAccessor;
+ friend class internal::UnitTestImpl;
+ friend class internal::WindowsDeathTest;
+
+ // Gets the vector of TestPartResults.
+ const std::vector<TestPartResult>& test_part_results() const {
+ return test_part_results_;
+ }
+
+ // Gets the vector of TestProperties.
+ const std::vector<TestProperty>& test_properties() const {
+ return test_properties_;
+ }
+
+ // Sets the elapsed time.
+ void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; }
+
+ // Adds a test property to the list. The property is validated and may add
+ // a non-fatal failure if invalid (e.g., if it conflicts with reserved
+ // key names). If a property is already recorded for the same key, the
+ // value will be updated, rather than storing multiple values for the same
+ // key. xml_element specifies the element for which the property is being
+ // recorded and is used for validation.
+ void RecordProperty(const std::string& xml_element,
+ const TestProperty& test_property);
+
+ // Adds a failure if the key is a reserved attribute of Google Test
+ // testcase tags. Returns true if the property is valid.
+ // TODO(russr): Validate attribute names are legal and human readable.
+ static bool ValidateTestProperty(const std::string& xml_element,
+ const TestProperty& test_property);
+
+ // Adds a test part result to the list.
+ void AddTestPartResult(const TestPartResult& test_part_result);
+
+ // Returns the death test count.
+ int death_test_count() const { return death_test_count_; }
+
+ // Increments the death test count, returning the new count.
+ int increment_death_test_count() { return ++death_test_count_; }
+
+ // Clears the test part results.
+ void ClearTestPartResults();
+
+ // Clears the object.
+ void Clear();
+
+ // Protects mutable state of the property vector and of owned
+ // properties, whose values may be updated.
+ internal::Mutex test_properites_mutex_;
+
+ // The vector of TestPartResults
+ std::vector<TestPartResult> test_part_results_;
+ // The vector of TestProperties
+ std::vector<TestProperty> test_properties_;
+ // Running count of death tests.
+ int death_test_count_;
+ // The elapsed time, in milliseconds.
+ TimeInMillis elapsed_time_;
+
+ // We disallow copying TestResult.
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult);
+}; // class TestResult
+
+// A TestInfo object stores the following information about a test:
+//
+// Test case name
+// Test name
+// Whether the test should be run
+// A function pointer that creates the test object when invoked
+// Test result
+//
+// The constructor of TestInfo registers itself with the UnitTest
+// singleton such that the RUN_ALL_TESTS() macro knows which tests to
+// run.
+class GTEST_API_ TestInfo {
+ public:
+ // Destructs a TestInfo object. This function is not virtual, so
+ // don't inherit from TestInfo.
+ ~TestInfo();
+
+ // Returns the test case name.
+ const char* test_case_name() const { return test_case_name_.c_str(); }
+
+ // Returns the test name.
+ const char* name() const { return name_.c_str(); }
+
+ // Returns the name of the parameter type, or NULL if this is not a typed
+ // or a type-parameterized test.
+ const char* type_param() const {
+ if (type_param_.get() != NULL)
+ return type_param_->c_str();
+ return NULL;
+ }
+
+ // Returns the text representation of the value parameter, or NULL if this
+ // is not a value-parameterized test.
+ const char* value_param() const {
+ if (value_param_.get() != NULL)
+ return value_param_->c_str();
+ return NULL;
+ }
+
+ // Returns true if this test should run, that is if the test is not
+ // disabled (or it is disabled but the also_run_disabled_tests flag has
+ // been specified) and its full name matches the user-specified filter.
+ //
+ // Google Test allows the user to filter the tests by their full names.
+ // The full name of a test Bar in test case Foo is defined as
+ // "Foo.Bar". Only the tests that match the filter will run.
+ //
+ // A filter is a colon-separated list of glob (not regex) patterns,
+ // optionally followed by a '-' and a colon-separated list of
+ // negative patterns (tests to exclude). A test is run if it
+ // matches one of the positive patterns and does not match any of
+ // the negative patterns.
+ //
+ // For example, *A*:Foo.* is a filter that matches any string that
+ // contains the character 'A' or starts with "Foo.".
+ bool should_run() const { return should_run_; }
+
+ // Returns true iff this test will appear in the XML report.
+ bool is_reportable() const {
+ // For now, the XML report includes all tests matching the filter.
+ // In the future, we may trim tests that are excluded because of
+ // sharding.
+ return matches_filter_;
+ }
+
+ // Returns the result of the test.
+ const TestResult* result() const { return &result_; }
+
+ private:
+#if GTEST_HAS_DEATH_TEST
+ friend class internal::DefaultDeathTestFactory;
+#endif // GTEST_HAS_DEATH_TEST
+ friend class Test;
+ friend class TestCase;
+ friend class internal::UnitTestImpl;
+ friend class internal::StreamingListenerTest;
+ friend TestInfo* internal::MakeAndRegisterTestInfo(
+ const char* test_case_name,
+ const char* name,
+ const char* type_param,
+ const char* value_param,
+ internal::TypeId fixture_class_id,
+ Test::SetUpTestCaseFunc set_up_tc,
+ Test::TearDownTestCaseFunc tear_down_tc,
+ internal::TestFactoryBase* factory);
+
+ // Constructs a TestInfo object. The newly constructed instance assumes
+ // ownership of the factory object.
+ TestInfo(const std::string& test_case_name,
+ const std::string& name,
+ const char* a_type_param, // NULL if not a type-parameterized test
+ const char* a_value_param, // NULL if not a value-parameterized test
+ internal::TypeId fixture_class_id,
+ internal::TestFactoryBase* factory);
+
+ // Increments the number of death tests encountered in this test so
+ // far.
+ int increment_death_test_count() {
+ return result_.increment_death_test_count();
+ }
+
+ // Creates the test object, runs it, records its result, and then
+ // deletes it.
+ void Run();
+
+ static void ClearTestResult(TestInfo* test_info) {
+ test_info->result_.Clear();
+ }
+
+ // These fields are immutable properties of the test.
+ const std::string test_case_name_; // Test case name
+ const std::string name_; // Test name
+ // Name of the parameter type, or NULL if this is not a typed or a
+ // type-parameterized test.
+ const internal::scoped_ptr<const ::std::string> type_param_;
+ // Text representation of the value parameter, or NULL if this is not a
+ // value-parameterized test.
+ const internal::scoped_ptr<const ::std::string> value_param_;
+ const internal::TypeId fixture_class_id_; // ID of the test fixture class
+ bool should_run_; // True iff this test should run
+ bool is_disabled_; // True iff this test is disabled
+ bool matches_filter_; // True if this test matches the
+ // user-specified filter.
+ internal::TestFactoryBase* const factory_; // The factory that creates
+ // the test object
+
+ // This field is mutable and needs to be reset before running the
+ // test for the second time.
+ TestResult result_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo);
+};
+
+// A test case, which consists of a vector of TestInfos.
+//
+// TestCase is not copyable.
+class GTEST_API_ TestCase {
+ public:
+ // Creates a TestCase with the given name.
+ //
+ // TestCase does NOT have a default constructor. Always use this
+ // constructor to create a TestCase object.
+ //
+ // Arguments:
+ //
+ // name: name of the test case
+ // a_type_param: the name of the test's type parameter, or NULL if
+ // this is not a type-parameterized test.
+ // set_up_tc: pointer to the function that sets up the test case
+ // tear_down_tc: pointer to the function that tears down the test case
+ TestCase(const char* name, const char* a_type_param,
+ Test::SetUpTestCaseFunc set_up_tc,
+ Test::TearDownTestCaseFunc tear_down_tc);
+
+ // Destructor of TestCase.
+ virtual ~TestCase();
+
+ // Gets the name of the TestCase.
+ const char* name() const { return name_.c_str(); }
+
+ // Returns the name of the parameter type, or NULL if this is not a
+ // type-parameterized test case.
+ const char* type_param() const {
+ if (type_param_.get() != NULL)
+ return type_param_->c_str();
+ return NULL;
+ }
+
+ // Returns true if any test in this test case should run.
+ bool should_run() const { return should_run_; }
+
+ // Gets the number of successful tests in this test case.
+ int successful_test_count() const;
+
+ // Gets the number of failed tests in this test case.
+ int failed_test_count() const;
+
+ // Gets the number of disabled tests that will be reported in the XML report.
+ int reportable_disabled_test_count() const;
+
+ // Gets the number of disabled tests in this test case.
+ int disabled_test_count() const;
+
+ // Gets the number of tests to be printed in the XML report.
+ int reportable_test_count() const;
+
+ // Get the number of tests in this test case that should run.
+ int test_to_run_count() const;
+
+ // Gets the number of all tests in this test case.
+ int total_test_count() const;
+
+ // Returns true iff the test case passed.
+ bool Passed() const { return !Failed(); }
+
+ // Returns true iff the test case failed.
+ bool Failed() const { return failed_test_count() > 0; }
+
+ // Returns the elapsed time, in milliseconds.
+ TimeInMillis elapsed_time() const { return elapsed_time_; }
+
+ // Returns the i-th test among all the tests. i can range from 0 to
+ // total_test_count() - 1. If i is not in that range, returns NULL.
+ const TestInfo* GetTestInfo(int i) const;
+
+ // Returns the TestResult that holds test properties recorded during
+ // execution of SetUpTestCase and TearDownTestCase.
+ const TestResult& ad_hoc_test_result() const { return ad_hoc_test_result_; }
+
+ private:
+ friend class Test;
+ friend class internal::UnitTestImpl;
+
+ // Gets the (mutable) vector of TestInfos in this TestCase.
+ std::vector<TestInfo*>& test_info_list() { return test_info_list_; }
+
+ // Gets the (immutable) vector of TestInfos in this TestCase.
+ const std::vector<TestInfo*>& test_info_list() const {
+ return test_info_list_;
+ }
+
+ // Returns the i-th test among all the tests. i can range from 0 to
+ // total_test_count() - 1. If i is not in that range, returns NULL.
+ TestInfo* GetMutableTestInfo(int i);
+
+ // Sets the should_run member.
+ void set_should_run(bool should) { should_run_ = should; }
+
+ // Adds a TestInfo to this test case. Will delete the TestInfo upon
+ // destruction of the TestCase object.
+ void AddTestInfo(TestInfo * test_info);
+
+ // Clears the results of all tests in this test case.
+ void ClearResult();
+
+ // Clears the results of all tests in the given test case.
+ static void ClearTestCaseResult(TestCase* test_case) {
+ test_case->ClearResult();
+ }
+
+ // Runs every test in this TestCase.
+ void Run();
+
+ // Runs SetUpTestCase() for this TestCase. This wrapper is needed
+ // for catching exceptions thrown from SetUpTestCase().
+ void RunSetUpTestCase() { (*set_up_tc_)(); }
+
+ // Runs TearDownTestCase() for this TestCase. This wrapper is
+ // needed for catching exceptions thrown from TearDownTestCase().
+ void RunTearDownTestCase() { (*tear_down_tc_)(); }
+
+ // Returns true iff test passed.
+ static bool TestPassed(const TestInfo* test_info) {
+ return test_info->should_run() && test_info->result()->Passed();
+ }
+
+ // Returns true iff test failed.
+ static bool TestFailed(const TestInfo* test_info) {
+ return test_info->should_run() && test_info->result()->Failed();
+ }
+
+ // Returns true iff the test is disabled and will be reported in the XML
+ // report.
+ static bool TestReportableDisabled(const TestInfo* test_info) {
+ return test_info->is_reportable() && test_info->is_disabled_;
+ }
+
+ // Returns true iff test is disabled.
+ static bool TestDisabled(const TestInfo* test_info) {
+ return test_info->is_disabled_;
+ }
+
+ // Returns true iff this test will appear in the XML report.
+ static bool TestReportable(const TestInfo* test_info) {
+ return test_info->is_reportable();
+ }
+
+ // Returns true if the given test should run.
+ static bool ShouldRunTest(const TestInfo* test_info) {
+ return test_info->should_run();
+ }
+
+ // Shuffles the tests in this test case.
+ void ShuffleTests(internal::Random* random);
+
+ // Restores the test order to before the first shuffle.
+ void UnshuffleTests();
+
+ // Name of the test case.
+ std::string name_;
+ // Name of the parameter type, or NULL if this is not a typed or a
+ // type-parameterized test.
+ const internal::scoped_ptr<const ::std::string> type_param_;
+ // The vector of TestInfos in their original order. It owns the
+ // elements in the vector.
+ std::vector<TestInfo*> test_info_list_;
+ // Provides a level of indirection for the test list to allow easy
+ // shuffling and restoring the test order. The i-th element in this
+ // vector is the index of the i-th test in the shuffled test list.
+ std::vector<int> test_indices_;
+ // Pointer to the function that sets up the test case.
+ Test::SetUpTestCaseFunc set_up_tc_;
+ // Pointer to the function that tears down the test case.
+ Test::TearDownTestCaseFunc tear_down_tc_;
+ // True iff any test in this test case should run.
+ bool should_run_;
+ // Elapsed time, in milliseconds.
+ TimeInMillis elapsed_time_;
+ // Holds test properties recorded during execution of SetUpTestCase and
+ // TearDownTestCase.
+ TestResult ad_hoc_test_result_;
+
+ // We disallow copying TestCases.
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestCase);
+};
+
+// An Environment object is capable of setting up and tearing down an
+// environment. The user should subclass this to define his own
+// environment(s).
+//
+// An Environment object does the set-up and tear-down in virtual
+// methods SetUp() and TearDown() instead of the constructor and the
+// destructor, as:
+//
+// 1. You cannot safely throw from a destructor. This is a problem
+// as in some cases Google Test is used where exceptions are enabled, and
+// we may want to implement ASSERT_* using exceptions where they are
+// available.
+// 2. You cannot use ASSERT_* directly in a constructor or
+// destructor.
+class Environment {
+ public:
+ // The d'tor is virtual as we need to subclass Environment.
+ virtual ~Environment() {}
+
+ // Override this to define how to set up the environment.
+ virtual void SetUp() {}
+
+ // Override this to define how to tear down the environment.
+ virtual void TearDown() {}
+ private:
+ // If you see an error about overriding the following function or
+ // about it being private, you have mis-spelled SetUp() as Setup().
+ struct Setup_should_be_spelled_SetUp {};
+ virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; }
+};
+
+// The interface for tracing execution of tests. The methods are organized in
+// the order the corresponding events are fired.
+class TestEventListener {
+ public:
+ virtual ~TestEventListener() {}
+
+ // Fired before any test activity starts.
+ virtual void OnTestProgramStart(const UnitTest& unit_test) = 0;
+
+ // Fired before each iteration of tests starts. There may be more than
+ // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration
+ // index, starting from 0.
+ virtual void OnTestIterationStart(const UnitTest& unit_test,
+ int iteration) = 0;
+
+ // Fired before environment set-up for each iteration of tests starts.
+ virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0;
+
+ // Fired after environment set-up for each iteration of tests ends.
+ virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) = 0;
+
+ // Fired before the test case starts.
+ virtual void OnTestCaseStart(const TestCase& test_case) = 0;
+
+ // Fired before the test starts.
+ virtual void OnTestStart(const TestInfo& test_info) = 0;
+
+ // Fired after a failed assertion or a SUCCEED() invocation.
+ virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0;
+
+ // Fired after the test ends.
+ virtual void OnTestEnd(const TestInfo& test_info) = 0;
+
+ // Fired after the test case ends.
+ virtual void OnTestCaseEnd(const TestCase& test_case) = 0;
+
+ // Fired before environment tear-down for each iteration of tests starts.
+ virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) = 0;
+
+ // Fired after environment tear-down for each iteration of tests ends.
+ virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0;
+
+ // Fired after each iteration of tests finishes.
+ virtual void OnTestIterationEnd(const UnitTest& unit_test,
+ int iteration) = 0;
+
+ // Fired after all test activities have ended.
+ virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0;
+};
+
+// The convenience class for users who need to override just one or two
+// methods and are not concerned that a possible change to a signature of
+// the methods they override will not be caught during the build. For
+// comments about each method please see the definition of TestEventListener
+// above.
+class EmptyTestEventListener : public TestEventListener {
+ public:
+ virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {}
+ virtual void OnTestIterationStart(const UnitTest& /*unit_test*/,
+ int /*iteration*/) {}
+ virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {}
+ virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {}
+ virtual void OnTestCaseStart(const TestCase& /*test_case*/) {}
+ virtual void OnTestStart(const TestInfo& /*test_info*/) {}
+ virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {}
+ virtual void OnTestEnd(const TestInfo& /*test_info*/) {}
+ virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {}
+ virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {}
+ virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {}
+ virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/,
+ int /*iteration*/) {}
+ virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}
+};
+
+// TestEventListeners lets users add listeners to track events in Google Test.
+class GTEST_API_ TestEventListeners {
+ public:
+ TestEventListeners();
+ ~TestEventListeners();
+
+ // Appends an event listener to the end of the list. Google Test assumes
+ // the ownership of the listener (i.e. it will delete the listener when
+ // the test program finishes).
+ void Append(TestEventListener* listener);
+
+ // Removes the given event listener from the list and returns it. It then
+ // becomes the caller's responsibility to delete the listener. Returns
+ // NULL if the listener is not found in the list.
+ TestEventListener* Release(TestEventListener* listener);
+
+ // Returns the standard listener responsible for the default console
+ // output. Can be removed from the listeners list to shut down default
+ // console output. Note that removing this object from the listener list
+ // with Release transfers its ownership to the caller and makes this
+ // function return NULL the next time.
+ TestEventListener* default_result_printer() const {
+ return default_result_printer_;
+ }
+
+ // Returns the standard listener responsible for the default XML output
+ // controlled by the --gtest_output=xml flag. Can be removed from the
+ // listeners list by users who want to shut down the default XML output
+ // controlled by this flag and substitute it with custom one. Note that
+ // removing this object from the listener list with Release transfers its
+ // ownership to the caller and makes this function return NULL the next
+ // time.
+ TestEventListener* default_xml_generator() const {
+ return default_xml_generator_;
+ }
+
+ private:
+ friend class TestCase;
+ friend class TestInfo;
+ friend class internal::DefaultGlobalTestPartResultReporter;
+ friend class internal::NoExecDeathTest;
+ friend class internal::TestEventListenersAccessor;
+ friend class internal::UnitTestImpl;
+
+ // Returns repeater that broadcasts the TestEventListener events to all
+ // subscribers.
+ TestEventListener* repeater();
+
+ // Sets the default_result_printer attribute to the provided listener.
+ // The listener is also added to the listener list and previous
+ // default_result_printer is removed from it and deleted. The listener can
+ // also be NULL in which case it will not be added to the list. Does
+ // nothing if the previous and the current listener objects are the same.
+ void SetDefaultResultPrinter(TestEventListener* listener);
+
+ // Sets the default_xml_generator attribute to the provided listener. The
+ // listener is also added to the listener list and previous
+ // default_xml_generator is removed from it and deleted. The listener can
+ // also be NULL in which case it will not be added to the list. Does
+ // nothing if the previous and the current listener objects are the same.
+ void SetDefaultXmlGenerator(TestEventListener* listener);
+
+ // Controls whether events will be forwarded by the repeater to the
+ // listeners in the list.
+ bool EventForwardingEnabled() const;
+ void SuppressEventForwarding();
+
+ // The actual list of listeners.
+ internal::TestEventRepeater* repeater_;
+ // Listener responsible for the standard result output.
+ TestEventListener* default_result_printer_;
+ // Listener responsible for the creation of the XML output file.
+ TestEventListener* default_xml_generator_;
+
+ // We disallow copying TestEventListeners.
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventListeners);
+};
+
+// A UnitTest consists of a vector of TestCases.
+//
+// This is a singleton class. The only instance of UnitTest is
+// created when UnitTest::GetInstance() is first called. This
+// instance is never deleted.
+//
+// UnitTest is not copyable.
+//
+// This class is thread-safe as long as the methods are called
+// according to their specification.
+class GTEST_API_ UnitTest {
+ public:
+ // Gets the singleton UnitTest object. The first time this method
+ // is called, a UnitTest object is constructed and returned.
+ // Consecutive calls will return the same object.
+ static UnitTest* GetInstance();
+
+ // Runs all tests in this UnitTest object and prints the result.
+ // Returns 0 if successful, or 1 otherwise.
+ //
+ // This method can only be called from the main thread.
+ //
+ // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ int Run() GTEST_MUST_USE_RESULT_;
+
+ // Returns the working directory when the first TEST() or TEST_F()
+ // was executed. The UnitTest object owns the string.
+ const char* original_working_dir() const;
+
+ // Returns the TestCase object for the test that's currently running,
+ // or NULL if no test is running.
+ const TestCase* current_test_case() const
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ // Returns the TestInfo object for the test that's currently running,
+ // or NULL if no test is running.
+ const TestInfo* current_test_info() const
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ // Returns the random seed used at the start of the current test run.
+ int random_seed() const;
+
+#if GTEST_HAS_PARAM_TEST
+ // Returns the ParameterizedTestCaseRegistry object used to keep track of
+ // value-parameterized tests and instantiate and register them.
+ //
+ // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+ internal::ParameterizedTestCaseRegistry& parameterized_test_registry()
+ GTEST_LOCK_EXCLUDED_(mutex_);
+#endif // GTEST_HAS_PARAM_TEST
+
+ // Gets the number of successful test cases.
+ int successful_test_case_count() const;
+
+ // Gets the number of failed test cases.
+ int failed_test_case_count() const;
+
+ // Gets the number of all test cases.
+ int total_test_case_count() const;
+
+ // Gets the number of all test cases that contain at least one test
+ // that should run.
+ int test_case_to_run_count() const;
+
+ // Gets the number of successful tests.
+ int successful_test_count() const;
+
+ // Gets the number of failed tests.
+ int failed_test_count() const;
+
+ // Gets the number of disabled tests that will be reported in the XML report.
+ int reportable_disabled_test_count() const;
+
+ // Gets the number of disabled tests.
+ int disabled_test_count() const;
+
+ // Gets the number of tests to be printed in the XML report.
+ int reportable_test_count() const;
+
+ // Gets the number of all tests.
+ int total_test_count() const;
+
+ // Gets the number of tests that should run.
+ int test_to_run_count() const;
+
+ // Gets the time of the test program start, in ms from the start of the
+ // UNIX epoch.
+ TimeInMillis start_timestamp() const;
+
+ // Gets the elapsed time, in milliseconds.
+ TimeInMillis elapsed_time() const;
+
+ // Returns true iff the unit test passed (i.e. all test cases passed).
+ bool Passed() const;
+
+ // Returns true iff the unit test failed (i.e. some test case failed
+ // or something outside of all tests failed).
+ bool Failed() const;
+
+ // Gets the i-th test case among all the test cases. i can range from 0 to
+ // total_test_case_count() - 1. If i is not in that range, returns NULL.
+ const TestCase* GetTestCase(int i) const;
+
+ // Returns the TestResult containing information on test failures and
+ // properties logged outside of individual test cases.
+ const TestResult& ad_hoc_test_result() const;
+
+ // Returns the list of event listeners that can be used to track events
+ // inside Google Test.
+ TestEventListeners& listeners();
+
+ private:
+ // Registers and returns a global test environment. When a test
+ // program is run, all global test environments will be set-up in
+ // the order they were registered. After all tests in the program
+ // have finished, all global test environments will be torn-down in
+ // the *reverse* order they were registered.
+ //
+ // The UnitTest object takes ownership of the given environment.
+ //
+ // This method can only be called from the main thread.
+ Environment* AddEnvironment(Environment* env);
+
+ // Adds a TestPartResult to the current TestResult object. All
+ // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc)
+ // eventually call this to report their results. The user code
+ // should use the assertion macros instead of calling this directly.
+ void AddTestPartResult(TestPartResult::Type result_type,
+ const char* file_name,
+ int line_number,
+ const std::string& message,
+ const std::string& os_stack_trace)
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ // Adds a TestProperty to the current TestResult object when invoked from
+ // inside a test, to current TestCase's ad_hoc_test_result_ when invoked
+ // from SetUpTestCase or TearDownTestCase, or to the global property set
+ // when invoked elsewhere. If the result already contains a property with
+ // the same key, the value will be updated.
+ void RecordProperty(const std::string& key, const std::string& value);
+
+ // Gets the i-th test case among all the test cases. i can range from 0 to
+ // total_test_case_count() - 1. If i is not in that range, returns NULL.
+ TestCase* GetMutableTestCase(int i);
+
+ // Accessors for the implementation object.
+ internal::UnitTestImpl* impl() { return impl_; }
+ const internal::UnitTestImpl* impl() const { return impl_; }
+
+ // These classes and funcions are friends as they need to access private
+ // members of UnitTest.
+ friend class Test;
+ friend class internal::AssertHelper;
+ friend class internal::ScopedTrace;
+ friend class internal::StreamingListenerTest;
+ friend class internal::UnitTestRecordPropertyTestHelper;
+ friend Environment* AddGlobalTestEnvironment(Environment* env);
+ friend internal::UnitTestImpl* internal::GetUnitTestImpl();
+ friend void internal::ReportFailureInUnknownLocation(
+ TestPartResult::Type result_type,
+ const std::string& message);
+
+ // Creates an empty UnitTest.
+ UnitTest();
+
+ // D'tor
+ virtual ~UnitTest();
+
+ // Pushes a trace defined by SCOPED_TRACE() on to the per-thread
+ // Google Test trace stack.
+ void PushGTestTrace(const internal::TraceInfo& trace)
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ // Pops a trace from the per-thread Google Test trace stack.
+ void PopGTestTrace()
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ // Protects mutable state in *impl_. This is mutable as some const
+ // methods need to lock it too.
+ mutable internal::Mutex mutex_;
+
+ // Opaque implementation object. This field is never changed once
+ // the object is constructed. We don't mark it as const here, as
+ // doing so will cause a warning in the constructor of UnitTest.
+ // Mutable state in *impl_ is protected by mutex_.
+ internal::UnitTestImpl* impl_;
+
+ // We disallow copying UnitTest.
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTest);
+};
+
+// A convenient wrapper for adding an environment for the test
+// program.
+//
+// You should call this before RUN_ALL_TESTS() is called, probably in
+// main(). If you use gtest_main, you need to call this before main()
+// starts for it to take effect. For example, you can define a global
+// variable like this:
+//
+// testing::Environment* const foo_env =
+// testing::AddGlobalTestEnvironment(new FooEnvironment);
+//
+// However, we strongly recommend you to write your own main() and
+// call AddGlobalTestEnvironment() there, as relying on initialization
+// of global variables makes the code harder to read and may cause
+// problems when you register multiple environments from different
+// translation units and the environments have dependencies among them
+// (remember that the compiler doesn't guarantee the order in which
+// global variables from different translation units are initialized).
+inline Environment* AddGlobalTestEnvironment(Environment* env) {
+ return UnitTest::GetInstance()->AddEnvironment(env);
+}
+
+// Initializes Google Test. This must be called before calling
+// RUN_ALL_TESTS(). In particular, it parses a command line for the
+// flags that Google Test recognizes. Whenever a Google Test flag is
+// seen, it is removed from argv, and *argc is decremented.
+//
+// No value is returned. Instead, the Google Test flag variables are
+// updated.
+//
+// Calling the function for the second time has no user-visible effect.
+GTEST_API_ void InitGoogleTest(int* argc, char** argv);
+
+// This overloaded version can be used in Windows programs compiled in
+// UNICODE mode.
+GTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv);
+
+namespace internal {
+
+// FormatForComparison<ToPrint, OtherOperand>::Format(value) formats a
+// value of type ToPrint that is an operand of a comparison assertion
+// (e.g. ASSERT_EQ). OtherOperand is the type of the other operand in
+// the comparison, and is used to help determine the best way to
+// format the value. In particular, when the value is a C string
+// (char pointer) and the other operand is an STL string object, we
+// want to format the C string as a string, since we know it is
+// compared by value with the string object. If the value is a char
+// pointer but the other operand is not an STL string object, we don't
+// know whether the pointer is supposed to point to a NUL-terminated
+// string, and thus want to print it as a pointer to be safe.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+
+// The default case.
+template <typename ToPrint, typename OtherOperand>
+class FormatForComparison {
+ public:
+ static ::std::string Format(const ToPrint& value) {
+ return ::testing::PrintToString(value);
+ }
+};
+
+// Array.
+template <typename ToPrint, size_t N, typename OtherOperand>
+class FormatForComparison<ToPrint[N], OtherOperand> {
+ public:
+ static ::std::string Format(const ToPrint* value) {
+ return FormatForComparison<const ToPrint*, OtherOperand>::Format(value);
+ }
+};
+
+// By default, print C string as pointers to be safe, as we don't know
+// whether they actually point to a NUL-terminated string.
+
+#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType) \
+ template <typename OtherOperand> \
+ class FormatForComparison<CharType*, OtherOperand> { \
+ public: \
+ static ::std::string Format(CharType* value) { \
+ return ::testing::PrintToString(static_cast<const void*>(value)); \
+ } \
+ }
+
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char);
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char);
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(wchar_t);
+GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const wchar_t);
+
+#undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_
+
+// If a C string is compared with an STL string object, we know it's meant
+// to point to a NUL-terminated string, and thus can print it as a string.
+
+#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \
+ template <> \
+ class FormatForComparison<CharType*, OtherStringType> { \
+ public: \
+ static ::std::string Format(CharType* value) { \
+ return ::testing::PrintToString(value); \
+ } \
+ }
+
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::std::string);
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::std::string);
+
+#if GTEST_HAS_GLOBAL_STRING
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::string);
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::string);
+#endif
+
+#if GTEST_HAS_GLOBAL_WSTRING
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::wstring);
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::wstring);
+#endif
+
+#if GTEST_HAS_STD_WSTRING
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::std::wstring);
+GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::std::wstring);
+#endif
+
+#undef GTEST_IMPL_FORMAT_C_STRING_AS_STRING_
+
+// Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc)
+// operand to be used in a failure message. The type (but not value)
+// of the other operand may affect the format. This allows us to
+// print a char* as a raw pointer when it is compared against another
+// char* or void*, and print it as a C string when it is compared
+// against an std::string object, for example.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+template <typename T1, typename T2>
+std::string FormatForComparisonFailureMessage(
+ const T1& value, const T2& /* other_operand */) {
+ return FormatForComparison<T1, T2>::Format(value);
+}
+
+// The helper function for {ASSERT|EXPECT}_EQ.
+template <typename T1, typename T2>
+AssertionResult CmpHelperEQ(const char* expected_expression,
+ const char* actual_expression,
+ const T1& expected,
+ const T2& actual) {
+#ifdef _MSC_VER
+# pragma warning(push) // Saves the current warning state.
+# pragma warning(disable:4389) // Temporarily disables warning on
+ // signed/unsigned mismatch.
+#endif
+
+ if (expected == actual) {
+ return AssertionSuccess();
+ }
+
+#ifdef _MSC_VER
+# pragma warning(pop) // Restores the warning state.
+#endif
+
+ return EqFailure(expected_expression,
+ actual_expression,
+ FormatForComparisonFailureMessage(expected, actual),
+ FormatForComparisonFailureMessage(actual, expected),
+ false);
+}
+
+// With this overloaded version, we allow anonymous enums to be used
+// in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums
+// can be implicitly cast to BiggestInt.
+GTEST_API_ AssertionResult CmpHelperEQ(const char* expected_expression,
+ const char* actual_expression,
+ BiggestInt expected,
+ BiggestInt actual);
+
+// The helper class for {ASSERT|EXPECT}_EQ. The template argument
+// lhs_is_null_literal is true iff the first argument to ASSERT_EQ()
+// is a null pointer literal. The following default implementation is
+// for lhs_is_null_literal being false.
+template <bool lhs_is_null_literal>
+class EqHelper {
+ public:
+ // This templatized version is for the general case.
+ template <typename T1, typename T2>
+ static AssertionResult Compare(const char* expected_expression,
+ const char* actual_expression,
+ const T1& expected,
+ const T2& actual) {
+ return CmpHelperEQ(expected_expression, actual_expression, expected,
+ actual);
+ }
+
+ // With this overloaded version, we allow anonymous enums to be used
+ // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous
+ // enums can be implicitly cast to BiggestInt.
+ //
+ // Even though its body looks the same as the above version, we
+ // cannot merge the two, as it will make anonymous enums unhappy.
+ static AssertionResult Compare(const char* expected_expression,
+ const char* actual_expression,
+ BiggestInt expected,
+ BiggestInt actual) {
+ return CmpHelperEQ(expected_expression, actual_expression, expected,
+ actual);
+ }
+};
+
+// This specialization is used when the first argument to ASSERT_EQ()
+// is a null pointer literal, like NULL, false, or 0.
+template <>
+class EqHelper<true> {
+ public:
+ // We define two overloaded versions of Compare(). The first
+ // version will be picked when the second argument to ASSERT_EQ() is
+ // NOT a pointer, e.g. ASSERT_EQ(0, AnIntFunction()) or
+ // EXPECT_EQ(false, a_bool).
+ template <typename T1, typename T2>
+ static AssertionResult Compare(
+ const char* expected_expression,
+ const char* actual_expression,
+ const T1& expected,
+ const T2& actual,
+ // The following line prevents this overload from being considered if T2
+ // is not a pointer type. We need this because ASSERT_EQ(NULL, my_ptr)
+ // expands to Compare("", "", NULL, my_ptr), which requires a conversion
+ // to match the Secret* in the other overload, which would otherwise make
+ // this template match better.
+ typename EnableIf<!is_pointer<T2>::value>::type* = 0) {
+ return CmpHelperEQ(expected_expression, actual_expression, expected,
+ actual);
+ }
+
+ // This version will be picked when the second argument to ASSERT_EQ() is a
+ // pointer, e.g. ASSERT_EQ(NULL, a_pointer).
+ template <typename T>
+ static AssertionResult Compare(
+ const char* expected_expression,
+ const char* actual_expression,
+ // We used to have a second template parameter instead of Secret*. That
+ // template parameter would deduce to 'long', making this a better match
+ // than the first overload even without the first overload's EnableIf.
+ // Unfortunately, gcc with -Wconversion-null warns when "passing NULL to
+ // non-pointer argument" (even a deduced integral argument), so the old
+ // implementation caused warnings in user code.
+ Secret* /* expected (NULL) */,
+ T* actual) {
+ // We already know that 'expected' is a null pointer.
+ return CmpHelperEQ(expected_expression, actual_expression,
+ static_cast<T*>(NULL), actual);
+ }
+};
+
+// A macro for implementing the helper functions needed to implement
+// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste
+// of similar code.
+//
+// For each templatized helper function, we also define an overloaded
+// version for BiggestInt in order to reduce code bloat and allow
+// anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled
+// with gcc 4.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+#define GTEST_IMPL_CMP_HELPER_(op_name, op)\
+template <typename T1, typename T2>\
+AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
+ const T1& val1, const T2& val2) {\
+ if (val1 op val2) {\
+ return AssertionSuccess();\
+ } else {\
+ return AssertionFailure() \
+ << "Expected: (" << expr1 << ") " #op " (" << expr2\
+ << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\
+ << " vs " << FormatForComparisonFailureMessage(val2, val1);\
+ }\
+}\
+GTEST_API_ AssertionResult CmpHelper##op_name(\
+ const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+
+// Implements the helper function for {ASSERT|EXPECT}_NE
+GTEST_IMPL_CMP_HELPER_(NE, !=);
+// Implements the helper function for {ASSERT|EXPECT}_LE
+GTEST_IMPL_CMP_HELPER_(LE, <=);
+// Implements the helper function for {ASSERT|EXPECT}_LT
+GTEST_IMPL_CMP_HELPER_(LT, <);
+// Implements the helper function for {ASSERT|EXPECT}_GE
+GTEST_IMPL_CMP_HELPER_(GE, >=);
+// Implements the helper function for {ASSERT|EXPECT}_GT
+GTEST_IMPL_CMP_HELPER_(GT, >);
+
+#undef GTEST_IMPL_CMP_HELPER_
+
+// The helper function for {ASSERT|EXPECT}_STREQ.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression,
+ const char* actual_expression,
+ const char* expected,
+ const char* actual);
+
+// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression,
+ const char* actual_expression,
+ const char* expected,
+ const char* actual);
+
+// The helper function for {ASSERT|EXPECT}_STRNE.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
+ const char* s2_expression,
+ const char* s1,
+ const char* s2);
+
+// The helper function for {ASSERT|EXPECT}_STRCASENE.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
+ const char* s2_expression,
+ const char* s1,
+ const char* s2);
+
+
+// Helper function for *_STREQ on wide strings.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression,
+ const char* actual_expression,
+ const wchar_t* expected,
+ const wchar_t* actual);
+
+// Helper function for *_STRNE on wide strings.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
+ const char* s2_expression,
+ const wchar_t* s1,
+ const wchar_t* s2);
+
+} // namespace internal
+
+// IsSubstring() and IsNotSubstring() are intended to be used as the
+// first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by
+// themselves. They check whether needle is a substring of haystack
+// (NULL is considered a substring of itself only), and return an
+// appropriate error message when they fail.
+//
+// The {needle,haystack}_expr arguments are the stringified
+// expressions that generated the two real arguments.
+GTEST_API_ AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const char* needle, const char* haystack);
+GTEST_API_ AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const wchar_t* needle, const wchar_t* haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const char* needle, const char* haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const wchar_t* needle, const wchar_t* haystack);
+GTEST_API_ AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::string& needle, const ::std::string& haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::string& needle, const ::std::string& haystack);
+
+#if GTEST_HAS_STD_WSTRING
+GTEST_API_ AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::wstring& needle, const ::std::wstring& haystack);
+GTEST_API_ AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::wstring& needle, const ::std::wstring& haystack);
+#endif // GTEST_HAS_STD_WSTRING
+
+namespace internal {
+
+// Helper template function for comparing floating-points.
+//
+// Template parameter:
+//
+// RawType: the raw floating-point type (either float or double)
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+template <typename RawType>
+AssertionResult CmpHelperFloatingPointEQ(const char* expected_expression,
+ const char* actual_expression,
+ RawType expected,
+ RawType actual) {
+ const FloatingPoint<RawType> lhs(expected), rhs(actual);
+
+ if (lhs.AlmostEquals(rhs)) {
+ return AssertionSuccess();
+ }
+
+ ::std::stringstream expected_ss;
+ expected_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
+ << expected;
+
+ ::std::stringstream actual_ss;
+ actual_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
+ << actual;
+
+ return EqFailure(expected_expression,
+ actual_expression,
+ StringStreamToString(&expected_ss),
+ StringStreamToString(&actual_ss),
+ false);
+}
+
+// Helper function for implementing ASSERT_NEAR.
+//
+// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
+GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1,
+ const char* expr2,
+ const char* abs_error_expr,
+ double val1,
+ double val2,
+ double abs_error);
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+// A class that enables one to stream messages to assertion macros
+class GTEST_API_ AssertHelper {
+ public:
+ // Constructor.
+ AssertHelper(TestPartResult::Type type,
+ const char* file,
+ int line,
+ const char* message);
+ ~AssertHelper();
+
+ // Message assignment is a semantic trick to enable assertion
+ // streaming; see the GTEST_MESSAGE_ macro below.
+ void operator=(const Message& message) const;
+
+ private:
+ // We put our data in a struct so that the size of the AssertHelper class can
+ // be as small as possible. This is important because gcc is incapable of
+ // re-using stack space even for temporary variables, so every EXPECT_EQ
+ // reserves stack space for another AssertHelper.
+ struct AssertHelperData {
+ AssertHelperData(TestPartResult::Type t,
+ const char* srcfile,
+ int line_num,
+ const char* msg)
+ : type(t), file(srcfile), line(line_num), message(msg) { }
+
+ TestPartResult::Type const type;
+ const char* const file;
+ int const line;
+ std::string const message;
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData);
+ };
+
+ AssertHelperData* const data_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper);
+};
+
+} // namespace internal
+
+#if GTEST_HAS_PARAM_TEST
+// The pure interface class that all value-parameterized tests inherit from.
+// A value-parameterized class must inherit from both ::testing::Test and
+// ::testing::WithParamInterface. In most cases that just means inheriting
+// from ::testing::TestWithParam, but more complicated test hierarchies
+// may need to inherit from Test and WithParamInterface at different levels.
+//
+// This interface has support for accessing the test parameter value via
+// the GetParam() method.
+//
+// Use it with one of the parameter generator defining functions, like Range(),
+// Values(), ValuesIn(), Bool(), and Combine().
+//
+// class FooTest : public ::testing::TestWithParam<int> {
+// protected:
+// FooTest() {
+// // Can use GetParam() here.
+// }
+// virtual ~FooTest() {
+// // Can use GetParam() here.
+// }
+// virtual void SetUp() {
+// // Can use GetParam() here.
+// }
+// virtual void TearDown {
+// // Can use GetParam() here.
+// }
+// };
+// TEST_P(FooTest, DoesBar) {
+// // Can use GetParam() method here.
+// Foo foo;
+// ASSERT_TRUE(foo.DoesBar(GetParam()));
+// }
+// INSTANTIATE_TEST_CASE_P(OneToTenRange, FooTest, ::testing::Range(1, 10));
+
+template <typename T>
+class WithParamInterface {
+ public:
+ typedef T ParamType;
+ virtual ~WithParamInterface() {}
+
+ // The current parameter value. Is also available in the test fixture's
+ // constructor. This member function is non-static, even though it only
+ // references static data, to reduce the opportunity for incorrect uses
+ // like writing 'WithParamInterface<bool>::GetParam()' for a test that
+ // uses a fixture whose parameter type is int.
+ const ParamType& GetParam() const {
+ GTEST_CHECK_(parameter_ != NULL)
+ << "GetParam() can only be called inside a value-parameterized test "
+ << "-- did you intend to write TEST_P instead of TEST_F?";
+ return *parameter_;
+ }
+
+ private:
+ // Sets parameter value. The caller is responsible for making sure the value
+ // remains alive and unchanged throughout the current test.
+ static void SetParam(const ParamType* parameter) {
+ parameter_ = parameter;
+ }
+
+ // Static value used for accessing parameter during a test lifetime.
+ static const ParamType* parameter_;
+
+ // TestClass must be a subclass of WithParamInterface<T> and Test.
+ template <class TestClass> friend class internal::ParameterizedTestFactory;
+};
+
+template <typename T>
+const T* WithParamInterface<T>::parameter_ = NULL;
+
+// Most value-parameterized classes can ignore the existence of
+// WithParamInterface, and can just inherit from ::testing::TestWithParam.
+
+template <typename T>
+class TestWithParam : public Test, public WithParamInterface<T> {
+};
+
+#endif // GTEST_HAS_PARAM_TEST
+
+// Macros for indicating success/failure in test code.
+
+// ADD_FAILURE unconditionally adds a failure to the current test.
+// SUCCEED generates a success - it doesn't automatically make the
+// current test successful, as a test is only successful when it has
+// no failure.
+//
+// EXPECT_* verifies that a certain condition is satisfied. If not,
+// it behaves like ADD_FAILURE. In particular:
+//
+// EXPECT_TRUE verifies that a Boolean condition is true.
+// EXPECT_FALSE verifies that a Boolean condition is false.
+//
+// FAIL and ASSERT_* are similar to ADD_FAILURE and EXPECT_*, except
+// that they will also abort the current function on failure. People
+// usually want the fail-fast behavior of FAIL and ASSERT_*, but those
+// writing data-driven tests often find themselves using ADD_FAILURE
+// and EXPECT_* more.
+
+// Generates a nonfatal failure with a generic message.
+#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed")
+
+// Generates a nonfatal failure at the given source file location with
+// a generic message.
+#define ADD_FAILURE_AT(file, line) \
+ GTEST_MESSAGE_AT_(file, line, "Failed", \
+ ::testing::TestPartResult::kNonFatalFailure)
+
+// Generates a fatal failure with a generic message.
+#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed")
+
+// Define this macro to 1 to omit the definition of FAIL(), which is a
+// generic name and clashes with some other libraries.
+#if !GTEST_DONT_DEFINE_FAIL
+# define FAIL() GTEST_FAIL()
+#endif
+
+// Generates a success with a generic message.
+#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded")
+
+// Define this macro to 1 to omit the definition of SUCCEED(), which
+// is a generic name and clashes with some other libraries.
+#if !GTEST_DONT_DEFINE_SUCCEED
+# define SUCCEED() GTEST_SUCCEED()
+#endif
+
+// Macros for testing exceptions.
+//
+// * {ASSERT|EXPECT}_THROW(statement, expected_exception):
+// Tests that the statement throws the expected exception.
+// * {ASSERT|EXPECT}_NO_THROW(statement):
+// Tests that the statement doesn't throw any exception.
+// * {ASSERT|EXPECT}_ANY_THROW(statement):
+// Tests that the statement throws an exception.
+
+#define EXPECT_THROW(statement, expected_exception) \
+ GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_NO_THROW(statement) \
+ GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_ANY_THROW(statement) \
+ GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_THROW(statement, expected_exception) \
+ GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)
+#define ASSERT_NO_THROW(statement) \
+ GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)
+#define ASSERT_ANY_THROW(statement) \
+ GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)
+
+// Boolean assertions. Condition can be either a Boolean expression or an
+// AssertionResult. For more information on how to use AssertionResult with
+// these macros see comments on that class.
+#define EXPECT_TRUE(condition) \
+ GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
+ GTEST_NONFATAL_FAILURE_)
+#define EXPECT_FALSE(condition) \
+ GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
+ GTEST_NONFATAL_FAILURE_)
+#define ASSERT_TRUE(condition) \
+ GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
+ GTEST_FATAL_FAILURE_)
+#define ASSERT_FALSE(condition) \
+ GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
+ GTEST_FATAL_FAILURE_)
+
+// Includes the auto-generated header that implements a family of
+// generic predicate assertion macros.
+#include "gtest/gtest_pred_impl.h"
+
+// Macros for testing equalities and inequalities.
+//
+// * {ASSERT|EXPECT}_EQ(expected, actual): Tests that expected == actual
+// * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2
+// * {ASSERT|EXPECT}_LT(v1, v2): Tests that v1 < v2
+// * {ASSERT|EXPECT}_LE(v1, v2): Tests that v1 <= v2
+// * {ASSERT|EXPECT}_GT(v1, v2): Tests that v1 > v2
+// * {ASSERT|EXPECT}_GE(v1, v2): Tests that v1 >= v2
+//
+// When they are not, Google Test prints both the tested expressions and
+// their actual values. The values must be compatible built-in types,
+// or you will get a compiler error. By "compatible" we mean that the
+// values can be compared by the respective operator.
+//
+// Note:
+//
+// 1. It is possible to make a user-defined type work with
+// {ASSERT|EXPECT}_??(), but that requires overloading the
+// comparison operators and is thus discouraged by the Google C++
+// Usage Guide. Therefore, you are advised to use the
+// {ASSERT|EXPECT}_TRUE() macro to assert that two objects are
+// equal.
+//
+// 2. The {ASSERT|EXPECT}_??() macros do pointer comparisons on
+// pointers (in particular, C strings). Therefore, if you use it
+// with two C strings, you are testing how their locations in memory
+// are related, not how their content is related. To compare two C
+// strings by content, use {ASSERT|EXPECT}_STR*().
+//
+// 3. {ASSERT|EXPECT}_EQ(expected, actual) is preferred to
+// {ASSERT|EXPECT}_TRUE(expected == actual), as the former tells you
+// what the actual value is when it fails, and similarly for the
+// other comparisons.
+//
+// 4. Do not depend on the order in which {ASSERT|EXPECT}_??()
+// evaluate their arguments, which is undefined.
+//
+// 5. These macros evaluate their arguments exactly once.
+//
+// Examples:
+//
+// EXPECT_NE(5, Foo());
+// EXPECT_EQ(NULL, a_pointer);
+// ASSERT_LT(i, array_size);
+// ASSERT_GT(records.size(), 0) << "There is no record left.";
+
+#define EXPECT_EQ(expected, actual) \
+ EXPECT_PRED_FORMAT2(::testing::internal:: \
+ EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \
+ expected, actual)
+#define EXPECT_NE(expected, actual) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, expected, actual)
+#define EXPECT_LE(val1, val2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
+#define EXPECT_LT(val1, val2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
+#define EXPECT_GE(val1, val2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
+#define EXPECT_GT(val1, val2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
+
+#define GTEST_ASSERT_EQ(expected, actual) \
+ ASSERT_PRED_FORMAT2(::testing::internal:: \
+ EqHelper<GTEST_IS_NULL_LITERAL_(expected)>::Compare, \
+ expected, actual)
+#define GTEST_ASSERT_NE(val1, val2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
+#define GTEST_ASSERT_LE(val1, val2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
+#define GTEST_ASSERT_LT(val1, val2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
+#define GTEST_ASSERT_GE(val1, val2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
+#define GTEST_ASSERT_GT(val1, val2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
+
+// Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of
+// ASSERT_XY(), which clashes with some users' own code.
+
+#if !GTEST_DONT_DEFINE_ASSERT_EQ
+# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_NE
+# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_LE
+# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_LT
+# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_GE
+# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
+#endif
+
+#if !GTEST_DONT_DEFINE_ASSERT_GT
+# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
+#endif
+
+// C-string Comparisons. All tests treat NULL and any non-NULL string
+// as different. Two NULLs are equal.
+//
+// * {ASSERT|EXPECT}_STREQ(s1, s2): Tests that s1 == s2
+// * {ASSERT|EXPECT}_STRNE(s1, s2): Tests that s1 != s2
+// * {ASSERT|EXPECT}_STRCASEEQ(s1, s2): Tests that s1 == s2, ignoring case
+// * {ASSERT|EXPECT}_STRCASENE(s1, s2): Tests that s1 != s2, ignoring case
+//
+// For wide or narrow string objects, you can use the
+// {ASSERT|EXPECT}_??() macros.
+//
+// Don't depend on the order in which the arguments are evaluated,
+// which is undefined.
+//
+// These macros evaluate their arguments exactly once.
+
+#define EXPECT_STREQ(expected, actual) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual)
+#define EXPECT_STRNE(s1, s2) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
+#define EXPECT_STRCASEEQ(expected, actual) \
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual)
+#define EXPECT_STRCASENE(s1, s2)\
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
+
+#define ASSERT_STREQ(expected, actual) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual)
+#define ASSERT_STRNE(s1, s2) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
+#define ASSERT_STRCASEEQ(expected, actual) \
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual)
+#define ASSERT_STRCASENE(s1, s2)\
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
+
+// Macros for comparing floating-point numbers.
+//
+// * {ASSERT|EXPECT}_FLOAT_EQ(expected, actual):
+// Tests that two float values are almost equal.
+// * {ASSERT|EXPECT}_DOUBLE_EQ(expected, actual):
+// Tests that two double values are almost equal.
+// * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error):
+// Tests that v1 and v2 are within the given distance to each other.
+//
+// Google Test uses ULP-based comparison to automatically pick a default
+// error bound that is appropriate for the operands. See the
+// FloatingPoint template class in gtest-internal.h if you are
+// interested in the implementation details.
+
+#define EXPECT_FLOAT_EQ(expected, actual)\
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
+ expected, actual)
+
+#define EXPECT_DOUBLE_EQ(expected, actual)\
+ EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
+ expected, actual)
+
+#define ASSERT_FLOAT_EQ(expected, actual)\
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
+ expected, actual)
+
+#define ASSERT_DOUBLE_EQ(expected, actual)\
+ ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
+ expected, actual)
+
+#define EXPECT_NEAR(val1, val2, abs_error)\
+ EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
+ val1, val2, abs_error)
+
+#define ASSERT_NEAR(val1, val2, abs_error)\
+ ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
+ val1, val2, abs_error)
+
+// These predicate format functions work on floating-point values, and
+// can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g.
+//
+// EXPECT_PRED_FORMAT2(testing::DoubleLE, Foo(), 5.0);
+
+// Asserts that val1 is less than, or almost equal to, val2. Fails
+// otherwise. In particular, it fails if either val1 or val2 is NaN.
+GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2,
+ float val1, float val2);
+GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2,
+ double val1, double val2);
+
+
+#if GTEST_OS_WINDOWS
+
+// Macros that test for HRESULT failure and success, these are only useful
+// on Windows, and rely on Windows SDK macros and APIs to compile.
+//
+// * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr)
+//
+// When expr unexpectedly fails or succeeds, Google Test prints the
+// expected result and the actual result with both a human-readable
+// string representation of the error, if available, as well as the
+// hex result code.
+# define EXPECT_HRESULT_SUCCEEDED(expr) \
+ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
+
+# define ASSERT_HRESULT_SUCCEEDED(expr) \
+ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
+
+# define EXPECT_HRESULT_FAILED(expr) \
+ EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+
+# define ASSERT_HRESULT_FAILED(expr) \
+ ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
+
+#endif // GTEST_OS_WINDOWS
+
+// Macros that execute statement and check that it doesn't generate new fatal
+// failures in the current thread.
+//
+// * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement);
+//
+// Examples:
+//
+// EXPECT_NO_FATAL_FAILURE(Process());
+// ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed";
+//
+#define ASSERT_NO_FATAL_FAILURE(statement) \
+ GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)
+#define EXPECT_NO_FATAL_FAILURE(statement) \
+ GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
+
+// Causes a trace (including the source file path, the current line
+// number, and the given message) to be included in every test failure
+// message generated by code in the current scope. The effect is
+// undone when the control leaves the current scope.
+//
+// The message argument can be anything streamable to std::ostream.
+//
+// In the implementation, we include the current line number as part
+// of the dummy variable name, thus allowing multiple SCOPED_TRACE()s
+// to appear in the same block - as long as they are on different
+// lines.
+#define SCOPED_TRACE(message) \
+ ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\
+ __FILE__, __LINE__, ::testing::Message() << (message))
+
+// Compile-time assertion for type equality.
+// StaticAssertTypeEq<type1, type2>() compiles iff type1 and type2 are
+// the same type. The value it returns is not interesting.
+//
+// Instead of making StaticAssertTypeEq a class template, we make it a
+// function template that invokes a helper class template. This
+// prevents a user from misusing StaticAssertTypeEq<T1, T2> by
+// defining objects of that type.
+//
+// CAVEAT:
+//
+// When used inside a method of a class template,
+// StaticAssertTypeEq<T1, T2>() is effective ONLY IF the method is
+// instantiated. For example, given:
+//
+// template <typename T> class Foo {
+// public:
+// void Bar() { testing::StaticAssertTypeEq<int, T>(); }
+// };
+//
+// the code:
+//
+// void Test1() { Foo<bool> foo; }
+//
+// will NOT generate a compiler error, as Foo<bool>::Bar() is never
+// actually instantiated. Instead, you need:
+//
+// void Test2() { Foo<bool> foo; foo.Bar(); }
+//
+// to cause a compiler error.
+template <typename T1, typename T2>
+bool StaticAssertTypeEq() {
+ (void)internal::StaticAssertTypeEqHelper<T1, T2>();
+ return true;
+}
+
+// Defines a test.
+//
+// The first parameter is the name of the test case, and the second
+// parameter is the name of the test within the test case.
+//
+// The convention is to end the test case name with "Test". For
+// example, a test case for the Foo class can be named FooTest.
+//
+// The user should put his test code between braces after using this
+// macro. Example:
+//
+// TEST(FooTest, InitializesCorrectly) {
+// Foo foo;
+// EXPECT_TRUE(foo.StatusIsOK());
+// }
+
+// Note that we call GetTestTypeId() instead of GetTypeId<
+// ::testing::Test>() here to get the type ID of testing::Test. This
+// is to work around a suspected linker bug when using Google Test as
+// a framework on Mac OS X. The bug causes GetTypeId<
+// ::testing::Test>() to return different values depending on whether
+// the call is from the Google Test framework itself or from user test
+// code. GetTestTypeId() is guaranteed to always return the same
+// value, as it always calls GetTypeId<>() from the Google Test
+// framework.
+#define GTEST_TEST(test_case_name, test_name)\
+ GTEST_TEST_(test_case_name, test_name, \
+ ::testing::Test, ::testing::internal::GetTestTypeId())
+
+// Define this macro to 1 to omit the definition of TEST(), which
+// is a generic name and clashes with some other libraries.
+#if !GTEST_DONT_DEFINE_TEST
+# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name)
+#endif
+
+// Defines a test that uses a test fixture.
+//
+// The first parameter is the name of the test fixture class, which
+// also doubles as the test case name. The second parameter is the
+// name of the test within the test case.
+//
+// A test fixture class must be declared earlier. The user should put
+// his test code between braces after using this macro. Example:
+//
+// class FooTest : public testing::Test {
+// protected:
+// virtual void SetUp() { b_.AddElement(3); }
+//
+// Foo a_;
+// Foo b_;
+// };
+//
+// TEST_F(FooTest, InitializesCorrectly) {
+// EXPECT_TRUE(a_.StatusIsOK());
+// }
+//
+// TEST_F(FooTest, ReturnsElementCountCorrectly) {
+// EXPECT_EQ(0, a_.size());
+// EXPECT_EQ(1, b_.size());
+// }
+
+#define TEST_F(test_fixture, test_name)\
+ GTEST_TEST_(test_fixture, test_name, test_fixture, \
+ ::testing::internal::GetTypeId<test_fixture>())
+
+} // namespace testing
+
+// Use this function in main() to run all tests. It returns 0 if all
+// tests are successful, or 1 otherwise.
+//
+// RUN_ALL_TESTS() should be invoked after the command line has been
+// parsed by InitGoogleTest().
+//
+// This function was formerly a macro; thus, it is in the global
+// namespace and has an all-caps name.
+int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_;
+
+inline int RUN_ALL_TESTS() {
+ return ::testing::UnitTest::GetInstance()->Run();
+}
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_H_
diff --git a/test/fmw/gtest/include/gtest/gtest_pred_impl.h b/test/fmw/gtest/include/gtest/gtest_pred_impl.h
new file mode 100644
index 0000000..30ae712
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/gtest_pred_impl.h
@@ -0,0 +1,358 @@
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// This file is AUTOMATICALLY GENERATED on 10/31/2011 by command
+// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND!
+//
+// Implements a family of generic predicate assertion macros.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
+#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
+
+// Makes sure this header is not included before gtest.h.
+#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
+# error Do not include gtest_pred_impl.h directly. Include gtest.h instead.
+#endif // GTEST_INCLUDE_GTEST_GTEST_H_
+
+// This header implements a family of generic predicate assertion
+// macros:
+//
+// ASSERT_PRED_FORMAT1(pred_format, v1)
+// ASSERT_PRED_FORMAT2(pred_format, v1, v2)
+// ...
+//
+// where pred_format is a function or functor that takes n (in the
+// case of ASSERT_PRED_FORMATn) values and their source expression
+// text, and returns a testing::AssertionResult. See the definition
+// of ASSERT_EQ in gtest.h for an example.
+//
+// If you don't care about formatting, you can use the more
+// restrictive version:
+//
+// ASSERT_PRED1(pred, v1)
+// ASSERT_PRED2(pred, v1, v2)
+// ...
+//
+// where pred is an n-ary function or functor that returns bool,
+// and the values v1, v2, ..., must support the << operator for
+// streaming to std::ostream.
+//
+// We also define the EXPECT_* variations.
+//
+// For now we only support predicates whose arity is at most 5.
+// Please email googletestframework@googlegroups.com if you need
+// support for higher arities.
+
+// GTEST_ASSERT_ is the basic statement to which all of the assertions
+// in this file reduce. Don't use this in your code.
+
+#define GTEST_ASSERT_(expression, on_failure) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (const ::testing::AssertionResult gtest_ar = (expression)) \
+ ; \
+ else \
+ on_failure(gtest_ar.failure_message())
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED1. Don't use
+// this in your code.
+template <typename Pred,
+ typename T1>
+AssertionResult AssertPred1Helper(const char* pred_text,
+ const char* e1,
+ Pred pred,
+ const T1& v1) {
+ if (pred(v1)) return AssertionSuccess();
+
+ return AssertionFailure() << pred_text << "("
+ << e1 << ") evaluates to false, where"
+ << "\n" << e1 << " evaluates to " << v1;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\
+ GTEST_ASSERT_(pred_format(#v1, v1), \
+ on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use
+// this in your code.
+#define GTEST_PRED1_(pred, v1, on_failure)\
+ GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \
+ #v1, \
+ pred, \
+ v1), on_failure)
+
+// Unary predicate assertion macros.
+#define EXPECT_PRED_FORMAT1(pred_format, v1) \
+ GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED1(pred, v1) \
+ GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT1(pred_format, v1) \
+ GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED1(pred, v1) \
+ GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED2. Don't use
+// this in your code.
+template <typename Pred,
+ typename T1,
+ typename T2>
+AssertionResult AssertPred2Helper(const char* pred_text,
+ const char* e1,
+ const char* e2,
+ Pred pred,
+ const T1& v1,
+ const T2& v2) {
+ if (pred(v1, v2)) return AssertionSuccess();
+
+ return AssertionFailure() << pred_text << "("
+ << e1 << ", "
+ << e2 << ") evaluates to false, where"
+ << "\n" << e1 << " evaluates to " << v1
+ << "\n" << e2 << " evaluates to " << v2;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\
+ GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \
+ on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use
+// this in your code.
+#define GTEST_PRED2_(pred, v1, v2, on_failure)\
+ GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \
+ #v1, \
+ #v2, \
+ pred, \
+ v1, \
+ v2), on_failure)
+
+// Binary predicate assertion macros.
+#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \
+ GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED2(pred, v1, v2) \
+ GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \
+ GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED2(pred, v1, v2) \
+ GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED3. Don't use
+// this in your code.
+template <typename Pred,
+ typename T1,
+ typename T2,
+ typename T3>
+AssertionResult AssertPred3Helper(const char* pred_text,
+ const char* e1,
+ const char* e2,
+ const char* e3,
+ Pred pred,
+ const T1& v1,
+ const T2& v2,
+ const T3& v3) {
+ if (pred(v1, v2, v3)) return AssertionSuccess();
+
+ return AssertionFailure() << pred_text << "("
+ << e1 << ", "
+ << e2 << ", "
+ << e3 << ") evaluates to false, where"
+ << "\n" << e1 << " evaluates to " << v1
+ << "\n" << e2 << " evaluates to " << v2
+ << "\n" << e3 << " evaluates to " << v3;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\
+ GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \
+ on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use
+// this in your code.
+#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\
+ GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \
+ #v1, \
+ #v2, \
+ #v3, \
+ pred, \
+ v1, \
+ v2, \
+ v3), on_failure)
+
+// Ternary predicate assertion macros.
+#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \
+ GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED3(pred, v1, v2, v3) \
+ GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \
+ GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED3(pred, v1, v2, v3) \
+ GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED4. Don't use
+// this in your code.
+template <typename Pred,
+ typename T1,
+ typename T2,
+ typename T3,
+ typename T4>
+AssertionResult AssertPred4Helper(const char* pred_text,
+ const char* e1,
+ const char* e2,
+ const char* e3,
+ const char* e4,
+ Pred pred,
+ const T1& v1,
+ const T2& v2,
+ const T3& v3,
+ const T4& v4) {
+ if (pred(v1, v2, v3, v4)) return AssertionSuccess();
+
+ return AssertionFailure() << pred_text << "("
+ << e1 << ", "
+ << e2 << ", "
+ << e3 << ", "
+ << e4 << ") evaluates to false, where"
+ << "\n" << e1 << " evaluates to " << v1
+ << "\n" << e2 << " evaluates to " << v2
+ << "\n" << e3 << " evaluates to " << v3
+ << "\n" << e4 << " evaluates to " << v4;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\
+ GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \
+ on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use
+// this in your code.
+#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\
+ GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \
+ #v1, \
+ #v2, \
+ #v3, \
+ #v4, \
+ pred, \
+ v1, \
+ v2, \
+ v3, \
+ v4), on_failure)
+
+// 4-ary predicate assertion macros.
+#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
+ GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED4(pred, v1, v2, v3, v4) \
+ GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
+ GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED4(pred, v1, v2, v3, v4) \
+ GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
+
+
+
+// Helper function for implementing {EXPECT|ASSERT}_PRED5. Don't use
+// this in your code.
+template <typename Pred,
+ typename T1,
+ typename T2,
+ typename T3,
+ typename T4,
+ typename T5>
+AssertionResult AssertPred5Helper(const char* pred_text,
+ const char* e1,
+ const char* e2,
+ const char* e3,
+ const char* e4,
+ const char* e5,
+ Pred pred,
+ const T1& v1,
+ const T2& v2,
+ const T3& v3,
+ const T4& v4,
+ const T5& v5) {
+ if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess();
+
+ return AssertionFailure() << pred_text << "("
+ << e1 << ", "
+ << e2 << ", "
+ << e3 << ", "
+ << e4 << ", "
+ << e5 << ") evaluates to false, where"
+ << "\n" << e1 << " evaluates to " << v1
+ << "\n" << e2 << " evaluates to " << v2
+ << "\n" << e3 << " evaluates to " << v3
+ << "\n" << e4 << " evaluates to " << v4
+ << "\n" << e5 << " evaluates to " << v5;
+}
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5.
+// Don't use this in your code.
+#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\
+ GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \
+ on_failure)
+
+// Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use
+// this in your code.
+#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\
+ GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \
+ #v1, \
+ #v2, \
+ #v3, \
+ #v4, \
+ #v5, \
+ pred, \
+ v1, \
+ v2, \
+ v3, \
+ v4, \
+ v5), on_failure)
+
+// 5-ary predicate assertion macros.
+#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
+ GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
+#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \
+ GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
+#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
+ GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
+#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \
+ GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
+
+
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
diff --git a/test/fmw/gtest/include/gtest/gtest_prod.h b/test/fmw/gtest/include/gtest/gtest_prod.h
new file mode 100644
index 0000000..da80ddc
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/gtest_prod.h
@@ -0,0 +1,58 @@
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// Google C++ Testing Framework definitions useful in production code.
+
+#ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_
+#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_
+
+// When you need to test the private or protected members of a class,
+// use the FRIEND_TEST macro to declare your tests as friends of the
+// class. For example:
+//
+// class MyClass {
+// private:
+// void MyMethod();
+// FRIEND_TEST(MyClassTest, MyMethod);
+// };
+//
+// class MyClassTest : public testing::Test {
+// // ...
+// };
+//
+// TEST_F(MyClassTest, MyMethod) {
+// // Can call MyClass::MyMethod() here.
+// }
+
+#define FRIEND_TEST(test_case_name, test_name)\
+friend class test_case_name##_##test_name##_Test
+
+#endif // GTEST_INCLUDE_GTEST_GTEST_PROD_H_
diff --git a/test/fmw/gtest/include/gtest/internal/gtest-death-test-internal.h b/test/fmw/gtest/include/gtest/internal/gtest-death-test-internal.h
new file mode 100644
index 0000000..2b3a78f
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/internal/gtest-death-test-internal.h
@@ -0,0 +1,319 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file defines internal utilities needed for implementing
+// death tests. They are subject to change without notice.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
+
+#include "gtest/internal/gtest-internal.h"
+
+#include <stdio.h>
+
+namespace testing {
+namespace internal {
+
+GTEST_DECLARE_string_(internal_run_death_test);
+
+// Names of the flags (needed for parsing Google Test flags).
+const char kDeathTestStyleFlag[] = "death_test_style";
+const char kDeathTestUseFork[] = "death_test_use_fork";
+const char kInternalRunDeathTestFlag[] = "internal_run_death_test";
+
+#if GTEST_HAS_DEATH_TEST
+
+// DeathTest is a class that hides much of the complexity of the
+// GTEST_DEATH_TEST_ macro. It is abstract; its static Create method
+// returns a concrete class that depends on the prevailing death test
+// style, as defined by the --gtest_death_test_style and/or
+// --gtest_internal_run_death_test flags.
+
+// In describing the results of death tests, these terms are used with
+// the corresponding definitions:
+//
+// exit status: The integer exit information in the format specified
+// by wait(2)
+// exit code: The integer code passed to exit(3), _exit(2), or
+// returned from main()
+class GTEST_API_ DeathTest {
+ public:
+ // Create returns false if there was an error determining the
+ // appropriate action to take for the current death test; for example,
+ // if the gtest_death_test_style flag is set to an invalid value.
+ // The LastMessage method will return a more detailed message in that
+ // case. Otherwise, the DeathTest pointer pointed to by the "test"
+ // argument is set. If the death test should be skipped, the pointer
+ // is set to NULL; otherwise, it is set to the address of a new concrete
+ // DeathTest object that controls the execution of the current test.
+ static bool Create(const char* statement, const RE* regex,
+ const char* file, int line, DeathTest** test);
+ DeathTest();
+ virtual ~DeathTest() { }
+
+ // A helper class that aborts a death test when it's deleted.
+ class ReturnSentinel {
+ public:
+ explicit ReturnSentinel(DeathTest* test) : test_(test) { }
+ ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); }
+ private:
+ DeathTest* const test_;
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel);
+ } GTEST_ATTRIBUTE_UNUSED_;
+
+ // An enumeration of possible roles that may be taken when a death
+ // test is encountered. EXECUTE means that the death test logic should
+ // be executed immediately. OVERSEE means that the program should prepare
+ // the appropriate environment for a child process to execute the death
+ // test, then wait for it to complete.
+ enum TestRole { OVERSEE_TEST, EXECUTE_TEST };
+
+ // An enumeration of the three reasons that a test might be aborted.
+ enum AbortReason {
+ TEST_ENCOUNTERED_RETURN_STATEMENT,
+ TEST_THREW_EXCEPTION,
+ TEST_DID_NOT_DIE
+ };
+
+ // Assumes one of the above roles.
+ virtual TestRole AssumeRole() = 0;
+
+ // Waits for the death test to finish and returns its status.
+ virtual int Wait() = 0;
+
+ // Returns true if the death test passed; that is, the test process
+ // exited during the test, its exit status matches a user-supplied
+ // predicate, and its stderr output matches a user-supplied regular
+ // expression.
+ // The user-supplied predicate may be a macro expression rather
+ // than a function pointer or functor, or else Wait and Passed could
+ // be combined.
+ virtual bool Passed(bool exit_status_ok) = 0;
+
+ // Signals that the death test did not die as expected.
+ virtual void Abort(AbortReason reason) = 0;
+
+ // Returns a human-readable outcome message regarding the outcome of
+ // the last death test.
+ static const char* LastMessage();
+
+ static void set_last_death_test_message(const std::string& message);
+
+ private:
+ // A string containing a description of the outcome of the last death test.
+ static std::string last_death_test_message_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest);
+};
+
+// Factory interface for death tests. May be mocked out for testing.
+class DeathTestFactory {
+ public:
+ virtual ~DeathTestFactory() { }
+ virtual bool Create(const char* statement, const RE* regex,
+ const char* file, int line, DeathTest** test) = 0;
+};
+
+// A concrete DeathTestFactory implementation for normal use.
+class DefaultDeathTestFactory : public DeathTestFactory {
+ public:
+ virtual bool Create(const char* statement, const RE* regex,
+ const char* file, int line, DeathTest** test);
+};
+
+// Returns true if exit_status describes a process that was terminated
+// by a signal, or exited normally with a nonzero exit code.
+GTEST_API_ bool ExitedUnsuccessfully(int exit_status);
+
+// Traps C++ exceptions escaping statement and reports them as test
+// failures. Note that trapping SEH exceptions is not implemented here.
+# if GTEST_HAS_EXCEPTIONS
+# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
+ try { \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ } catch (const ::std::exception& gtest_exception) { \
+ fprintf(\
+ stderr, \
+ "\n%s: Caught std::exception-derived exception escaping the " \
+ "death test statement. Exception message: %s\n", \
+ ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \
+ gtest_exception.what()); \
+ fflush(stderr); \
+ death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
+ } catch (...) { \
+ death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
+ }
+
+# else
+# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
+
+# endif
+
+// This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*,
+// ASSERT_EXIT*, and EXPECT_EXIT*.
+# define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::AlwaysTrue()) { \
+ const ::testing::internal::RE& gtest_regex = (regex); \
+ ::testing::internal::DeathTest* gtest_dt; \
+ if (!::testing::internal::DeathTest::Create(#statement, &gtest_regex, \
+ __FILE__, __LINE__, &gtest_dt)) { \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \
+ } \
+ if (gtest_dt != NULL) { \
+ ::testing::internal::scoped_ptr< ::testing::internal::DeathTest> \
+ gtest_dt_ptr(gtest_dt); \
+ switch (gtest_dt->AssumeRole()) { \
+ case ::testing::internal::DeathTest::OVERSEE_TEST: \
+ if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) { \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \
+ } \
+ break; \
+ case ::testing::internal::DeathTest::EXECUTE_TEST: { \
+ ::testing::internal::DeathTest::ReturnSentinel \
+ gtest_sentinel(gtest_dt); \
+ GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \
+ gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \
+ break; \
+ } \
+ default: \
+ break; \
+ } \
+ } \
+ } else \
+ GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__): \
+ fail(::testing::internal::DeathTest::LastMessage())
+// The symbol "fail" here expands to something into which a message
+// can be streamed.
+
+// This macro is for implementing ASSERT/EXPECT_DEBUG_DEATH when compiled in
+// NDEBUG mode. In this case we need the statements to be executed, the regex is
+// ignored, and the macro must accept a streamed message even though the message
+// is never printed.
+# define GTEST_EXECUTE_STATEMENT_(statement, regex) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::AlwaysTrue()) { \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ } else \
+ ::testing::Message()
+
+// A class representing the parsed contents of the
+// --gtest_internal_run_death_test flag, as it existed when
+// RUN_ALL_TESTS was called.
+class InternalRunDeathTestFlag {
+ public:
+ InternalRunDeathTestFlag(const std::string& a_file,
+ int a_line,
+ int an_index,
+ int a_write_fd)
+ : file_(a_file), line_(a_line), index_(an_index),
+ write_fd_(a_write_fd) {}
+
+ ~InternalRunDeathTestFlag() {
+ if (write_fd_ >= 0)
+ posix::Close(write_fd_);
+ }
+
+ const std::string& file() const { return file_; }
+ int line() const { return line_; }
+ int index() const { return index_; }
+ int write_fd() const { return write_fd_; }
+
+ private:
+ std::string file_;
+ int line_;
+ int index_;
+ int write_fd_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag);
+};
+
+// Returns a newly created InternalRunDeathTestFlag object with fields
+// initialized from the GTEST_FLAG(internal_run_death_test) flag if
+// the flag is specified; otherwise returns NULL.
+InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag();
+
+#else // GTEST_HAS_DEATH_TEST
+
+// This macro is used for implementing macros such as
+// EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where
+// death tests are not supported. Those macros must compile on such systems
+// iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on
+// systems that support death tests. This allows one to write such a macro
+// on a system that does not support death tests and be sure that it will
+// compile on a death-test supporting system.
+//
+// Parameters:
+// statement - A statement that a macro such as EXPECT_DEATH would test
+// for program termination. This macro has to make sure this
+// statement is compiled but not executed, to ensure that
+// EXPECT_DEATH_IF_SUPPORTED compiles with a certain
+// parameter iff EXPECT_DEATH compiles with it.
+// regex - A regex that a macro such as EXPECT_DEATH would use to test
+// the output of statement. This parameter has to be
+// compiled but not evaluated by this macro, to ensure that
+// this macro only accepts expressions that a macro such as
+// EXPECT_DEATH would accept.
+// terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED
+// and a return statement for ASSERT_DEATH_IF_SUPPORTED.
+// This ensures that ASSERT_DEATH_IF_SUPPORTED will not
+// compile inside functions where ASSERT_DEATH doesn't
+// compile.
+//
+// The branch that has an always false condition is used to ensure that
+// statement and regex are compiled (and thus syntactically correct) but
+// never executed. The unreachable code macro protects the terminator
+// statement from generating an 'unreachable code' warning in case
+// statement unconditionally returns or throws. The Message constructor at
+// the end allows the syntax of streaming additional messages into the
+// macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH.
+# define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::AlwaysTrue()) { \
+ GTEST_LOG_(WARNING) \
+ << "Death tests are not supported on this platform.\n" \
+ << "Statement '" #statement "' cannot be verified."; \
+ } else if (::testing::internal::AlwaysFalse()) { \
+ ::testing::internal::RE::PartialMatch(".*", (regex)); \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ terminator; \
+ } else \
+ ::testing::Message()
+
+#endif // GTEST_HAS_DEATH_TEST
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
diff --git a/test/fmw/gtest/include/gtest/internal/gtest-filepath.h b/test/fmw/gtest/include/gtest/internal/gtest-filepath.h
new file mode 100644
index 0000000..7a13b4b
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/internal/gtest-filepath.h
@@ -0,0 +1,206 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: keith.ray@gmail.com (Keith Ray)
+//
+// Google Test filepath utilities
+//
+// This header file declares classes and functions used internally by
+// Google Test. They are subject to change without notice.
+//
+// This file is #included in <gtest/internal/gtest-internal.h>.
+// Do not include this header file separately!
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
+
+#include "gtest/internal/gtest-string.h"
+
+namespace testing {
+namespace internal {
+
+// FilePath - a class for file and directory pathname manipulation which
+// handles platform-specific conventions (like the pathname separator).
+// Used for helper functions for naming files in a directory for xml output.
+// Except for Set methods, all methods are const or static, which provides an
+// "immutable value object" -- useful for peace of mind.
+// A FilePath with a value ending in a path separator ("like/this/") represents
+// a directory, otherwise it is assumed to represent a file. In either case,
+// it may or may not represent an actual file or directory in the file system.
+// Names are NOT checked for syntax correctness -- no checking for illegal
+// characters, malformed paths, etc.
+
+class GTEST_API_ FilePath {
+ public:
+ FilePath() : pathname_("") { }
+ FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { }
+
+ explicit FilePath(const std::string& pathname) : pathname_(pathname) {
+ Normalize();
+ }
+
+ FilePath& operator=(const FilePath& rhs) {
+ Set(rhs);
+ return *this;
+ }
+
+ void Set(const FilePath& rhs) {
+ pathname_ = rhs.pathname_;
+ }
+
+ const std::string& string() const { return pathname_; }
+ const char* c_str() const { return pathname_.c_str(); }
+
+ // Returns the current working directory, or "" if unsuccessful.
+ static FilePath GetCurrentDir();
+
+ // Given directory = "dir", base_name = "test", number = 0,
+ // extension = "xml", returns "dir/test.xml". If number is greater
+ // than zero (e.g., 12), returns "dir/test_12.xml".
+ // On Windows platform, uses \ as the separator rather than /.
+ static FilePath MakeFileName(const FilePath& directory,
+ const FilePath& base_name,
+ int number,
+ const char* extension);
+
+ // Given directory = "dir", relative_path = "test.xml",
+ // returns "dir/test.xml".
+ // On Windows, uses \ as the separator rather than /.
+ static FilePath ConcatPaths(const FilePath& directory,
+ const FilePath& relative_path);
+
+ // Returns a pathname for a file that does not currently exist. The pathname
+ // will be directory/base_name.extension or
+ // directory/base_name_<number>.extension if directory/base_name.extension
+ // already exists. The number will be incremented until a pathname is found
+ // that does not already exist.
+ // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
+ // There could be a race condition if two or more processes are calling this
+ // function at the same time -- they could both pick the same filename.
+ static FilePath GenerateUniqueFileName(const FilePath& directory,
+ const FilePath& base_name,
+ const char* extension);
+
+ // Returns true iff the path is "".
+ bool IsEmpty() const { return pathname_.empty(); }
+
+ // If input name has a trailing separator character, removes it and returns
+ // the name, otherwise return the name string unmodified.
+ // On Windows platform, uses \ as the separator, other platforms use /.
+ FilePath RemoveTrailingPathSeparator() const;
+
+ // Returns a copy of the FilePath with the directory part removed.
+ // Example: FilePath("path/to/file").RemoveDirectoryName() returns
+ // FilePath("file"). If there is no directory part ("just_a_file"), it returns
+ // the FilePath unmodified. If there is no file part ("just_a_dir/") it
+ // returns an empty FilePath ("").
+ // On Windows platform, '\' is the path separator, otherwise it is '/'.
+ FilePath RemoveDirectoryName() const;
+
+ // RemoveFileName returns the directory path with the filename removed.
+ // Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
+ // If the FilePath is "a_file" or "/a_file", RemoveFileName returns
+ // FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
+ // not have a file, like "just/a/dir/", it returns the FilePath unmodified.
+ // On Windows platform, '\' is the path separator, otherwise it is '/'.
+ FilePath RemoveFileName() const;
+
+ // Returns a copy of the FilePath with the case-insensitive extension removed.
+ // Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
+ // FilePath("dir/file"). If a case-insensitive extension is not
+ // found, returns a copy of the original FilePath.
+ FilePath RemoveExtension(const char* extension) const;
+
+ // Creates directories so that path exists. Returns true if successful or if
+ // the directories already exist; returns false if unable to create
+ // directories for any reason. Will also return false if the FilePath does
+ // not represent a directory (that is, it doesn't end with a path separator).
+ bool CreateDirectoriesRecursively() const;
+
+ // Create the directory so that path exists. Returns true if successful or
+ // if the directory already exists; returns false if unable to create the
+ // directory for any reason, including if the parent directory does not
+ // exist. Not named "CreateDirectory" because that's a macro on Windows.
+ bool CreateFolder() const;
+
+ // Returns true if FilePath describes something in the file-system,
+ // either a file, directory, or whatever, and that something exists.
+ bool FileOrDirectoryExists() const;
+
+ // Returns true if pathname describes a directory in the file-system
+ // that exists.
+ bool DirectoryExists() const;
+
+ // Returns true if FilePath ends with a path separator, which indicates that
+ // it is intended to represent a directory. Returns false otherwise.
+ // This does NOT check that a directory (or file) actually exists.
+ bool IsDirectory() const;
+
+ // Returns true if pathname describes a root directory. (Windows has one
+ // root directory per disk drive.)
+ bool IsRootDirectory() const;
+
+ // Returns true if pathname describes an absolute path.
+ bool IsAbsolutePath() const;
+
+ private:
+ // Replaces multiple consecutive separators with a single separator.
+ // For example, "bar///foo" becomes "bar/foo". Does not eliminate other
+ // redundancies that might be in a pathname involving "." or "..".
+ //
+ // A pathname with multiple consecutive separators may occur either through
+ // user error or as a result of some scripts or APIs that generate a pathname
+ // with a trailing separator. On other platforms the same API or script
+ // may NOT generate a pathname with a trailing "/". Then elsewhere that
+ // pathname may have another "/" and pathname components added to it,
+ // without checking for the separator already being there.
+ // The script language and operating system may allow paths like "foo//bar"
+ // but some of the functions in FilePath will not handle that correctly. In
+ // particular, RemoveTrailingPathSeparator() only removes one separator, and
+ // it is called in CreateDirectoriesRecursively() assuming that it will change
+ // a pathname from directory syntax (trailing separator) to filename syntax.
+ //
+ // On Windows this method also replaces the alternate path separator '/' with
+ // the primary path separator '\\', so that for example "bar\\/\\foo" becomes
+ // "bar\\foo".
+
+ void Normalize();
+
+ // Returns a pointer to the last occurence of a valid path separator in
+ // the FilePath. On Windows, for example, both '/' and '\' are valid path
+ // separators. Returns NULL if no path separator was found.
+ const char* FindLastPathSeparator() const;
+
+ std::string pathname_;
+}; // class FilePath
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
diff --git a/test/fmw/gtest/include/gtest/internal/gtest-internal.h b/test/fmw/gtest/include/gtest/internal/gtest-internal.h
new file mode 100644
index 0000000..0dcc3a3
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/internal/gtest-internal.h
@@ -0,0 +1,1158 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file declares functions and macros used internally by
+// Google Test. They are subject to change without notice.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
+
+#include "gtest/internal/gtest-port.h"
+
+#if GTEST_OS_LINUX
+# include <stdlib.h>
+# include <sys/types.h>
+# include <sys/wait.h>
+# include <unistd.h>
+#endif // GTEST_OS_LINUX
+
+#if GTEST_HAS_EXCEPTIONS
+# include <stdexcept>
+#endif
+
+#include <ctype.h>
+#include <float.h>
+#include <string.h>
+#include <iomanip>
+#include <limits>
+#include <set>
+
+#include "gtest/gtest-message.h"
+#include "gtest/internal/gtest-string.h"
+#include "gtest/internal/gtest-filepath.h"
+#include "gtest/internal/gtest-type-util.h"
+
+// Due to C++ preprocessor weirdness, we need double indirection to
+// concatenate two tokens when one of them is __LINE__. Writing
+//
+// foo ## __LINE__
+//
+// will result in the token foo__LINE__, instead of foo followed by
+// the current line number. For more details, see
+// http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6
+#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
+#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar
+
+class ProtocolMessage;
+namespace proto2 { class Message; }
+
+namespace testing {
+
+// Forward declarations.
+
+class AssertionResult; // Result of an assertion.
+class Message; // Represents a failure message.
+class Test; // Represents a test.
+class TestInfo; // Information about a test.
+class TestPartResult; // Result of a test part.
+class UnitTest; // A collection of test cases.
+
+template <typename T>
+::std::string PrintToString(const T& value);
+
+namespace internal {
+
+struct TraceInfo; // Information about a trace point.
+class ScopedTrace; // Implements scoped trace.
+class TestInfoImpl; // Opaque implementation of TestInfo
+class UnitTestImpl; // Opaque implementation of UnitTest
+
+// How many times InitGoogleTest() has been called.
+GTEST_API_ extern int g_init_gtest_count;
+
+// The text used in failure messages to indicate the start of the
+// stack trace.
+GTEST_API_ extern const char kStackTraceMarker[];
+
+// Two overloaded helpers for checking at compile time whether an
+// expression is a null pointer literal (i.e. NULL or any 0-valued
+// compile-time integral constant). Their return values have
+// different sizes, so we can use sizeof() to test which version is
+// picked by the compiler. These helpers have no implementations, as
+// we only need their signatures.
+//
+// Given IsNullLiteralHelper(x), the compiler will pick the first
+// version if x can be implicitly converted to Secret*, and pick the
+// second version otherwise. Since Secret is a secret and incomplete
+// type, the only expression a user can write that has type Secret* is
+// a null pointer literal. Therefore, we know that x is a null
+// pointer literal if and only if the first version is picked by the
+// compiler.
+char IsNullLiteralHelper(Secret* p);
+char (&IsNullLiteralHelper(...))[2]; // NOLINT
+
+// A compile-time bool constant that is true if and only if x is a
+// null pointer literal (i.e. NULL or any 0-valued compile-time
+// integral constant).
+#ifdef GTEST_ELLIPSIS_NEEDS_POD_
+// We lose support for NULL detection where the compiler doesn't like
+// passing non-POD classes through ellipsis (...).
+# define GTEST_IS_NULL_LITERAL_(x) false
+#else
+# define GTEST_IS_NULL_LITERAL_(x) \
+ (sizeof(::testing::internal::IsNullLiteralHelper(x)) == 1)
+#endif // GTEST_ELLIPSIS_NEEDS_POD_
+
+// Appends the user-supplied message to the Google-Test-generated message.
+GTEST_API_ std::string AppendUserMessage(
+ const std::string& gtest_msg, const Message& user_msg);
+
+#if GTEST_HAS_EXCEPTIONS
+
+// This exception is thrown by (and only by) a failed Google Test
+// assertion when GTEST_FLAG(throw_on_failure) is true (if exceptions
+// are enabled). We derive it from std::runtime_error, which is for
+// errors presumably detectable only at run time. Since
+// std::runtime_error inherits from std::exception, many testing
+// frameworks know how to extract and print the message inside it.
+class GTEST_API_ GoogleTestFailureException : public ::std::runtime_error {
+ public:
+ explicit GoogleTestFailureException(const TestPartResult& failure);
+};
+
+#endif // GTEST_HAS_EXCEPTIONS
+
+// A helper class for creating scoped traces in user programs.
+class GTEST_API_ ScopedTrace {
+ public:
+ // The c'tor pushes the given source file location and message onto
+ // a trace stack maintained by Google Test.
+ ScopedTrace(const char* file, int line, const Message& message);
+
+ // The d'tor pops the info pushed by the c'tor.
+ //
+ // Note that the d'tor is not virtual in order to be efficient.
+ // Don't inherit from ScopedTrace!
+ ~ScopedTrace();
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedTrace);
+} GTEST_ATTRIBUTE_UNUSED_; // A ScopedTrace object does its job in its
+ // c'tor and d'tor. Therefore it doesn't
+ // need to be used otherwise.
+
+// Constructs and returns the message for an equality assertion
+// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
+//
+// The first four parameters are the expressions used in the assertion
+// and their values, as strings. For example, for ASSERT_EQ(foo, bar)
+// where foo is 5 and bar is 6, we have:
+//
+// expected_expression: "foo"
+// actual_expression: "bar"
+// expected_value: "5"
+// actual_value: "6"
+//
+// The ignoring_case parameter is true iff the assertion is a
+// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will
+// be inserted into the message.
+GTEST_API_ AssertionResult EqFailure(const char* expected_expression,
+ const char* actual_expression,
+ const std::string& expected_value,
+ const std::string& actual_value,
+ bool ignoring_case);
+
+// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
+GTEST_API_ std::string GetBoolAssertionFailureMessage(
+ const AssertionResult& assertion_result,
+ const char* expression_text,
+ const char* actual_predicate_value,
+ const char* expected_predicate_value);
+
+// This template class represents an IEEE floating-point number
+// (either single-precision or double-precision, depending on the
+// template parameters).
+//
+// The purpose of this class is to do more sophisticated number
+// comparison. (Due to round-off error, etc, it's very unlikely that
+// two floating-points will be equal exactly. Hence a naive
+// comparison by the == operation often doesn't work.)
+//
+// Format of IEEE floating-point:
+//
+// The most-significant bit being the leftmost, an IEEE
+// floating-point looks like
+//
+// sign_bit exponent_bits fraction_bits
+//
+// Here, sign_bit is a single bit that designates the sign of the
+// number.
+//
+// For float, there are 8 exponent bits and 23 fraction bits.
+//
+// For double, there are 11 exponent bits and 52 fraction bits.
+//
+// More details can be found at
+// http://en.wikipedia.org/wiki/IEEE_floating-point_standard.
+//
+// Template parameter:
+//
+// RawType: the raw floating-point type (either float or double)
+template <typename RawType>
+class FloatingPoint {
+ public:
+ // Defines the unsigned integer type that has the same size as the
+ // floating point number.
+ typedef typename TypeWithSize<sizeof(RawType)>::UInt Bits;
+
+ // Constants.
+
+ // # of bits in a number.
+ static const size_t kBitCount = 8*sizeof(RawType);
+
+ // # of fraction bits in a number.
+ static const size_t kFractionBitCount =
+ std::numeric_limits<RawType>::digits - 1;
+
+ // # of exponent bits in a number.
+ static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount;
+
+ // The mask for the sign bit.
+ static const Bits kSignBitMask = static_cast<Bits>(1) << (kBitCount - 1);
+
+ // The mask for the fraction bits.
+ static const Bits kFractionBitMask =
+ ~static_cast<Bits>(0) >> (kExponentBitCount + 1);
+
+ // The mask for the exponent bits.
+ static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask);
+
+ // How many ULP's (Units in the Last Place) we want to tolerate when
+ // comparing two numbers. The larger the value, the more error we
+ // allow. A 0 value means that two numbers must be exactly the same
+ // to be considered equal.
+ //
+ // The maximum error of a single floating-point operation is 0.5
+ // units in the last place. On Intel CPU's, all floating-point
+ // calculations are done with 80-bit precision, while double has 64
+ // bits. Therefore, 4 should be enough for ordinary use.
+ //
+ // See the following article for more details on ULP:
+ // http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
+ static const size_t kMaxUlps = 4;
+
+ // Constructs a FloatingPoint from a raw floating-point number.
+ //
+ // On an Intel CPU, passing a non-normalized NAN (Not a Number)
+ // around may change its bits, although the new value is guaranteed
+ // to be also a NAN. Therefore, don't expect this constructor to
+ // preserve the bits in x when x is a NAN.
+ explicit FloatingPoint(const RawType& x) { u_.value_ = x; }
+
+ // Static methods
+
+ // Reinterprets a bit pattern as a floating-point number.
+ //
+ // This function is needed to test the AlmostEquals() method.
+ static RawType ReinterpretBits(const Bits bits) {
+ FloatingPoint fp(0);
+ fp.u_.bits_ = bits;
+ return fp.u_.value_;
+ }
+
+ // Returns the floating-point number that represent positive infinity.
+ static RawType Infinity() {
+ return ReinterpretBits(kExponentBitMask);
+ }
+
+ // Returns the maximum representable finite floating-point number.
+ static RawType Max();
+
+ // Non-static methods
+
+ // Returns the bits that represents this number.
+ const Bits &bits() const { return u_.bits_; }
+
+ // Returns the exponent bits of this number.
+ Bits exponent_bits() const { return kExponentBitMask & u_.bits_; }
+
+ // Returns the fraction bits of this number.
+ Bits fraction_bits() const { return kFractionBitMask & u_.bits_; }
+
+ // Returns the sign bit of this number.
+ Bits sign_bit() const { return kSignBitMask & u_.bits_; }
+
+ // Returns true iff this is NAN (not a number).
+ bool is_nan() const {
+ // It's a NAN if the exponent bits are all ones and the fraction
+ // bits are not entirely zeros.
+ return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0);
+ }
+
+ // Returns true iff this number is at most kMaxUlps ULP's away from
+ // rhs. In particular, this function:
+ //
+ // - returns false if either number is (or both are) NAN.
+ // - treats really large numbers as almost equal to infinity.
+ // - thinks +0.0 and -0.0 are 0 DLP's apart.
+ bool AlmostEquals(const FloatingPoint& rhs) const {
+ // The IEEE standard says that any comparison operation involving
+ // a NAN must return false.
+ if (is_nan() || rhs.is_nan()) return false;
+
+ return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_)
+ <= kMaxUlps;
+ }
+
+ private:
+ // The data type used to store the actual floating-point number.
+ union FloatingPointUnion {
+ RawType value_; // The raw floating-point number.
+ Bits bits_; // The bits that represent the number.
+ };
+
+ // Converts an integer from the sign-and-magnitude representation to
+ // the biased representation. More precisely, let N be 2 to the
+ // power of (kBitCount - 1), an integer x is represented by the
+ // unsigned number x + N.
+ //
+ // For instance,
+ //
+ // -N + 1 (the most negative number representable using
+ // sign-and-magnitude) is represented by 1;
+ // 0 is represented by N; and
+ // N - 1 (the biggest number representable using
+ // sign-and-magnitude) is represented by 2N - 1.
+ //
+ // Read http://en.wikipedia.org/wiki/Signed_number_representations
+ // for more details on signed number representations.
+ static Bits SignAndMagnitudeToBiased(const Bits &sam) {
+ if (kSignBitMask & sam) {
+ // sam represents a negative number.
+ return ~sam + 1;
+ } else {
+ // sam represents a positive number.
+ return kSignBitMask | sam;
+ }
+ }
+
+ // Given two numbers in the sign-and-magnitude representation,
+ // returns the distance between them as an unsigned number.
+ static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1,
+ const Bits &sam2) {
+ const Bits biased1 = SignAndMagnitudeToBiased(sam1);
+ const Bits biased2 = SignAndMagnitudeToBiased(sam2);
+ return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1);
+ }
+
+ FloatingPointUnion u_;
+};
+
+// We cannot use std::numeric_limits<T>::max() as it clashes with the max()
+// macro defined by <windows.h>.
+template <>
+inline float FloatingPoint<float>::Max() { return FLT_MAX; }
+template <>
+inline double FloatingPoint<double>::Max() { return DBL_MAX; }
+
+// Typedefs the instances of the FloatingPoint template class that we
+// care to use.
+typedef FloatingPoint<float> Float;
+typedef FloatingPoint<double> Double;
+
+// In order to catch the mistake of putting tests that use different
+// test fixture classes in the same test case, we need to assign
+// unique IDs to fixture classes and compare them. The TypeId type is
+// used to hold such IDs. The user should treat TypeId as an opaque
+// type: the only operation allowed on TypeId values is to compare
+// them for equality using the == operator.
+typedef const void* TypeId;
+
+template <typename T>
+class TypeIdHelper {
+ public:
+ // dummy_ must not have a const type. Otherwise an overly eager
+ // compiler (e.g. MSVC 7.1 & 8.0) may try to merge
+ // TypeIdHelper<T>::dummy_ for different Ts as an "optimization".
+ static bool dummy_;
+};
+
+template <typename T>
+bool TypeIdHelper<T>::dummy_ = false;
+
+// GetTypeId<T>() returns the ID of type T. Different values will be
+// returned for different types. Calling the function twice with the
+// same type argument is guaranteed to return the same ID.
+template <typename T>
+TypeId GetTypeId() {
+ // The compiler is required to allocate a different
+ // TypeIdHelper<T>::dummy_ variable for each T used to instantiate
+ // the template. Therefore, the address of dummy_ is guaranteed to
+ // be unique.
+ return &(TypeIdHelper<T>::dummy_);
+}
+
+// Returns the type ID of ::testing::Test. Always call this instead
+// of GetTypeId< ::testing::Test>() to get the type ID of
+// ::testing::Test, as the latter may give the wrong result due to a
+// suspected linker bug when compiling Google Test as a Mac OS X
+// framework.
+GTEST_API_ TypeId GetTestTypeId();
+
+// Defines the abstract factory interface that creates instances
+// of a Test object.
+class TestFactoryBase {
+ public:
+ virtual ~TestFactoryBase() {}
+
+ // Creates a test instance to run. The instance is both created and destroyed
+ // within TestInfoImpl::Run()
+ virtual Test* CreateTest() = 0;
+
+ protected:
+ TestFactoryBase() {}
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase);
+};
+
+// This class provides implementation of TeastFactoryBase interface.
+// It is used in TEST and TEST_F macros.
+template <class TestClass>
+class TestFactoryImpl : public TestFactoryBase {
+ public:
+ virtual Test* CreateTest() { return new TestClass; }
+};
+
+#if GTEST_OS_WINDOWS
+
+// Predicate-formatters for implementing the HRESULT checking macros
+// {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}
+// We pass a long instead of HRESULT to avoid causing an
+// include dependency for the HRESULT type.
+GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr,
+ long hr); // NOLINT
+GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr,
+ long hr); // NOLINT
+
+#endif // GTEST_OS_WINDOWS
+
+// Types of SetUpTestCase() and TearDownTestCase() functions.
+typedef void (*SetUpTestCaseFunc)();
+typedef void (*TearDownTestCaseFunc)();
+
+// Creates a new TestInfo object and registers it with Google Test;
+// returns the created object.
+//
+// Arguments:
+//
+// test_case_name: name of the test case
+// name: name of the test
+// type_param the name of the test's type parameter, or NULL if
+// this is not a typed or a type-parameterized test.
+// value_param text representation of the test's value parameter,
+// or NULL if this is not a type-parameterized test.
+// fixture_class_id: ID of the test fixture class
+// set_up_tc: pointer to the function that sets up the test case
+// tear_down_tc: pointer to the function that tears down the test case
+// factory: pointer to the factory that creates a test object.
+// The newly created TestInfo instance will assume
+// ownership of the factory object.
+GTEST_API_ TestInfo* MakeAndRegisterTestInfo(
+ const char* test_case_name,
+ const char* name,
+ const char* type_param,
+ const char* value_param,
+ TypeId fixture_class_id,
+ SetUpTestCaseFunc set_up_tc,
+ TearDownTestCaseFunc tear_down_tc,
+ TestFactoryBase* factory);
+
+// If *pstr starts with the given prefix, modifies *pstr to be right
+// past the prefix and returns true; otherwise leaves *pstr unchanged
+// and returns false. None of pstr, *pstr, and prefix can be NULL.
+GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr);
+
+#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+// State of the definition of a type-parameterized test case.
+class GTEST_API_ TypedTestCasePState {
+ public:
+ TypedTestCasePState() : registered_(false) {}
+
+ // Adds the given test name to defined_test_names_ and return true
+ // if the test case hasn't been registered; otherwise aborts the
+ // program.
+ bool AddTestName(const char* file, int line, const char* case_name,
+ const char* test_name) {
+ if (registered_) {
+ fprintf(stderr, "%s Test %s must be defined before "
+ "REGISTER_TYPED_TEST_CASE_P(%s, ...).\n",
+ FormatFileLocation(file, line).c_str(), test_name, case_name);
+ fflush(stderr);
+ posix::Abort();
+ }
+ defined_test_names_.insert(test_name);
+ return true;
+ }
+
+ // Verifies that registered_tests match the test names in
+ // defined_test_names_; returns registered_tests if successful, or
+ // aborts the program otherwise.
+ const char* VerifyRegisteredTestNames(
+ const char* file, int line, const char* registered_tests);
+
+ private:
+ bool registered_;
+ ::std::set<const char*> defined_test_names_;
+};
+
+// Skips to the first non-space char after the first comma in 'str';
+// returns NULL if no comma is found in 'str'.
+inline const char* SkipComma(const char* str) {
+ const char* comma = strchr(str, ',');
+ if (comma == NULL) {
+ return NULL;
+ }
+ while (IsSpace(*(++comma))) {}
+ return comma;
+}
+
+// Returns the prefix of 'str' before the first comma in it; returns
+// the entire string if it contains no comma.
+inline std::string GetPrefixUntilComma(const char* str) {
+ const char* comma = strchr(str, ',');
+ return comma == NULL ? str : std::string(str, comma);
+}
+
+// TypeParameterizedTest<Fixture, TestSel, Types>::Register()
+// registers a list of type-parameterized tests with Google Test. The
+// return value is insignificant - we just need to return something
+// such that we can call this function in a namespace scope.
+//
+// Implementation note: The GTEST_TEMPLATE_ macro declares a template
+// template parameter. It's defined in gtest-type-util.h.
+template <GTEST_TEMPLATE_ Fixture, class TestSel, typename Types>
+class TypeParameterizedTest {
+ public:
+ // 'index' is the index of the test in the type list 'Types'
+ // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase,
+ // Types). Valid values for 'index' are [0, N - 1] where N is the
+ // length of Types.
+ static bool Register(const char* prefix, const char* case_name,
+ const char* test_names, int index) {
+ typedef typename Types::Head Type;
+ typedef Fixture<Type> FixtureClass;
+ typedef typename GTEST_BIND_(TestSel, Type) TestClass;
+
+ // First, registers the first type-parameterized test in the type
+ // list.
+ MakeAndRegisterTestInfo(
+ (std::string(prefix) + (prefix[0] == '\0' ? "" : "/") + case_name + "/"
+ + StreamableToString(index)).c_str(),
+ GetPrefixUntilComma(test_names).c_str(),
+ GetTypeName<Type>().c_str(),
+ NULL, // No value parameter.
+ GetTypeId<FixtureClass>(),
+ TestClass::SetUpTestCase,
+ TestClass::TearDownTestCase,
+ new TestFactoryImpl<TestClass>);
+
+ // Next, recurses (at compile time) with the tail of the type list.
+ return TypeParameterizedTest<Fixture, TestSel, typename Types::Tail>
+ ::Register(prefix, case_name, test_names, index + 1);
+ }
+};
+
+// The base case for the compile time recursion.
+template <GTEST_TEMPLATE_ Fixture, class TestSel>
+class TypeParameterizedTest<Fixture, TestSel, Types0> {
+ public:
+ static bool Register(const char* /*prefix*/, const char* /*case_name*/,
+ const char* /*test_names*/, int /*index*/) {
+ return true;
+ }
+};
+
+// TypeParameterizedTestCase<Fixture, Tests, Types>::Register()
+// registers *all combinations* of 'Tests' and 'Types' with Google
+// Test. The return value is insignificant - we just need to return
+// something such that we can call this function in a namespace scope.
+template <GTEST_TEMPLATE_ Fixture, typename Tests, typename Types>
+class TypeParameterizedTestCase {
+ public:
+ static bool Register(const char* prefix, const char* case_name,
+ const char* test_names) {
+ typedef typename Tests::Head Head;
+
+ // First, register the first test in 'Test' for each type in 'Types'.
+ TypeParameterizedTest<Fixture, Head, Types>::Register(
+ prefix, case_name, test_names, 0);
+
+ // Next, recurses (at compile time) with the tail of the test list.
+ return TypeParameterizedTestCase<Fixture, typename Tests::Tail, Types>
+ ::Register(prefix, case_name, SkipComma(test_names));
+ }
+};
+
+// The base case for the compile time recursion.
+template <GTEST_TEMPLATE_ Fixture, typename Types>
+class TypeParameterizedTestCase<Fixture, Templates0, Types> {
+ public:
+ static bool Register(const char* /*prefix*/, const char* /*case_name*/,
+ const char* /*test_names*/) {
+ return true;
+ }
+};
+
+#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+// Returns the current OS stack trace as an std::string.
+//
+// The maximum number of stack frames to be included is specified by
+// the gtest_stack_trace_depth flag. The skip_count parameter
+// specifies the number of top frames to be skipped, which doesn't
+// count against the number of frames to be included.
+//
+// For example, if Foo() calls Bar(), which in turn calls
+// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
+// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
+GTEST_API_ std::string GetCurrentOsStackTraceExceptTop(
+ UnitTest* unit_test, int skip_count);
+
+// Helpers for suppressing warnings on unreachable code or constant
+// condition.
+
+// Always returns true.
+GTEST_API_ bool AlwaysTrue();
+
+// Always returns false.
+inline bool AlwaysFalse() { return !AlwaysTrue(); }
+
+// Helper for suppressing false warning from Clang on a const char*
+// variable declared in a conditional expression always being NULL in
+// the else branch.
+struct GTEST_API_ ConstCharPtr {
+ ConstCharPtr(const char* str) : value(str) {}
+ operator bool() const { return true; }
+ const char* value;
+};
+
+// A simple Linear Congruential Generator for generating random
+// numbers with a uniform distribution. Unlike rand() and srand(), it
+// doesn't use global state (and therefore can't interfere with user
+// code). Unlike rand_r(), it's portable. An LCG isn't very random,
+// but it's good enough for our purposes.
+class GTEST_API_ Random {
+ public:
+ static const UInt32 kMaxRange = 1u << 31;
+
+ explicit Random(UInt32 seed) : state_(seed) {}
+
+ void Reseed(UInt32 seed) { state_ = seed; }
+
+ // Generates a random number from [0, range). Crashes if 'range' is
+ // 0 or greater than kMaxRange.
+ UInt32 Generate(UInt32 range);
+
+ private:
+ UInt32 state_;
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Random);
+};
+
+// Defining a variable of type CompileAssertTypesEqual<T1, T2> will cause a
+// compiler error iff T1 and T2 are different types.
+template <typename T1, typename T2>
+struct CompileAssertTypesEqual;
+
+template <typename T>
+struct CompileAssertTypesEqual<T, T> {
+};
+
+// Removes the reference from a type if it is a reference type,
+// otherwise leaves it unchanged. This is the same as
+// tr1::remove_reference, which is not widely available yet.
+template <typename T>
+struct RemoveReference { typedef T type; }; // NOLINT
+template <typename T>
+struct RemoveReference<T&> { typedef T type; }; // NOLINT
+
+// A handy wrapper around RemoveReference that works when the argument
+// T depends on template parameters.
+#define GTEST_REMOVE_REFERENCE_(T) \
+ typename ::testing::internal::RemoveReference<T>::type
+
+// Removes const from a type if it is a const type, otherwise leaves
+// it unchanged. This is the same as tr1::remove_const, which is not
+// widely available yet.
+template <typename T>
+struct RemoveConst { typedef T type; }; // NOLINT
+template <typename T>
+struct RemoveConst<const T> { typedef T type; }; // NOLINT
+
+// MSVC 8.0, Sun C++, and IBM XL C++ have a bug which causes the above
+// definition to fail to remove the const in 'const int[3]' and 'const
+// char[3][4]'. The following specialization works around the bug.
+template <typename T, size_t N>
+struct RemoveConst<const T[N]> {
+ typedef typename RemoveConst<T>::type type[N];
+};
+
+#if defined(_MSC_VER) && _MSC_VER < 1400
+// This is the only specialization that allows VC++ 7.1 to remove const in
+// 'const int[3] and 'const int[3][4]'. However, it causes trouble with GCC
+// and thus needs to be conditionally compiled.
+template <typename T, size_t N>
+struct RemoveConst<T[N]> {
+ typedef typename RemoveConst<T>::type type[N];
+};
+#endif
+
+// A handy wrapper around RemoveConst that works when the argument
+// T depends on template parameters.
+#define GTEST_REMOVE_CONST_(T) \
+ typename ::testing::internal::RemoveConst<T>::type
+
+// Turns const U&, U&, const U, and U all into U.
+#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \
+ GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T))
+
+// Adds reference to a type if it is not a reference type,
+// otherwise leaves it unchanged. This is the same as
+// tr1::add_reference, which is not widely available yet.
+template <typename T>
+struct AddReference { typedef T& type; }; // NOLINT
+template <typename T>
+struct AddReference<T&> { typedef T& type; }; // NOLINT
+
+// A handy wrapper around AddReference that works when the argument T
+// depends on template parameters.
+#define GTEST_ADD_REFERENCE_(T) \
+ typename ::testing::internal::AddReference<T>::type
+
+// Adds a reference to const on top of T as necessary. For example,
+// it transforms
+//
+// char ==> const char&
+// const char ==> const char&
+// char& ==> const char&
+// const char& ==> const char&
+//
+// The argument T must depend on some template parameters.
+#define GTEST_REFERENCE_TO_CONST_(T) \
+ GTEST_ADD_REFERENCE_(const GTEST_REMOVE_REFERENCE_(T))
+
+// ImplicitlyConvertible<From, To>::value is a compile-time bool
+// constant that's true iff type From can be implicitly converted to
+// type To.
+template <typename From, typename To>
+class ImplicitlyConvertible {
+ private:
+ // We need the following helper functions only for their types.
+ // They have no implementations.
+
+ // MakeFrom() is an expression whose type is From. We cannot simply
+ // use From(), as the type From may not have a public default
+ // constructor.
+ static From MakeFrom();
+
+ // These two functions are overloaded. Given an expression
+ // Helper(x), the compiler will pick the first version if x can be
+ // implicitly converted to type To; otherwise it will pick the
+ // second version.
+ //
+ // The first version returns a value of size 1, and the second
+ // version returns a value of size 2. Therefore, by checking the
+ // size of Helper(x), which can be done at compile time, we can tell
+ // which version of Helper() is used, and hence whether x can be
+ // implicitly converted to type To.
+ static char Helper(To);
+ static char (&Helper(...))[2]; // NOLINT
+
+ // We have to put the 'public' section after the 'private' section,
+ // or MSVC refuses to compile the code.
+ public:
+ // MSVC warns about implicitly converting from double to int for
+ // possible loss of data, so we need to temporarily disable the
+ // warning.
+#ifdef _MSC_VER
+# pragma warning(push) // Saves the current warning state.
+# pragma warning(disable:4244) // Temporarily disables warning 4244.
+
+ static const bool value =
+ sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1;
+# pragma warning(pop) // Restores the warning state.
+#elif defined(__BORLANDC__)
+ // C++Builder cannot use member overload resolution during template
+ // instantiation. The simplest workaround is to use its C++0x type traits
+ // functions (C++Builder 2009 and above only).
+ static const bool value = __is_convertible(From, To);
+#else
+ static const bool value =
+ sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1;
+#endif // _MSV_VER
+};
+template <typename From, typename To>
+const bool ImplicitlyConvertible<From, To>::value;
+
+// IsAProtocolMessage<T>::value is a compile-time bool constant that's
+// true iff T is type ProtocolMessage, proto2::Message, or a subclass
+// of those.
+template <typename T>
+struct IsAProtocolMessage
+ : public bool_constant<
+ ImplicitlyConvertible<const T*, const ::ProtocolMessage*>::value ||
+ ImplicitlyConvertible<const T*, const ::proto2::Message*>::value> {
+};
+
+// When the compiler sees expression IsContainerTest<C>(0), if C is an
+// STL-style container class, the first overload of IsContainerTest
+// will be viable (since both C::iterator* and C::const_iterator* are
+// valid types and NULL can be implicitly converted to them). It will
+// be picked over the second overload as 'int' is a perfect match for
+// the type of argument 0. If C::iterator or C::const_iterator is not
+// a valid type, the first overload is not viable, and the second
+// overload will be picked. Therefore, we can determine whether C is
+// a container class by checking the type of IsContainerTest<C>(0).
+// The value of the expression is insignificant.
+//
+// Note that we look for both C::iterator and C::const_iterator. The
+// reason is that C++ injects the name of a class as a member of the
+// class itself (e.g. you can refer to class iterator as either
+// 'iterator' or 'iterator::iterator'). If we look for C::iterator
+// only, for example, we would mistakenly think that a class named
+// iterator is an STL container.
+//
+// Also note that the simpler approach of overloading
+// IsContainerTest(typename C::const_iterator*) and
+// IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++.
+typedef int IsContainer;
+template <class C>
+IsContainer IsContainerTest(int /* dummy */,
+ typename C::iterator* /* it */ = NULL,
+ typename C::const_iterator* /* const_it */ = NULL) {
+ return 0;
+}
+
+typedef char IsNotContainer;
+template <class C>
+IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; }
+
+// EnableIf<condition>::type is void when 'Cond' is true, and
+// undefined when 'Cond' is false. To use SFINAE to make a function
+// overload only apply when a particular expression is true, add
+// "typename EnableIf<expression>::type* = 0" as the last parameter.
+template<bool> struct EnableIf;
+template<> struct EnableIf<true> { typedef void type; }; // NOLINT
+
+// Utilities for native arrays.
+
+// ArrayEq() compares two k-dimensional native arrays using the
+// elements' operator==, where k can be any integer >= 0. When k is
+// 0, ArrayEq() degenerates into comparing a single pair of values.
+
+template <typename T, typename U>
+bool ArrayEq(const T* lhs, size_t size, const U* rhs);
+
+// This generic version is used when k is 0.
+template <typename T, typename U>
+inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; }
+
+// This overload is used when k >= 1.
+template <typename T, typename U, size_t N>
+inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) {
+ return internal::ArrayEq(lhs, N, rhs);
+}
+
+// This helper reduces code bloat. If we instead put its logic inside
+// the previous ArrayEq() function, arrays with different sizes would
+// lead to different copies of the template code.
+template <typename T, typename U>
+bool ArrayEq(const T* lhs, size_t size, const U* rhs) {
+ for (size_t i = 0; i != size; i++) {
+ if (!internal::ArrayEq(lhs[i], rhs[i]))
+ return false;
+ }
+ return true;
+}
+
+// Finds the first element in the iterator range [begin, end) that
+// equals elem. Element may be a native array type itself.
+template <typename Iter, typename Element>
+Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) {
+ for (Iter it = begin; it != end; ++it) {
+ if (internal::ArrayEq(*it, elem))
+ return it;
+ }
+ return end;
+}
+
+// CopyArray() copies a k-dimensional native array using the elements'
+// operator=, where k can be any integer >= 0. When k is 0,
+// CopyArray() degenerates into copying a single value.
+
+template <typename T, typename U>
+void CopyArray(const T* from, size_t size, U* to);
+
+// This generic version is used when k is 0.
+template <typename T, typename U>
+inline void CopyArray(const T& from, U* to) { *to = from; }
+
+// This overload is used when k >= 1.
+template <typename T, typename U, size_t N>
+inline void CopyArray(const T(&from)[N], U(*to)[N]) {
+ internal::CopyArray(from, N, *to);
+}
+
+// This helper reduces code bloat. If we instead put its logic inside
+// the previous CopyArray() function, arrays with different sizes
+// would lead to different copies of the template code.
+template <typename T, typename U>
+void CopyArray(const T* from, size_t size, U* to) {
+ for (size_t i = 0; i != size; i++) {
+ internal::CopyArray(from[i], to + i);
+ }
+}
+
+// The relation between an NativeArray object (see below) and the
+// native array it represents.
+enum RelationToSource {
+ kReference, // The NativeArray references the native array.
+ kCopy // The NativeArray makes a copy of the native array and
+ // owns the copy.
+};
+
+// Adapts a native array to a read-only STL-style container. Instead
+// of the complete STL container concept, this adaptor only implements
+// members useful for Google Mock's container matchers. New members
+// should be added as needed. To simplify the implementation, we only
+// support Element being a raw type (i.e. having no top-level const or
+// reference modifier). It's the client's responsibility to satisfy
+// this requirement. Element can be an array type itself (hence
+// multi-dimensional arrays are supported).
+template <typename Element>
+class NativeArray {
+ public:
+ // STL-style container typedefs.
+ typedef Element value_type;
+ typedef Element* iterator;
+ typedef const Element* const_iterator;
+
+ // Constructs from a native array.
+ NativeArray(const Element* array, size_t count, RelationToSource relation) {
+ Init(array, count, relation);
+ }
+
+ // Copy constructor.
+ NativeArray(const NativeArray& rhs) {
+ Init(rhs.array_, rhs.size_, rhs.relation_to_source_);
+ }
+
+ ~NativeArray() {
+ // Ensures that the user doesn't instantiate NativeArray with a
+ // const or reference type.
+ static_cast<void>(StaticAssertTypeEqHelper<Element,
+ GTEST_REMOVE_REFERENCE_AND_CONST_(Element)>());
+ if (relation_to_source_ == kCopy)
+ delete[] array_;
+ }
+
+ // STL-style container methods.
+ size_t size() const { return size_; }
+ const_iterator begin() const { return array_; }
+ const_iterator end() const { return array_ + size_; }
+ bool operator==(const NativeArray& rhs) const {
+ return size() == rhs.size() &&
+ ArrayEq(begin(), size(), rhs.begin());
+ }
+
+ private:
+ // Initializes this object; makes a copy of the input array if
+ // 'relation' is kCopy.
+ void Init(const Element* array, size_t a_size, RelationToSource relation) {
+ if (relation == kReference) {
+ array_ = array;
+ } else {
+ Element* const copy = new Element[a_size];
+ CopyArray(array, a_size, copy);
+ array_ = copy;
+ }
+ size_ = a_size;
+ relation_to_source_ = relation;
+ }
+
+ const Element* array_;
+ size_t size_;
+ RelationToSource relation_to_source_;
+
+ GTEST_DISALLOW_ASSIGN_(NativeArray);
+};
+
+} // namespace internal
+} // namespace testing
+
+#define GTEST_MESSAGE_AT_(file, line, message, result_type) \
+ ::testing::internal::AssertHelper(result_type, file, line, message) \
+ = ::testing::Message()
+
+#define GTEST_MESSAGE_(message, result_type) \
+ GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)
+
+#define GTEST_FATAL_FAILURE_(message) \
+ return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)
+
+#define GTEST_NONFATAL_FAILURE_(message) \
+ GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)
+
+#define GTEST_SUCCESS_(message) \
+ GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess)
+
+// Suppresses MSVC warnings 4072 (unreachable code) for the code following
+// statement if it returns or throws (or doesn't return or throw in some
+// situations).
+#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \
+ if (::testing::internal::AlwaysTrue()) { statement; }
+
+#define GTEST_TEST_THROW_(statement, expected_exception, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::ConstCharPtr gtest_msg = "") { \
+ bool gtest_caught_expected = false; \
+ try { \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ } \
+ catch (expected_exception const&) { \
+ gtest_caught_expected = true; \
+ } \
+ catch (...) { \
+ gtest_msg.value = \
+ "Expected: " #statement " throws an exception of type " \
+ #expected_exception ".\n Actual: it throws a different type."; \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
+ } \
+ if (!gtest_caught_expected) { \
+ gtest_msg.value = \
+ "Expected: " #statement " throws an exception of type " \
+ #expected_exception ".\n Actual: it throws nothing."; \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
+ } \
+ } else \
+ GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \
+ fail(gtest_msg.value)
+
+#define GTEST_TEST_NO_THROW_(statement, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::AlwaysTrue()) { \
+ try { \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ } \
+ catch (...) { \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
+ } \
+ } else \
+ GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \
+ fail("Expected: " #statement " doesn't throw an exception.\n" \
+ " Actual: it throws.")
+
+#define GTEST_TEST_ANY_THROW_(statement, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::AlwaysTrue()) { \
+ bool gtest_caught_any = false; \
+ try { \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ } \
+ catch (...) { \
+ gtest_caught_any = true; \
+ } \
+ if (!gtest_caught_any) { \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \
+ } \
+ } else \
+ GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \
+ fail("Expected: " #statement " throws an exception.\n" \
+ " Actual: it doesn't.")
+
+
+// Implements Boolean test assertions such as EXPECT_TRUE. expression can be
+// either a boolean expression or an AssertionResult. text is a textual
+// represenation of expression as it was passed into the EXPECT_TRUE.
+#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (const ::testing::AssertionResult gtest_ar_ = \
+ ::testing::AssertionResult(expression)) \
+ ; \
+ else \
+ fail(::testing::internal::GetBoolAssertionFailureMessage(\
+ gtest_ar_, text, #actual, #expected).c_str())
+
+#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::AlwaysTrue()) { \
+ ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \
+ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
+ if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \
+ goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \
+ } \
+ } else \
+ GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \
+ fail("Expected: " #statement " doesn't generate new fatal " \
+ "failures in the current thread.\n" \
+ " Actual: it does.")
+
+// Expands to the name of the class that implements the given test.
+#define GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
+ test_case_name##_##test_name##_Test
+
+// Helper macro for defining tests.
+#define GTEST_TEST_(test_case_name, test_name, parent_class, parent_id)\
+class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\
+ public:\
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\
+ private:\
+ virtual void TestBody();\
+ static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(\
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\
+};\
+\
+::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\
+ ::test_info_ =\
+ ::testing::internal::MakeAndRegisterTestInfo(\
+ #test_case_name, #test_name, NULL, NULL, \
+ (parent_id), \
+ parent_class::SetUpTestCase, \
+ parent_class::TearDownTestCase, \
+ new ::testing::internal::TestFactoryImpl<\
+ GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\
+void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
diff --git a/test/fmw/gtest/include/gtest/internal/gtest-linked_ptr.h b/test/fmw/gtest/include/gtest/internal/gtest-linked_ptr.h
new file mode 100644
index 0000000..b1362cd
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/internal/gtest-linked_ptr.h
@@ -0,0 +1,233 @@
+// Copyright 2003 Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: Dan Egnor (egnor@google.com)
+//
+// A "smart" pointer type with reference tracking. Every pointer to a
+// particular object is kept on a circular linked list. When the last pointer
+// to an object is destroyed or reassigned, the object is deleted.
+//
+// Used properly, this deletes the object when the last reference goes away.
+// There are several caveats:
+// - Like all reference counting schemes, cycles lead to leaks.
+// - Each smart pointer is actually two pointers (8 bytes instead of 4).
+// - Every time a pointer is assigned, the entire list of pointers to that
+// object is traversed. This class is therefore NOT SUITABLE when there
+// will often be more than two or three pointers to a particular object.
+// - References are only tracked as long as linked_ptr<> objects are copied.
+// If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS
+// will happen (double deletion).
+//
+// A good use of this class is storing object references in STL containers.
+// You can safely put linked_ptr<> in a vector<>.
+// Other uses may not be as good.
+//
+// Note: If you use an incomplete type with linked_ptr<>, the class
+// *containing* linked_ptr<> must have a constructor and destructor (even
+// if they do nothing!).
+//
+// Bill Gibbons suggested we use something like this.
+//
+// Thread Safety:
+// Unlike other linked_ptr implementations, in this implementation
+// a linked_ptr object is thread-safe in the sense that:
+// - it's safe to copy linked_ptr objects concurrently,
+// - it's safe to copy *from* a linked_ptr and read its underlying
+// raw pointer (e.g. via get()) concurrently, and
+// - it's safe to write to two linked_ptrs that point to the same
+// shared object concurrently.
+// TODO(wan@google.com): rename this to safe_linked_ptr to avoid
+// confusion with normal linked_ptr.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
+
+#include <stdlib.h>
+#include <assert.h>
+
+#include "gtest/internal/gtest-port.h"
+
+namespace testing {
+namespace internal {
+
+// Protects copying of all linked_ptr objects.
+GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_linked_ptr_mutex);
+
+// This is used internally by all instances of linked_ptr<>. It needs to be
+// a non-template class because different types of linked_ptr<> can refer to
+// the same object (linked_ptr<Superclass>(obj) vs linked_ptr<Subclass>(obj)).
+// So, it needs to be possible for different types of linked_ptr to participate
+// in the same circular linked list, so we need a single class type here.
+//
+// DO NOT USE THIS CLASS DIRECTLY YOURSELF. Use linked_ptr<T>.
+class linked_ptr_internal {
+ public:
+ // Create a new circle that includes only this instance.
+ void join_new() {
+ next_ = this;
+ }
+
+ // Many linked_ptr operations may change p.link_ for some linked_ptr
+ // variable p in the same circle as this object. Therefore we need
+ // to prevent two such operations from occurring concurrently.
+ //
+ // Note that different types of linked_ptr objects can coexist in a
+ // circle (e.g. linked_ptr<Base>, linked_ptr<Derived1>, and
+ // linked_ptr<Derived2>). Therefore we must use a single mutex to
+ // protect all linked_ptr objects. This can create serious
+ // contention in production code, but is acceptable in a testing
+ // framework.
+
+ // Join an existing circle.
+ void join(linked_ptr_internal const* ptr)
+ GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) {
+ MutexLock lock(&g_linked_ptr_mutex);
+
+ linked_ptr_internal const* p = ptr;
+ while (p->next_ != ptr) p = p->next_;
+ p->next_ = this;
+ next_ = ptr;
+ }
+
+ // Leave whatever circle we're part of. Returns true if we were the
+ // last member of the circle. Once this is done, you can join() another.
+ bool depart()
+ GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) {
+ MutexLock lock(&g_linked_ptr_mutex);
+
+ if (next_ == this) return true;
+ linked_ptr_internal const* p = next_;
+ while (p->next_ != this) p = p->next_;
+ p->next_ = next_;
+ return false;
+ }
+
+ private:
+ mutable linked_ptr_internal const* next_;
+};
+
+template <typename T>
+class linked_ptr {
+ public:
+ typedef T element_type;
+
+ // Take over ownership of a raw pointer. This should happen as soon as
+ // possible after the object is created.
+ explicit linked_ptr(T* ptr = NULL) { capture(ptr); }
+ ~linked_ptr() { depart(); }
+
+ // Copy an existing linked_ptr<>, adding ourselves to the list of references.
+ template <typename U> linked_ptr(linked_ptr<U> const& ptr) { copy(&ptr); }
+ linked_ptr(linked_ptr const& ptr) { // NOLINT
+ assert(&ptr != this);
+ copy(&ptr);
+ }
+
+ // Assignment releases the old value and acquires the new.
+ template <typename U> linked_ptr& operator=(linked_ptr<U> const& ptr) {
+ depart();
+ copy(&ptr);
+ return *this;
+ }
+
+ linked_ptr& operator=(linked_ptr const& ptr) {
+ if (&ptr != this) {
+ depart();
+ copy(&ptr);
+ }
+ return *this;
+ }
+
+ // Smart pointer members.
+ void reset(T* ptr = NULL) {
+ depart();
+ capture(ptr);
+ }
+ T* get() const { return value_; }
+ T* operator->() const { return value_; }
+ T& operator*() const { return *value_; }
+
+ bool operator==(T* p) const { return value_ == p; }
+ bool operator!=(T* p) const { return value_ != p; }
+ template <typename U>
+ bool operator==(linked_ptr<U> const& ptr) const {
+ return value_ == ptr.get();
+ }
+ template <typename U>
+ bool operator!=(linked_ptr<U> const& ptr) const {
+ return value_ != ptr.get();
+ }
+
+ private:
+ template <typename U>
+ friend class linked_ptr;
+
+ T* value_;
+ linked_ptr_internal link_;
+
+ void depart() {
+ if (link_.depart()) delete value_;
+ }
+
+ void capture(T* ptr) {
+ value_ = ptr;
+ link_.join_new();
+ }
+
+ template <typename U> void copy(linked_ptr<U> const* ptr) {
+ value_ = ptr->get();
+ if (value_)
+ link_.join(&ptr->link_);
+ else
+ link_.join_new();
+ }
+};
+
+template<typename T> inline
+bool operator==(T* ptr, const linked_ptr<T>& x) {
+ return ptr == x.get();
+}
+
+template<typename T> inline
+bool operator!=(T* ptr, const linked_ptr<T>& x) {
+ return ptr != x.get();
+}
+
+// A function to convert T* into linked_ptr<T>
+// Doing e.g. make_linked_ptr(new FooBarBaz<type>(arg)) is a shorter notation
+// for linked_ptr<FooBarBaz<type> >(new FooBarBaz<type>(arg))
+template <typename T>
+linked_ptr<T> make_linked_ptr(T* ptr) {
+ return linked_ptr<T>(ptr);
+}
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_
diff --git a/test/fmw/gtest/include/gtest/internal/gtest-param-util-generated.h b/test/fmw/gtest/include/gtest/internal/gtest-param-util-generated.h
new file mode 100644
index 0000000..e805485
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/internal/gtest-param-util-generated.h
@@ -0,0 +1,5143 @@
+// This file was GENERATED by command:
+// pump.py gtest-param-util-generated.h.pump
+// DO NOT EDIT BY HAND!!!
+
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+
+// Type and function utilities for implementing parameterized tests.
+// This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
+//
+// Currently Google Test supports at most 50 arguments in Values,
+// and at most 10 arguments in Combine. Please contact
+// googletestframework@googlegroups.com if you need more.
+// Please note that the number of arguments to Combine is limited
+// by the maximum arity of the implementation of tr1::tuple which is
+// currently set at 10.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
+
+// scripts/fuse_gtest.py depends on gtest's own header being #included
+// *unconditionally*. Therefore these #includes cannot be moved
+// inside #if GTEST_HAS_PARAM_TEST.
+#include "gtest/internal/gtest-param-util.h"
+#include "gtest/internal/gtest-port.h"
+
+#if GTEST_HAS_PARAM_TEST
+
+namespace testing {
+
+// Forward declarations of ValuesIn(), which is implemented in
+// include/gtest/gtest-param-test.h.
+template <typename ForwardIterator>
+internal::ParamGenerator<
+ typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
+ValuesIn(ForwardIterator begin, ForwardIterator end);
+
+template <typename T, size_t N>
+internal::ParamGenerator<T> ValuesIn(const T (&array)[N]);
+
+template <class Container>
+internal::ParamGenerator<typename Container::value_type> ValuesIn(
+ const Container& container);
+
+namespace internal {
+
+// Used in the Values() function to provide polymorphic capabilities.
+template <typename T1>
+class ValueArray1 {
+ public:
+ explicit ValueArray1(T1 v1) : v1_(v1) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const { return ValuesIn(&v1_, &v1_ + 1); }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray1& other);
+
+ const T1 v1_;
+};
+
+template <typename T1, typename T2>
+class ValueArray2 {
+ public:
+ ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray2& other);
+
+ const T1 v1_;
+ const T2 v2_;
+};
+
+template <typename T1, typename T2, typename T3>
+class ValueArray3 {
+ public:
+ ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray3& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4>
+class ValueArray4 {
+ public:
+ ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3),
+ v4_(v4) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray4& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+class ValueArray5 {
+ public:
+ ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3),
+ v4_(v4), v5_(v5) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray5& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6>
+class ValueArray6 {
+ public:
+ ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2),
+ v3_(v3), v4_(v4), v5_(v5), v6_(v6) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray6& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7>
+class ValueArray7 {
+ public:
+ ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1),
+ v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray7& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8>
+class ValueArray8 {
+ public:
+ ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7,
+ T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray8& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9>
+class ValueArray9 {
+ public:
+ ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8,
+ T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray9& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10>
+class ValueArray10 {
+ public:
+ ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray10& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11>
+class ValueArray11 {
+ public:
+ ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
+ v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray11& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12>
+class ValueArray12 {
+ public:
+ ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
+ v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray12& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13>
+class ValueArray13 {
+ public:
+ ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
+ v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
+ v12_(v12), v13_(v13) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray13& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14>
+class ValueArray14 {
+ public:
+ ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3),
+ v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray14& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15>
+class ValueArray15 {
+ public:
+ ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2),
+ v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray15& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16>
+class ValueArray16 {
+ public:
+ ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1),
+ v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
+ v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
+ v16_(v16) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray16& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17>
+class ValueArray17 {
+ public:
+ ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16,
+ T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray17& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18>
+class ValueArray18 {
+ public:
+ ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray18& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19>
+class ValueArray19 {
+ public:
+ ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
+ v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
+ v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray19& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20>
+class ValueArray20 {
+ public:
+ ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
+ v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
+ v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
+ v19_(v19), v20_(v20) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray20& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21>
+class ValueArray21 {
+ public:
+ ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
+ v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
+ v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
+ v18_(v18), v19_(v19), v20_(v20), v21_(v21) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray21& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22>
+class ValueArray22 {
+ public:
+ ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3),
+ v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray22& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23>
+class ValueArray23 {
+ public:
+ ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2),
+ v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+ v23_(v23) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray23& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24>
+class ValueArray24 {
+ public:
+ ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1),
+ v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
+ v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
+ v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
+ v22_(v22), v23_(v23), v24_(v24) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray24& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25>
+class ValueArray25 {
+ public:
+ ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24,
+ T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray25& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26>
+class ValueArray26 {
+ public:
+ ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray26& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27>
+class ValueArray27 {
+ public:
+ ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
+ v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
+ v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
+ v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
+ v26_(v26), v27_(v27) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray27& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28>
+class ValueArray28 {
+ public:
+ ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
+ v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
+ v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
+ v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
+ v25_(v25), v26_(v26), v27_(v27), v28_(v28) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray28& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29>
+class ValueArray29 {
+ public:
+ ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
+ v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
+ v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
+ v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
+ v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray29& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30>
+class ValueArray30 {
+ public:
+ ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3),
+ v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+ v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+ v29_(v29), v30_(v30) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray30& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31>
+class ValueArray31 {
+ public:
+ ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2),
+ v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+ v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+ v29_(v29), v30_(v30), v31_(v31) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray31& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32>
+class ValueArray32 {
+ public:
+ ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1),
+ v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
+ v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
+ v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
+ v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
+ v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray32& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33>
+class ValueArray33 {
+ public:
+ ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32,
+ T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+ v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+ v33_(v33) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray33& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34>
+class ValueArray34 {
+ public:
+ ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+ v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+ v33_(v33), v34_(v34) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray34& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35>
+class ValueArray35 {
+ public:
+ ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
+ v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
+ v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
+ v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
+ v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
+ v32_(v32), v33_(v33), v34_(v34), v35_(v35) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray35& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36>
+class ValueArray36 {
+ public:
+ ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
+ v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
+ v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
+ v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
+ v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
+ v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray36& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37>
+class ValueArray37 {
+ public:
+ ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
+ v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
+ v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
+ v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
+ v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
+ v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
+ v36_(v36), v37_(v37) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray37& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38>
+class ValueArray38 {
+ public:
+ ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3),
+ v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+ v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+ v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
+ v35_(v35), v36_(v36), v37_(v37), v38_(v38) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray38& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39>
+class ValueArray39 {
+ public:
+ ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2),
+ v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+ v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+ v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
+ v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray39& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40>
+class ValueArray40 {
+ public:
+ ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1),
+ v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
+ v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
+ v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
+ v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
+ v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
+ v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
+ v40_(v40) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray40& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41>
+class ValueArray41 {
+ public:
+ ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40,
+ T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+ v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+ v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
+ v39_(v39), v40_(v40), v41_(v41) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray41& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42>
+class ValueArray42 {
+ public:
+ ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+ v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+ v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
+ v39_(v39), v40_(v40), v41_(v41), v42_(v42) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray42& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43>
+class ValueArray43 {
+ public:
+ ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6),
+ v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13),
+ v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19),
+ v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25),
+ v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31),
+ v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37),
+ v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray43& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44>
+class ValueArray44 {
+ public:
+ ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5),
+ v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12),
+ v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18),
+ v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24),
+ v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30),
+ v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36),
+ v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42),
+ v43_(v43), v44_(v44) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray44& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+ const T44 v44_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45>
+class ValueArray45 {
+ public:
+ ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4),
+ v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11),
+ v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17),
+ v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23),
+ v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29),
+ v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35),
+ v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41),
+ v42_(v42), v43_(v43), v44_(v44), v45_(v45) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+ static_cast<T>(v45_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray45& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+ const T44 v44_;
+ const T45 v45_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46>
+class ValueArray46 {
+ public:
+ ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3),
+ v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+ v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+ v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
+ v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
+ v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+ static_cast<T>(v45_), static_cast<T>(v46_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray46& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+ const T44 v44_;
+ const T45 v45_;
+ const T46 v46_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47>
+class ValueArray47 {
+ public:
+ ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2),
+ v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10),
+ v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16),
+ v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22),
+ v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28),
+ v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34),
+ v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40),
+ v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46),
+ v47_(v47) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+ static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray47& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+ const T44 v44_;
+ const T45 v45_;
+ const T46 v46_;
+ const T47 v47_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48>
+class ValueArray48 {
+ public:
+ ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1),
+ v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9),
+ v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15),
+ v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21),
+ v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27),
+ v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33),
+ v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39),
+ v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45),
+ v46_(v46), v47_(v47), v48_(v48) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+ static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),
+ static_cast<T>(v48_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray48& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+ const T44 v44_;
+ const T45 v45_;
+ const T46 v46_;
+ const T47 v47_;
+ const T48 v48_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49>
+class ValueArray49 {
+ public:
+ ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48,
+ T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+ v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+ v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
+ v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
+ v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+ static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),
+ static_cast<T>(v48_), static_cast<T>(v49_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray49& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+ const T44 v44_;
+ const T45 v45_;
+ const T46 v46_;
+ const T47 v47_;
+ const T48 v48_;
+ const T49 v49_;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49, typename T50>
+class ValueArray50 {
+ public:
+ ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9,
+ T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17,
+ T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25,
+ T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33,
+ T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41,
+ T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49,
+ T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7),
+ v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14),
+ v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20),
+ v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26),
+ v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32),
+ v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38),
+ v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44),
+ v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {static_cast<T>(v1_), static_cast<T>(v2_),
+ static_cast<T>(v3_), static_cast<T>(v4_), static_cast<T>(v5_),
+ static_cast<T>(v6_), static_cast<T>(v7_), static_cast<T>(v8_),
+ static_cast<T>(v9_), static_cast<T>(v10_), static_cast<T>(v11_),
+ static_cast<T>(v12_), static_cast<T>(v13_), static_cast<T>(v14_),
+ static_cast<T>(v15_), static_cast<T>(v16_), static_cast<T>(v17_),
+ static_cast<T>(v18_), static_cast<T>(v19_), static_cast<T>(v20_),
+ static_cast<T>(v21_), static_cast<T>(v22_), static_cast<T>(v23_),
+ static_cast<T>(v24_), static_cast<T>(v25_), static_cast<T>(v26_),
+ static_cast<T>(v27_), static_cast<T>(v28_), static_cast<T>(v29_),
+ static_cast<T>(v30_), static_cast<T>(v31_), static_cast<T>(v32_),
+ static_cast<T>(v33_), static_cast<T>(v34_), static_cast<T>(v35_),
+ static_cast<T>(v36_), static_cast<T>(v37_), static_cast<T>(v38_),
+ static_cast<T>(v39_), static_cast<T>(v40_), static_cast<T>(v41_),
+ static_cast<T>(v42_), static_cast<T>(v43_), static_cast<T>(v44_),
+ static_cast<T>(v45_), static_cast<T>(v46_), static_cast<T>(v47_),
+ static_cast<T>(v48_), static_cast<T>(v49_), static_cast<T>(v50_)};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray50& other);
+
+ const T1 v1_;
+ const T2 v2_;
+ const T3 v3_;
+ const T4 v4_;
+ const T5 v5_;
+ const T6 v6_;
+ const T7 v7_;
+ const T8 v8_;
+ const T9 v9_;
+ const T10 v10_;
+ const T11 v11_;
+ const T12 v12_;
+ const T13 v13_;
+ const T14 v14_;
+ const T15 v15_;
+ const T16 v16_;
+ const T17 v17_;
+ const T18 v18_;
+ const T19 v19_;
+ const T20 v20_;
+ const T21 v21_;
+ const T22 v22_;
+ const T23 v23_;
+ const T24 v24_;
+ const T25 v25_;
+ const T26 v26_;
+ const T27 v27_;
+ const T28 v28_;
+ const T29 v29_;
+ const T30 v30_;
+ const T31 v31_;
+ const T32 v32_;
+ const T33 v33_;
+ const T34 v34_;
+ const T35 v35_;
+ const T36 v36_;
+ const T37 v37_;
+ const T38 v38_;
+ const T39 v39_;
+ const T40 v40_;
+ const T41 v41_;
+ const T42 v42_;
+ const T43 v43_;
+ const T44 v44_;
+ const T45 v45_;
+ const T46 v46_;
+ const T47 v47_;
+ const T48 v48_;
+ const T49 v49_;
+ const T50 v50_;
+};
+
+# if GTEST_HAS_COMBINE
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Generates values from the Cartesian product of values produced
+// by the argument generators.
+//
+template <typename T1, typename T2>
+class CartesianProductGenerator2
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2> ParamType;
+
+ CartesianProductGenerator2(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2)
+ : g1_(g1), g2_(g2) {}
+ virtual ~CartesianProductGenerator2() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current2_;
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator2::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator2& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+}; // class CartesianProductGenerator2
+
+
+template <typename T1, typename T2, typename T3>
+class CartesianProductGenerator3
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3> ParamType;
+
+ CartesianProductGenerator3(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3)
+ : g1_(g1), g2_(g2), g3_(g3) {}
+ virtual ~CartesianProductGenerator3() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current3_;
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator3::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator3& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+}; // class CartesianProductGenerator3
+
+
+template <typename T1, typename T2, typename T3, typename T4>
+class CartesianProductGenerator4
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3, T4> ParamType;
+
+ CartesianProductGenerator4(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+ const ParamGenerator<T4>& g4)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
+ virtual ~CartesianProductGenerator4() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin(), g4_, g4_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+ g4_, g4_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3,
+ const ParamGenerator<T4>& g4,
+ const typename ParamGenerator<T4>::iterator& current4)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+ begin4_(g4.begin()), end4_(g4.end()), current4_(current4) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current4_;
+ if (current4_ == end4_) {
+ current4_ = begin4_;
+ ++current3_;
+ }
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_ &&
+ current4_ == typed_other->current4_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_),
+ begin4_(other.begin4_),
+ end4_(other.end4_),
+ current4_(other.current4_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_,
+ *current4_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_ ||
+ current4_ == end4_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ const typename ParamGenerator<T4>::iterator begin4_;
+ const typename ParamGenerator<T4>::iterator end4_;
+ typename ParamGenerator<T4>::iterator current4_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator4::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator4& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+ const ParamGenerator<T4> g4_;
+}; // class CartesianProductGenerator4
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+class CartesianProductGenerator5
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3, T4, T5> ParamType;
+
+ CartesianProductGenerator5(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+ const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
+ virtual ~CartesianProductGenerator5() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+ g4_, g4_.end(), g5_, g5_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3,
+ const ParamGenerator<T4>& g4,
+ const typename ParamGenerator<T4>::iterator& current4,
+ const ParamGenerator<T5>& g5,
+ const typename ParamGenerator<T5>::iterator& current5)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+ begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+ begin5_(g5.begin()), end5_(g5.end()), current5_(current5) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current5_;
+ if (current5_ == end5_) {
+ current5_ = begin5_;
+ ++current4_;
+ }
+ if (current4_ == end4_) {
+ current4_ = begin4_;
+ ++current3_;
+ }
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_ &&
+ current4_ == typed_other->current4_ &&
+ current5_ == typed_other->current5_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_),
+ begin4_(other.begin4_),
+ end4_(other.end4_),
+ current4_(other.current4_),
+ begin5_(other.begin5_),
+ end5_(other.end5_),
+ current5_(other.current5_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_,
+ *current4_, *current5_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_ ||
+ current4_ == end4_ ||
+ current5_ == end5_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ const typename ParamGenerator<T4>::iterator begin4_;
+ const typename ParamGenerator<T4>::iterator end4_;
+ typename ParamGenerator<T4>::iterator current4_;
+ const typename ParamGenerator<T5>::iterator begin5_;
+ const typename ParamGenerator<T5>::iterator end5_;
+ typename ParamGenerator<T5>::iterator current5_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator5::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator5& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+ const ParamGenerator<T4> g4_;
+ const ParamGenerator<T5> g5_;
+}; // class CartesianProductGenerator5
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6>
+class CartesianProductGenerator6
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5,
+ T6> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> ParamType;
+
+ CartesianProductGenerator6(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+ const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
+ const ParamGenerator<T6>& g6)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
+ virtual ~CartesianProductGenerator6() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+ g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3,
+ const ParamGenerator<T4>& g4,
+ const typename ParamGenerator<T4>::iterator& current4,
+ const ParamGenerator<T5>& g5,
+ const typename ParamGenerator<T5>::iterator& current5,
+ const ParamGenerator<T6>& g6,
+ const typename ParamGenerator<T6>::iterator& current6)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+ begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+ begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
+ begin6_(g6.begin()), end6_(g6.end()), current6_(current6) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current6_;
+ if (current6_ == end6_) {
+ current6_ = begin6_;
+ ++current5_;
+ }
+ if (current5_ == end5_) {
+ current5_ = begin5_;
+ ++current4_;
+ }
+ if (current4_ == end4_) {
+ current4_ = begin4_;
+ ++current3_;
+ }
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_ &&
+ current4_ == typed_other->current4_ &&
+ current5_ == typed_other->current5_ &&
+ current6_ == typed_other->current6_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_),
+ begin4_(other.begin4_),
+ end4_(other.end4_),
+ current4_(other.current4_),
+ begin5_(other.begin5_),
+ end5_(other.end5_),
+ current5_(other.current5_),
+ begin6_(other.begin6_),
+ end6_(other.end6_),
+ current6_(other.current6_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_,
+ *current4_, *current5_, *current6_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_ ||
+ current4_ == end4_ ||
+ current5_ == end5_ ||
+ current6_ == end6_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ const typename ParamGenerator<T4>::iterator begin4_;
+ const typename ParamGenerator<T4>::iterator end4_;
+ typename ParamGenerator<T4>::iterator current4_;
+ const typename ParamGenerator<T5>::iterator begin5_;
+ const typename ParamGenerator<T5>::iterator end5_;
+ typename ParamGenerator<T5>::iterator current5_;
+ const typename ParamGenerator<T6>::iterator begin6_;
+ const typename ParamGenerator<T6>::iterator end6_;
+ typename ParamGenerator<T6>::iterator current6_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator6::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator6& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+ const ParamGenerator<T4> g4_;
+ const ParamGenerator<T5> g5_;
+ const ParamGenerator<T6> g6_;
+}; // class CartesianProductGenerator6
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7>
+class CartesianProductGenerator7
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+ T7> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> ParamType;
+
+ CartesianProductGenerator7(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+ const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
+ const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
+ virtual ~CartesianProductGenerator7() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
+ g7_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+ g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3,
+ const ParamGenerator<T4>& g4,
+ const typename ParamGenerator<T4>::iterator& current4,
+ const ParamGenerator<T5>& g5,
+ const typename ParamGenerator<T5>::iterator& current5,
+ const ParamGenerator<T6>& g6,
+ const typename ParamGenerator<T6>::iterator& current6,
+ const ParamGenerator<T7>& g7,
+ const typename ParamGenerator<T7>::iterator& current7)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+ begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+ begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
+ begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
+ begin7_(g7.begin()), end7_(g7.end()), current7_(current7) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current7_;
+ if (current7_ == end7_) {
+ current7_ = begin7_;
+ ++current6_;
+ }
+ if (current6_ == end6_) {
+ current6_ = begin6_;
+ ++current5_;
+ }
+ if (current5_ == end5_) {
+ current5_ = begin5_;
+ ++current4_;
+ }
+ if (current4_ == end4_) {
+ current4_ = begin4_;
+ ++current3_;
+ }
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_ &&
+ current4_ == typed_other->current4_ &&
+ current5_ == typed_other->current5_ &&
+ current6_ == typed_other->current6_ &&
+ current7_ == typed_other->current7_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_),
+ begin4_(other.begin4_),
+ end4_(other.end4_),
+ current4_(other.current4_),
+ begin5_(other.begin5_),
+ end5_(other.end5_),
+ current5_(other.current5_),
+ begin6_(other.begin6_),
+ end6_(other.end6_),
+ current6_(other.current6_),
+ begin7_(other.begin7_),
+ end7_(other.end7_),
+ current7_(other.current7_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_,
+ *current4_, *current5_, *current6_, *current7_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_ ||
+ current4_ == end4_ ||
+ current5_ == end5_ ||
+ current6_ == end6_ ||
+ current7_ == end7_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ const typename ParamGenerator<T4>::iterator begin4_;
+ const typename ParamGenerator<T4>::iterator end4_;
+ typename ParamGenerator<T4>::iterator current4_;
+ const typename ParamGenerator<T5>::iterator begin5_;
+ const typename ParamGenerator<T5>::iterator end5_;
+ typename ParamGenerator<T5>::iterator current5_;
+ const typename ParamGenerator<T6>::iterator begin6_;
+ const typename ParamGenerator<T6>::iterator end6_;
+ typename ParamGenerator<T6>::iterator current6_;
+ const typename ParamGenerator<T7>::iterator begin7_;
+ const typename ParamGenerator<T7>::iterator end7_;
+ typename ParamGenerator<T7>::iterator current7_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator7::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator7& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+ const ParamGenerator<T4> g4_;
+ const ParamGenerator<T5> g5_;
+ const ParamGenerator<T6> g6_;
+ const ParamGenerator<T7> g7_;
+}; // class CartesianProductGenerator7
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8>
+class CartesianProductGenerator8
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+ T7, T8> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> ParamType;
+
+ CartesianProductGenerator8(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+ const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
+ const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
+ const ParamGenerator<T8>& g8)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
+ g8_(g8) {}
+ virtual ~CartesianProductGenerator8() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
+ g7_.begin(), g8_, g8_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+ g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
+ g8_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3,
+ const ParamGenerator<T4>& g4,
+ const typename ParamGenerator<T4>::iterator& current4,
+ const ParamGenerator<T5>& g5,
+ const typename ParamGenerator<T5>::iterator& current5,
+ const ParamGenerator<T6>& g6,
+ const typename ParamGenerator<T6>::iterator& current6,
+ const ParamGenerator<T7>& g7,
+ const typename ParamGenerator<T7>::iterator& current7,
+ const ParamGenerator<T8>& g8,
+ const typename ParamGenerator<T8>::iterator& current8)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+ begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+ begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
+ begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
+ begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
+ begin8_(g8.begin()), end8_(g8.end()), current8_(current8) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current8_;
+ if (current8_ == end8_) {
+ current8_ = begin8_;
+ ++current7_;
+ }
+ if (current7_ == end7_) {
+ current7_ = begin7_;
+ ++current6_;
+ }
+ if (current6_ == end6_) {
+ current6_ = begin6_;
+ ++current5_;
+ }
+ if (current5_ == end5_) {
+ current5_ = begin5_;
+ ++current4_;
+ }
+ if (current4_ == end4_) {
+ current4_ = begin4_;
+ ++current3_;
+ }
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_ &&
+ current4_ == typed_other->current4_ &&
+ current5_ == typed_other->current5_ &&
+ current6_ == typed_other->current6_ &&
+ current7_ == typed_other->current7_ &&
+ current8_ == typed_other->current8_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_),
+ begin4_(other.begin4_),
+ end4_(other.end4_),
+ current4_(other.current4_),
+ begin5_(other.begin5_),
+ end5_(other.end5_),
+ current5_(other.current5_),
+ begin6_(other.begin6_),
+ end6_(other.end6_),
+ current6_(other.current6_),
+ begin7_(other.begin7_),
+ end7_(other.end7_),
+ current7_(other.current7_),
+ begin8_(other.begin8_),
+ end8_(other.end8_),
+ current8_(other.current8_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_,
+ *current4_, *current5_, *current6_, *current7_, *current8_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_ ||
+ current4_ == end4_ ||
+ current5_ == end5_ ||
+ current6_ == end6_ ||
+ current7_ == end7_ ||
+ current8_ == end8_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ const typename ParamGenerator<T4>::iterator begin4_;
+ const typename ParamGenerator<T4>::iterator end4_;
+ typename ParamGenerator<T4>::iterator current4_;
+ const typename ParamGenerator<T5>::iterator begin5_;
+ const typename ParamGenerator<T5>::iterator end5_;
+ typename ParamGenerator<T5>::iterator current5_;
+ const typename ParamGenerator<T6>::iterator begin6_;
+ const typename ParamGenerator<T6>::iterator end6_;
+ typename ParamGenerator<T6>::iterator current6_;
+ const typename ParamGenerator<T7>::iterator begin7_;
+ const typename ParamGenerator<T7>::iterator end7_;
+ typename ParamGenerator<T7>::iterator current7_;
+ const typename ParamGenerator<T8>::iterator begin8_;
+ const typename ParamGenerator<T8>::iterator end8_;
+ typename ParamGenerator<T8>::iterator current8_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator8::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator8& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+ const ParamGenerator<T4> g4_;
+ const ParamGenerator<T5> g5_;
+ const ParamGenerator<T6> g6_;
+ const ParamGenerator<T7> g7_;
+ const ParamGenerator<T8> g8_;
+}; // class CartesianProductGenerator8
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9>
+class CartesianProductGenerator9
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+ T7, T8, T9> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> ParamType;
+
+ CartesianProductGenerator9(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+ const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
+ const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
+ const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
+ g9_(g9) {}
+ virtual ~CartesianProductGenerator9() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
+ g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+ g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
+ g8_.end(), g9_, g9_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3,
+ const ParamGenerator<T4>& g4,
+ const typename ParamGenerator<T4>::iterator& current4,
+ const ParamGenerator<T5>& g5,
+ const typename ParamGenerator<T5>::iterator& current5,
+ const ParamGenerator<T6>& g6,
+ const typename ParamGenerator<T6>::iterator& current6,
+ const ParamGenerator<T7>& g7,
+ const typename ParamGenerator<T7>::iterator& current7,
+ const ParamGenerator<T8>& g8,
+ const typename ParamGenerator<T8>::iterator& current8,
+ const ParamGenerator<T9>& g9,
+ const typename ParamGenerator<T9>::iterator& current9)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+ begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+ begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
+ begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
+ begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
+ begin8_(g8.begin()), end8_(g8.end()), current8_(current8),
+ begin9_(g9.begin()), end9_(g9.end()), current9_(current9) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current9_;
+ if (current9_ == end9_) {
+ current9_ = begin9_;
+ ++current8_;
+ }
+ if (current8_ == end8_) {
+ current8_ = begin8_;
+ ++current7_;
+ }
+ if (current7_ == end7_) {
+ current7_ = begin7_;
+ ++current6_;
+ }
+ if (current6_ == end6_) {
+ current6_ = begin6_;
+ ++current5_;
+ }
+ if (current5_ == end5_) {
+ current5_ = begin5_;
+ ++current4_;
+ }
+ if (current4_ == end4_) {
+ current4_ = begin4_;
+ ++current3_;
+ }
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_ &&
+ current4_ == typed_other->current4_ &&
+ current5_ == typed_other->current5_ &&
+ current6_ == typed_other->current6_ &&
+ current7_ == typed_other->current7_ &&
+ current8_ == typed_other->current8_ &&
+ current9_ == typed_other->current9_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_),
+ begin4_(other.begin4_),
+ end4_(other.end4_),
+ current4_(other.current4_),
+ begin5_(other.begin5_),
+ end5_(other.end5_),
+ current5_(other.current5_),
+ begin6_(other.begin6_),
+ end6_(other.end6_),
+ current6_(other.current6_),
+ begin7_(other.begin7_),
+ end7_(other.end7_),
+ current7_(other.current7_),
+ begin8_(other.begin8_),
+ end8_(other.end8_),
+ current8_(other.current8_),
+ begin9_(other.begin9_),
+ end9_(other.end9_),
+ current9_(other.current9_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_,
+ *current4_, *current5_, *current6_, *current7_, *current8_,
+ *current9_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_ ||
+ current4_ == end4_ ||
+ current5_ == end5_ ||
+ current6_ == end6_ ||
+ current7_ == end7_ ||
+ current8_ == end8_ ||
+ current9_ == end9_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ const typename ParamGenerator<T4>::iterator begin4_;
+ const typename ParamGenerator<T4>::iterator end4_;
+ typename ParamGenerator<T4>::iterator current4_;
+ const typename ParamGenerator<T5>::iterator begin5_;
+ const typename ParamGenerator<T5>::iterator end5_;
+ typename ParamGenerator<T5>::iterator current5_;
+ const typename ParamGenerator<T6>::iterator begin6_;
+ const typename ParamGenerator<T6>::iterator end6_;
+ typename ParamGenerator<T6>::iterator current6_;
+ const typename ParamGenerator<T7>::iterator begin7_;
+ const typename ParamGenerator<T7>::iterator end7_;
+ typename ParamGenerator<T7>::iterator current7_;
+ const typename ParamGenerator<T8>::iterator begin8_;
+ const typename ParamGenerator<T8>::iterator end8_;
+ typename ParamGenerator<T8>::iterator current8_;
+ const typename ParamGenerator<T9>::iterator begin9_;
+ const typename ParamGenerator<T9>::iterator end9_;
+ typename ParamGenerator<T9>::iterator current9_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator9::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator9& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+ const ParamGenerator<T4> g4_;
+ const ParamGenerator<T5> g5_;
+ const ParamGenerator<T6> g6_;
+ const ParamGenerator<T7> g7_;
+ const ParamGenerator<T8> g8_;
+ const ParamGenerator<T9> g9_;
+}; // class CartesianProductGenerator9
+
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10>
+class CartesianProductGenerator10
+ : public ParamGeneratorInterface< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+ T7, T8, T9, T10> > {
+ public:
+ typedef ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ParamType;
+
+ CartesianProductGenerator10(const ParamGenerator<T1>& g1,
+ const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
+ const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
+ const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
+ const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9,
+ const ParamGenerator<T10>& g10)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
+ g9_(g9), g10_(g10) {}
+ virtual ~CartesianProductGenerator10() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
+ g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
+ g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin());
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
+ g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
+ g8_.end(), g9_, g9_.end(), g10_, g10_.end());
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base,
+ const ParamGenerator<T1>& g1,
+ const typename ParamGenerator<T1>::iterator& current1,
+ const ParamGenerator<T2>& g2,
+ const typename ParamGenerator<T2>::iterator& current2,
+ const ParamGenerator<T3>& g3,
+ const typename ParamGenerator<T3>::iterator& current3,
+ const ParamGenerator<T4>& g4,
+ const typename ParamGenerator<T4>::iterator& current4,
+ const ParamGenerator<T5>& g5,
+ const typename ParamGenerator<T5>::iterator& current5,
+ const ParamGenerator<T6>& g6,
+ const typename ParamGenerator<T6>::iterator& current6,
+ const ParamGenerator<T7>& g7,
+ const typename ParamGenerator<T7>::iterator& current7,
+ const ParamGenerator<T8>& g8,
+ const typename ParamGenerator<T8>::iterator& current8,
+ const ParamGenerator<T9>& g9,
+ const typename ParamGenerator<T9>::iterator& current9,
+ const ParamGenerator<T10>& g10,
+ const typename ParamGenerator<T10>::iterator& current10)
+ : base_(base),
+ begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
+ begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
+ begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
+ begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
+ begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
+ begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
+ begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
+ begin8_(g8.begin()), end8_(g8.end()), current8_(current8),
+ begin9_(g9.begin()), end9_(g9.end()), current9_(current9),
+ begin10_(g10.begin()), end10_(g10.end()), current10_(current10) {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current10_;
+ if (current10_ == end10_) {
+ current10_ = begin10_;
+ ++current9_;
+ }
+ if (current9_ == end9_) {
+ current9_ = begin9_;
+ ++current8_;
+ }
+ if (current8_ == end8_) {
+ current8_ = begin8_;
+ ++current7_;
+ }
+ if (current7_ == end7_) {
+ current7_ = begin7_;
+ ++current6_;
+ }
+ if (current6_ == end6_) {
+ current6_ = begin6_;
+ ++current5_;
+ }
+ if (current5_ == end5_) {
+ current5_ = begin5_;
+ ++current4_;
+ }
+ if (current4_ == end4_) {
+ current4_ = begin4_;
+ ++current3_;
+ }
+ if (current3_ == end3_) {
+ current3_ = begin3_;
+ ++current2_;
+ }
+ if (current2_ == end2_) {
+ current2_ = begin2_;
+ ++current1_;
+ }
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ (
+ current1_ == typed_other->current1_ &&
+ current2_ == typed_other->current2_ &&
+ current3_ == typed_other->current3_ &&
+ current4_ == typed_other->current4_ &&
+ current5_ == typed_other->current5_ &&
+ current6_ == typed_other->current6_ &&
+ current7_ == typed_other->current7_ &&
+ current8_ == typed_other->current8_ &&
+ current9_ == typed_other->current9_ &&
+ current10_ == typed_other->current10_);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_),
+ begin1_(other.begin1_),
+ end1_(other.end1_),
+ current1_(other.current1_),
+ begin2_(other.begin2_),
+ end2_(other.end2_),
+ current2_(other.current2_),
+ begin3_(other.begin3_),
+ end3_(other.end3_),
+ current3_(other.current3_),
+ begin4_(other.begin4_),
+ end4_(other.end4_),
+ current4_(other.current4_),
+ begin5_(other.begin5_),
+ end5_(other.end5_),
+ current5_(other.current5_),
+ begin6_(other.begin6_),
+ end6_(other.end6_),
+ current6_(other.current6_),
+ begin7_(other.begin7_),
+ end7_(other.end7_),
+ current7_(other.current7_),
+ begin8_(other.begin8_),
+ end8_(other.end8_),
+ current8_(other.current8_),
+ begin9_(other.begin9_),
+ end9_(other.end9_),
+ current9_(other.current9_),
+ begin10_(other.begin10_),
+ end10_(other.end10_),
+ current10_(other.current10_) {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType(*current1_, *current2_, *current3_,
+ *current4_, *current5_, *current6_, *current7_, *current8_,
+ *current9_, *current10_);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+ current1_ == end1_ ||
+ current2_ == end2_ ||
+ current3_ == end3_ ||
+ current4_ == end4_ ||
+ current5_ == end5_ ||
+ current6_ == end6_ ||
+ current7_ == end7_ ||
+ current8_ == end8_ ||
+ current9_ == end9_ ||
+ current10_ == end10_;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+ const typename ParamGenerator<T1>::iterator begin1_;
+ const typename ParamGenerator<T1>::iterator end1_;
+ typename ParamGenerator<T1>::iterator current1_;
+ const typename ParamGenerator<T2>::iterator begin2_;
+ const typename ParamGenerator<T2>::iterator end2_;
+ typename ParamGenerator<T2>::iterator current2_;
+ const typename ParamGenerator<T3>::iterator begin3_;
+ const typename ParamGenerator<T3>::iterator end3_;
+ typename ParamGenerator<T3>::iterator current3_;
+ const typename ParamGenerator<T4>::iterator begin4_;
+ const typename ParamGenerator<T4>::iterator end4_;
+ typename ParamGenerator<T4>::iterator current4_;
+ const typename ParamGenerator<T5>::iterator begin5_;
+ const typename ParamGenerator<T5>::iterator end5_;
+ typename ParamGenerator<T5>::iterator current5_;
+ const typename ParamGenerator<T6>::iterator begin6_;
+ const typename ParamGenerator<T6>::iterator end6_;
+ typename ParamGenerator<T6>::iterator current6_;
+ const typename ParamGenerator<T7>::iterator begin7_;
+ const typename ParamGenerator<T7>::iterator end7_;
+ typename ParamGenerator<T7>::iterator current7_;
+ const typename ParamGenerator<T8>::iterator begin8_;
+ const typename ParamGenerator<T8>::iterator end8_;
+ typename ParamGenerator<T8>::iterator current8_;
+ const typename ParamGenerator<T9>::iterator begin9_;
+ const typename ParamGenerator<T9>::iterator end9_;
+ typename ParamGenerator<T9>::iterator current9_;
+ const typename ParamGenerator<T10>::iterator begin10_;
+ const typename ParamGenerator<T10>::iterator end10_;
+ typename ParamGenerator<T10>::iterator current10_;
+ ParamType current_value_;
+ }; // class CartesianProductGenerator10::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator10& other);
+
+ const ParamGenerator<T1> g1_;
+ const ParamGenerator<T2> g2_;
+ const ParamGenerator<T3> g3_;
+ const ParamGenerator<T4> g4_;
+ const ParamGenerator<T5> g5_;
+ const ParamGenerator<T6> g6_;
+ const ParamGenerator<T7> g7_;
+ const ParamGenerator<T8> g8_;
+ const ParamGenerator<T9> g9_;
+ const ParamGenerator<T10> g10_;
+}; // class CartesianProductGenerator10
+
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Helper classes providing Combine() with polymorphic features. They allow
+// casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is
+// convertible to U.
+//
+template <class Generator1, class Generator2>
+class CartesianProductHolder2 {
+ public:
+CartesianProductHolder2(const Generator1& g1, const Generator2& g2)
+ : g1_(g1), g2_(g2) {}
+ template <typename T1, typename T2>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2> >(
+ new CartesianProductGenerator2<T1, T2>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder2& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+}; // class CartesianProductHolder2
+
+template <class Generator1, class Generator2, class Generator3>
+class CartesianProductHolder3 {
+ public:
+CartesianProductHolder3(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3)
+ : g1_(g1), g2_(g2), g3_(g3) {}
+ template <typename T1, typename T2, typename T3>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3> >(
+ new CartesianProductGenerator3<T1, T2, T3>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder3& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+}; // class CartesianProductHolder3
+
+template <class Generator1, class Generator2, class Generator3,
+ class Generator4>
+class CartesianProductHolder4 {
+ public:
+CartesianProductHolder4(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3, const Generator4& g4)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
+ template <typename T1, typename T2, typename T3, typename T4>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4> >(
+ new CartesianProductGenerator4<T1, T2, T3, T4>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_),
+ static_cast<ParamGenerator<T4> >(g4_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder4& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+ const Generator4 g4_;
+}; // class CartesianProductHolder4
+
+template <class Generator1, class Generator2, class Generator3,
+ class Generator4, class Generator5>
+class CartesianProductHolder5 {
+ public:
+CartesianProductHolder5(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3, const Generator4& g4, const Generator5& g5)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
+ template <typename T1, typename T2, typename T3, typename T4, typename T5>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5> >(
+ new CartesianProductGenerator5<T1, T2, T3, T4, T5>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_),
+ static_cast<ParamGenerator<T4> >(g4_),
+ static_cast<ParamGenerator<T5> >(g5_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder5& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+ const Generator4 g4_;
+ const Generator5 g5_;
+}; // class CartesianProductHolder5
+
+template <class Generator1, class Generator2, class Generator3,
+ class Generator4, class Generator5, class Generator6>
+class CartesianProductHolder6 {
+ public:
+CartesianProductHolder6(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3, const Generator4& g4, const Generator5& g5,
+ const Generator6& g6)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
+ template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6> >(
+ new CartesianProductGenerator6<T1, T2, T3, T4, T5, T6>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_),
+ static_cast<ParamGenerator<T4> >(g4_),
+ static_cast<ParamGenerator<T5> >(g5_),
+ static_cast<ParamGenerator<T6> >(g6_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder6& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+ const Generator4 g4_;
+ const Generator5 g5_;
+ const Generator6 g6_;
+}; // class CartesianProductHolder6
+
+template <class Generator1, class Generator2, class Generator3,
+ class Generator4, class Generator5, class Generator6, class Generator7>
+class CartesianProductHolder7 {
+ public:
+CartesianProductHolder7(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3, const Generator4& g4, const Generator5& g5,
+ const Generator6& g6, const Generator7& g7)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
+ template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6,
+ T7> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7> >(
+ new CartesianProductGenerator7<T1, T2, T3, T4, T5, T6, T7>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_),
+ static_cast<ParamGenerator<T4> >(g4_),
+ static_cast<ParamGenerator<T5> >(g5_),
+ static_cast<ParamGenerator<T6> >(g6_),
+ static_cast<ParamGenerator<T7> >(g7_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder7& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+ const Generator4 g4_;
+ const Generator5 g5_;
+ const Generator6 g6_;
+ const Generator7 g7_;
+}; // class CartesianProductHolder7
+
+template <class Generator1, class Generator2, class Generator3,
+ class Generator4, class Generator5, class Generator6, class Generator7,
+ class Generator8>
+class CartesianProductHolder8 {
+ public:
+CartesianProductHolder8(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3, const Generator4& g4, const Generator5& g5,
+ const Generator6& g6, const Generator7& g7, const Generator8& g8)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
+ g8_(g8) {}
+ template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7,
+ T8> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8> >(
+ new CartesianProductGenerator8<T1, T2, T3, T4, T5, T6, T7, T8>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_),
+ static_cast<ParamGenerator<T4> >(g4_),
+ static_cast<ParamGenerator<T5> >(g5_),
+ static_cast<ParamGenerator<T6> >(g6_),
+ static_cast<ParamGenerator<T7> >(g7_),
+ static_cast<ParamGenerator<T8> >(g8_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder8& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+ const Generator4 g4_;
+ const Generator5 g5_;
+ const Generator6 g6_;
+ const Generator7 g7_;
+ const Generator8 g8_;
+}; // class CartesianProductHolder8
+
+template <class Generator1, class Generator2, class Generator3,
+ class Generator4, class Generator5, class Generator6, class Generator7,
+ class Generator8, class Generator9>
+class CartesianProductHolder9 {
+ public:
+CartesianProductHolder9(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3, const Generator4& g4, const Generator5& g5,
+ const Generator6& g6, const Generator7& g7, const Generator8& g8,
+ const Generator9& g9)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
+ g9_(g9) {}
+ template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+ T9> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+ T9> >(
+ new CartesianProductGenerator9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_),
+ static_cast<ParamGenerator<T4> >(g4_),
+ static_cast<ParamGenerator<T5> >(g5_),
+ static_cast<ParamGenerator<T6> >(g6_),
+ static_cast<ParamGenerator<T7> >(g7_),
+ static_cast<ParamGenerator<T8> >(g8_),
+ static_cast<ParamGenerator<T9> >(g9_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder9& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+ const Generator4 g4_;
+ const Generator5 g5_;
+ const Generator6 g6_;
+ const Generator7 g7_;
+ const Generator8 g8_;
+ const Generator9 g9_;
+}; // class CartesianProductHolder9
+
+template <class Generator1, class Generator2, class Generator3,
+ class Generator4, class Generator5, class Generator6, class Generator7,
+ class Generator8, class Generator9, class Generator10>
+class CartesianProductHolder10 {
+ public:
+CartesianProductHolder10(const Generator1& g1, const Generator2& g2,
+ const Generator3& g3, const Generator4& g4, const Generator5& g5,
+ const Generator6& g6, const Generator7& g7, const Generator8& g8,
+ const Generator9& g9, const Generator10& g10)
+ : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
+ g9_(g9), g10_(g10) {}
+ template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10>
+ operator ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+ T9, T10> >() const {
+ return ParamGenerator< ::std::tr1::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
+ T9, T10> >(
+ new CartesianProductGenerator10<T1, T2, T3, T4, T5, T6, T7, T8, T9,
+ T10>(
+ static_cast<ParamGenerator<T1> >(g1_),
+ static_cast<ParamGenerator<T2> >(g2_),
+ static_cast<ParamGenerator<T3> >(g3_),
+ static_cast<ParamGenerator<T4> >(g4_),
+ static_cast<ParamGenerator<T5> >(g5_),
+ static_cast<ParamGenerator<T6> >(g6_),
+ static_cast<ParamGenerator<T7> >(g7_),
+ static_cast<ParamGenerator<T8> >(g8_),
+ static_cast<ParamGenerator<T9> >(g9_),
+ static_cast<ParamGenerator<T10> >(g10_)));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder10& other);
+
+ const Generator1 g1_;
+ const Generator2 g2_;
+ const Generator3 g3_;
+ const Generator4 g4_;
+ const Generator5 g5_;
+ const Generator6 g6_;
+ const Generator7 g7_;
+ const Generator8 g8_;
+ const Generator9 g9_;
+ const Generator10 g10_;
+}; // class CartesianProductHolder10
+
+# endif // GTEST_HAS_COMBINE
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_HAS_PARAM_TEST
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
diff --git a/test/fmw/gtest/include/gtest/internal/gtest-param-util-generated.h.pump b/test/fmw/gtest/include/gtest/internal/gtest-param-util-generated.h.pump
new file mode 100644
index 0000000..009206f
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/internal/gtest-param-util-generated.h.pump
@@ -0,0 +1,301 @@
+$$ -*- mode: c++; -*-
+$var n = 50 $$ Maximum length of Values arguments we want to support.
+$var maxtuple = 10 $$ Maximum number of Combine arguments we want to support.
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+
+// Type and function utilities for implementing parameterized tests.
+// This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
+//
+// Currently Google Test supports at most $n arguments in Values,
+// and at most $maxtuple arguments in Combine. Please contact
+// googletestframework@googlegroups.com if you need more.
+// Please note that the number of arguments to Combine is limited
+// by the maximum arity of the implementation of tr1::tuple which is
+// currently set at $maxtuple.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
+
+// scripts/fuse_gtest.py depends on gtest's own header being #included
+// *unconditionally*. Therefore these #includes cannot be moved
+// inside #if GTEST_HAS_PARAM_TEST.
+#include "gtest/internal/gtest-param-util.h"
+#include "gtest/internal/gtest-port.h"
+
+#if GTEST_HAS_PARAM_TEST
+
+namespace testing {
+
+// Forward declarations of ValuesIn(), which is implemented in
+// include/gtest/gtest-param-test.h.
+template <typename ForwardIterator>
+internal::ParamGenerator<
+ typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
+ValuesIn(ForwardIterator begin, ForwardIterator end);
+
+template <typename T, size_t N>
+internal::ParamGenerator<T> ValuesIn(const T (&array)[N]);
+
+template <class Container>
+internal::ParamGenerator<typename Container::value_type> ValuesIn(
+ const Container& container);
+
+namespace internal {
+
+// Used in the Values() function to provide polymorphic capabilities.
+template <typename T1>
+class ValueArray1 {
+ public:
+ explicit ValueArray1(T1 v1) : v1_(v1) {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const { return ValuesIn(&v1_, &v1_ + 1); }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray1& other);
+
+ const T1 v1_;
+};
+
+$range i 2..n
+$for i [[
+$range j 1..i
+
+template <$for j, [[typename T$j]]>
+class ValueArray$i {
+ public:
+ ValueArray$i($for j, [[T$j v$j]]) : $for j, [[v$(j)_(v$j)]] {}
+
+ template <typename T>
+ operator ParamGenerator<T>() const {
+ const T array[] = {$for j, [[static_cast<T>(v$(j)_)]]};
+ return ValuesIn(array);
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const ValueArray$i& other);
+
+$for j [[
+
+ const T$j v$(j)_;
+]]
+
+};
+
+]]
+
+# if GTEST_HAS_COMBINE
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Generates values from the Cartesian product of values produced
+// by the argument generators.
+//
+$range i 2..maxtuple
+$for i [[
+$range j 1..i
+$range k 2..i
+
+template <$for j, [[typename T$j]]>
+class CartesianProductGenerator$i
+ : public ParamGeneratorInterface< ::std::tr1::tuple<$for j, [[T$j]]> > {
+ public:
+ typedef ::std::tr1::tuple<$for j, [[T$j]]> ParamType;
+
+ CartesianProductGenerator$i($for j, [[const ParamGenerator<T$j>& g$j]])
+ : $for j, [[g$(j)_(g$j)]] {}
+ virtual ~CartesianProductGenerator$i() {}
+
+ virtual ParamIteratorInterface<ParamType>* Begin() const {
+ return new Iterator(this, $for j, [[g$(j)_, g$(j)_.begin()]]);
+ }
+ virtual ParamIteratorInterface<ParamType>* End() const {
+ return new Iterator(this, $for j, [[g$(j)_, g$(j)_.end()]]);
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<ParamType> {
+ public:
+ Iterator(const ParamGeneratorInterface<ParamType>* base, $for j, [[
+
+ const ParamGenerator<T$j>& g$j,
+ const typename ParamGenerator<T$j>::iterator& current$(j)]])
+ : base_(base),
+$for j, [[
+
+ begin$(j)_(g$j.begin()), end$(j)_(g$j.end()), current$(j)_(current$j)
+]] {
+ ComputeCurrentValue();
+ }
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<ParamType>* BaseGenerator() const {
+ return base_;
+ }
+ // Advance should not be called on beyond-of-range iterators
+ // so no component iterators must be beyond end of range, either.
+ virtual void Advance() {
+ assert(!AtEnd());
+ ++current$(i)_;
+
+$for k [[
+ if (current$(i+2-k)_ == end$(i+2-k)_) {
+ current$(i+2-k)_ = begin$(i+2-k)_;
+ ++current$(i+2-k-1)_;
+ }
+
+]]
+ ComputeCurrentValue();
+ }
+ virtual ParamIteratorInterface<ParamType>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const ParamType* Current() const { return &current_value_; }
+ virtual bool Equals(const ParamIteratorInterface<ParamType>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const Iterator* typed_other =
+ CheckedDowncastToActualType<const Iterator>(&other);
+ // We must report iterators equal if they both point beyond their
+ // respective ranges. That can happen in a variety of fashions,
+ // so we have to consult AtEnd().
+ return (AtEnd() && typed_other->AtEnd()) ||
+ ($for j && [[
+
+ current$(j)_ == typed_other->current$(j)_
+]]);
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : base_(other.base_), $for j, [[
+
+ begin$(j)_(other.begin$(j)_),
+ end$(j)_(other.end$(j)_),
+ current$(j)_(other.current$(j)_)
+]] {
+ ComputeCurrentValue();
+ }
+
+ void ComputeCurrentValue() {
+ if (!AtEnd())
+ current_value_ = ParamType($for j, [[*current$(j)_]]);
+ }
+ bool AtEnd() const {
+ // We must report iterator past the end of the range when either of the
+ // component iterators has reached the end of its range.
+ return
+$for j || [[
+
+ current$(j)_ == end$(j)_
+]];
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<ParamType>* const base_;
+ // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
+ // current[i]_ is the actual traversing iterator.
+$for j [[
+
+ const typename ParamGenerator<T$j>::iterator begin$(j)_;
+ const typename ParamGenerator<T$j>::iterator end$(j)_;
+ typename ParamGenerator<T$j>::iterator current$(j)_;
+]]
+
+ ParamType current_value_;
+ }; // class CartesianProductGenerator$i::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductGenerator$i& other);
+
+
+$for j [[
+ const ParamGenerator<T$j> g$(j)_;
+
+]]
+}; // class CartesianProductGenerator$i
+
+
+]]
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Helper classes providing Combine() with polymorphic features. They allow
+// casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is
+// convertible to U.
+//
+$range i 2..maxtuple
+$for i [[
+$range j 1..i
+
+template <$for j, [[class Generator$j]]>
+class CartesianProductHolder$i {
+ public:
+CartesianProductHolder$i($for j, [[const Generator$j& g$j]])
+ : $for j, [[g$(j)_(g$j)]] {}
+ template <$for j, [[typename T$j]]>
+ operator ParamGenerator< ::std::tr1::tuple<$for j, [[T$j]]> >() const {
+ return ParamGenerator< ::std::tr1::tuple<$for j, [[T$j]]> >(
+ new CartesianProductGenerator$i<$for j, [[T$j]]>(
+$for j,[[
+
+ static_cast<ParamGenerator<T$j> >(g$(j)_)
+]]));
+ }
+
+ private:
+ // No implementation - assignment is unsupported.
+ void operator=(const CartesianProductHolder$i& other);
+
+
+$for j [[
+ const Generator$j g$(j)_;
+
+]]
+}; // class CartesianProductHolder$i
+
+]]
+
+# endif // GTEST_HAS_COMBINE
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_HAS_PARAM_TEST
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
diff --git a/test/fmw/gtest/include/gtest/internal/gtest-param-util.h b/test/fmw/gtest/include/gtest/internal/gtest-param-util.h
new file mode 100644
index 0000000..d5e1028
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/internal/gtest-param-util.h
@@ -0,0 +1,619 @@
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: vladl@google.com (Vlad Losev)
+
+// Type and function utilities for implementing parameterized tests.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
+
+#include <iterator>
+#include <utility>
+#include <vector>
+
+// scripts/fuse_gtest.py depends on gtest's own header being #included
+// *unconditionally*. Therefore these #includes cannot be moved
+// inside #if GTEST_HAS_PARAM_TEST.
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-linked_ptr.h"
+#include "gtest/internal/gtest-port.h"
+#include "gtest/gtest-printers.h"
+
+#if GTEST_HAS_PARAM_TEST
+
+namespace testing {
+namespace internal {
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Outputs a message explaining invalid registration of different
+// fixture class for the same test case. This may happen when
+// TEST_P macro is used to define two tests with the same name
+// but in different namespaces.
+GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name,
+ const char* file, int line);
+
+template <typename> class ParamGeneratorInterface;
+template <typename> class ParamGenerator;
+
+// Interface for iterating over elements provided by an implementation
+// of ParamGeneratorInterface<T>.
+template <typename T>
+class ParamIteratorInterface {
+ public:
+ virtual ~ParamIteratorInterface() {}
+ // A pointer to the base generator instance.
+ // Used only for the purposes of iterator comparison
+ // to make sure that two iterators belong to the same generator.
+ virtual const ParamGeneratorInterface<T>* BaseGenerator() const = 0;
+ // Advances iterator to point to the next element
+ // provided by the generator. The caller is responsible
+ // for not calling Advance() on an iterator equal to
+ // BaseGenerator()->End().
+ virtual void Advance() = 0;
+ // Clones the iterator object. Used for implementing copy semantics
+ // of ParamIterator<T>.
+ virtual ParamIteratorInterface* Clone() const = 0;
+ // Dereferences the current iterator and provides (read-only) access
+ // to the pointed value. It is the caller's responsibility not to call
+ // Current() on an iterator equal to BaseGenerator()->End().
+ // Used for implementing ParamGenerator<T>::operator*().
+ virtual const T* Current() const = 0;
+ // Determines whether the given iterator and other point to the same
+ // element in the sequence generated by the generator.
+ // Used for implementing ParamGenerator<T>::operator==().
+ virtual bool Equals(const ParamIteratorInterface& other) const = 0;
+};
+
+// Class iterating over elements provided by an implementation of
+// ParamGeneratorInterface<T>. It wraps ParamIteratorInterface<T>
+// and implements the const forward iterator concept.
+template <typename T>
+class ParamIterator {
+ public:
+ typedef T value_type;
+ typedef const T& reference;
+ typedef ptrdiff_t difference_type;
+
+ // ParamIterator assumes ownership of the impl_ pointer.
+ ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {}
+ ParamIterator& operator=(const ParamIterator& other) {
+ if (this != &other)
+ impl_.reset(other.impl_->Clone());
+ return *this;
+ }
+
+ const T& operator*() const { return *impl_->Current(); }
+ const T* operator->() const { return impl_->Current(); }
+ // Prefix version of operator++.
+ ParamIterator& operator++() {
+ impl_->Advance();
+ return *this;
+ }
+ // Postfix version of operator++.
+ ParamIterator operator++(int /*unused*/) {
+ ParamIteratorInterface<T>* clone = impl_->Clone();
+ impl_->Advance();
+ return ParamIterator(clone);
+ }
+ bool operator==(const ParamIterator& other) const {
+ return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_);
+ }
+ bool operator!=(const ParamIterator& other) const {
+ return !(*this == other);
+ }
+
+ private:
+ friend class ParamGenerator<T>;
+ explicit ParamIterator(ParamIteratorInterface<T>* impl) : impl_(impl) {}
+ scoped_ptr<ParamIteratorInterface<T> > impl_;
+};
+
+// ParamGeneratorInterface<T> is the binary interface to access generators
+// defined in other translation units.
+template <typename T>
+class ParamGeneratorInterface {
+ public:
+ typedef T ParamType;
+
+ virtual ~ParamGeneratorInterface() {}
+
+ // Generator interface definition
+ virtual ParamIteratorInterface<T>* Begin() const = 0;
+ virtual ParamIteratorInterface<T>* End() const = 0;
+};
+
+// Wraps ParamGeneratorInterface<T> and provides general generator syntax
+// compatible with the STL Container concept.
+// This class implements copy initialization semantics and the contained
+// ParamGeneratorInterface<T> instance is shared among all copies
+// of the original object. This is possible because that instance is immutable.
+template<typename T>
+class ParamGenerator {
+ public:
+ typedef ParamIterator<T> iterator;
+
+ explicit ParamGenerator(ParamGeneratorInterface<T>* impl) : impl_(impl) {}
+ ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {}
+
+ ParamGenerator& operator=(const ParamGenerator& other) {
+ impl_ = other.impl_;
+ return *this;
+ }
+
+ iterator begin() const { return iterator(impl_->Begin()); }
+ iterator end() const { return iterator(impl_->End()); }
+
+ private:
+ linked_ptr<const ParamGeneratorInterface<T> > impl_;
+};
+
+// Generates values from a range of two comparable values. Can be used to
+// generate sequences of user-defined types that implement operator+() and
+// operator<().
+// This class is used in the Range() function.
+template <typename T, typename IncrementT>
+class RangeGenerator : public ParamGeneratorInterface<T> {
+ public:
+ RangeGenerator(T begin, T end, IncrementT step)
+ : begin_(begin), end_(end),
+ step_(step), end_index_(CalculateEndIndex(begin, end, step)) {}
+ virtual ~RangeGenerator() {}
+
+ virtual ParamIteratorInterface<T>* Begin() const {
+ return new Iterator(this, begin_, 0, step_);
+ }
+ virtual ParamIteratorInterface<T>* End() const {
+ return new Iterator(this, end_, end_index_, step_);
+ }
+
+ private:
+ class Iterator : public ParamIteratorInterface<T> {
+ public:
+ Iterator(const ParamGeneratorInterface<T>* base, T value, int index,
+ IncrementT step)
+ : base_(base), value_(value), index_(index), step_(step) {}
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<T>* BaseGenerator() const {
+ return base_;
+ }
+ virtual void Advance() {
+ value_ = value_ + step_;
+ index_++;
+ }
+ virtual ParamIteratorInterface<T>* Clone() const {
+ return new Iterator(*this);
+ }
+ virtual const T* Current() const { return &value_; }
+ virtual bool Equals(const ParamIteratorInterface<T>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ const int other_index =
+ CheckedDowncastToActualType<const Iterator>(&other)->index_;
+ return index_ == other_index;
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ : ParamIteratorInterface<T>(),
+ base_(other.base_), value_(other.value_), index_(other.index_),
+ step_(other.step_) {}
+
+ // No implementation - assignment is unsupported.
+ void operator=(const Iterator& other);
+
+ const ParamGeneratorInterface<T>* const base_;
+ T value_;
+ int index_;
+ const IncrementT step_;
+ }; // class RangeGenerator::Iterator
+
+ static int CalculateEndIndex(const T& begin,
+ const T& end,
+ const IncrementT& step) {
+ int end_index = 0;
+ for (T i = begin; i < end; i = i + step)
+ end_index++;
+ return end_index;
+ }
+
+ // No implementation - assignment is unsupported.
+ void operator=(const RangeGenerator& other);
+
+ const T begin_;
+ const T end_;
+ const IncrementT step_;
+ // The index for the end() iterator. All the elements in the generated
+ // sequence are indexed (0-based) to aid iterator comparison.
+ const int end_index_;
+}; // class RangeGenerator
+
+
+// Generates values from a pair of STL-style iterators. Used in the
+// ValuesIn() function. The elements are copied from the source range
+// since the source can be located on the stack, and the generator
+// is likely to persist beyond that stack frame.
+template <typename T>
+class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface<T> {
+ public:
+ template <typename ForwardIterator>
+ ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end)
+ : container_(begin, end) {}
+ virtual ~ValuesInIteratorRangeGenerator() {}
+
+ virtual ParamIteratorInterface<T>* Begin() const {
+ return new Iterator(this, container_.begin());
+ }
+ virtual ParamIteratorInterface<T>* End() const {
+ return new Iterator(this, container_.end());
+ }
+
+ private:
+ typedef typename ::std::vector<T> ContainerType;
+
+ class Iterator : public ParamIteratorInterface<T> {
+ public:
+ Iterator(const ParamGeneratorInterface<T>* base,
+ typename ContainerType::const_iterator iterator)
+ : base_(base), iterator_(iterator) {}
+ virtual ~Iterator() {}
+
+ virtual const ParamGeneratorInterface<T>* BaseGenerator() const {
+ return base_;
+ }
+ virtual void Advance() {
+ ++iterator_;
+ value_.reset();
+ }
+ virtual ParamIteratorInterface<T>* Clone() const {
+ return new Iterator(*this);
+ }
+ // We need to use cached value referenced by iterator_ because *iterator_
+ // can return a temporary object (and of type other then T), so just
+ // having "return &*iterator_;" doesn't work.
+ // value_ is updated here and not in Advance() because Advance()
+ // can advance iterator_ beyond the end of the range, and we cannot
+ // detect that fact. The client code, on the other hand, is
+ // responsible for not calling Current() on an out-of-range iterator.
+ virtual const T* Current() const {
+ if (value_.get() == NULL)
+ value_.reset(new T(*iterator_));
+ return value_.get();
+ }
+ virtual bool Equals(const ParamIteratorInterface<T>& other) const {
+ // Having the same base generator guarantees that the other
+ // iterator is of the same type and we can downcast.
+ GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
+ << "The program attempted to compare iterators "
+ << "from different generators." << std::endl;
+ return iterator_ ==
+ CheckedDowncastToActualType<const Iterator>(&other)->iterator_;
+ }
+
+ private:
+ Iterator(const Iterator& other)
+ // The explicit constructor call suppresses a false warning
+ // emitted by gcc when supplied with the -Wextra option.
+ : ParamIteratorInterface<T>(),
+ base_(other.base_),
+ iterator_(other.iterator_) {}
+
+ const ParamGeneratorInterface<T>* const base_;
+ typename ContainerType::const_iterator iterator_;
+ // A cached value of *iterator_. We keep it here to allow access by
+ // pointer in the wrapping iterator's operator->().
+ // value_ needs to be mutable to be accessed in Current().
+ // Use of scoped_ptr helps manage cached value's lifetime,
+ // which is bound by the lifespan of the iterator itself.
+ mutable scoped_ptr<const T> value_;
+ }; // class ValuesInIteratorRangeGenerator::Iterator
+
+ // No implementation - assignment is unsupported.
+ void operator=(const ValuesInIteratorRangeGenerator& other);
+
+ const ContainerType container_;
+}; // class ValuesInIteratorRangeGenerator
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Stores a parameter value and later creates tests parameterized with that
+// value.
+template <class TestClass>
+class ParameterizedTestFactory : public TestFactoryBase {
+ public:
+ typedef typename TestClass::ParamType ParamType;
+ explicit ParameterizedTestFactory(ParamType parameter) :
+ parameter_(parameter) {}
+ virtual Test* CreateTest() {
+ TestClass::SetParam(&parameter_);
+ return new TestClass();
+ }
+
+ private:
+ const ParamType parameter_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory);
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// TestMetaFactoryBase is a base class for meta-factories that create
+// test factories for passing into MakeAndRegisterTestInfo function.
+template <class ParamType>
+class TestMetaFactoryBase {
+ public:
+ virtual ~TestMetaFactoryBase() {}
+
+ virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0;
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// TestMetaFactory creates test factories for passing into
+// MakeAndRegisterTestInfo function. Since MakeAndRegisterTestInfo receives
+// ownership of test factory pointer, same factory object cannot be passed
+// into that method twice. But ParameterizedTestCaseInfo is going to call
+// it for each Test/Parameter value combination. Thus it needs meta factory
+// creator class.
+template <class TestCase>
+class TestMetaFactory
+ : public TestMetaFactoryBase<typename TestCase::ParamType> {
+ public:
+ typedef typename TestCase::ParamType ParamType;
+
+ TestMetaFactory() {}
+
+ virtual TestFactoryBase* CreateTestFactory(ParamType parameter) {
+ return new ParameterizedTestFactory<TestCase>(parameter);
+ }
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory);
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// ParameterizedTestCaseInfoBase is a generic interface
+// to ParameterizedTestCaseInfo classes. ParameterizedTestCaseInfoBase
+// accumulates test information provided by TEST_P macro invocations
+// and generators provided by INSTANTIATE_TEST_CASE_P macro invocations
+// and uses that information to register all resulting test instances
+// in RegisterTests method. The ParameterizeTestCaseRegistry class holds
+// a collection of pointers to the ParameterizedTestCaseInfo objects
+// and calls RegisterTests() on each of them when asked.
+class ParameterizedTestCaseInfoBase {
+ public:
+ virtual ~ParameterizedTestCaseInfoBase() {}
+
+ // Base part of test case name for display purposes.
+ virtual const string& GetTestCaseName() const = 0;
+ // Test case id to verify identity.
+ virtual TypeId GetTestCaseTypeId() const = 0;
+ // UnitTest class invokes this method to register tests in this
+ // test case right before running them in RUN_ALL_TESTS macro.
+ // This method should not be called more then once on any single
+ // instance of a ParameterizedTestCaseInfoBase derived class.
+ virtual void RegisterTests() = 0;
+
+ protected:
+ ParameterizedTestCaseInfoBase() {}
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfoBase);
+};
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// ParameterizedTestCaseInfo accumulates tests obtained from TEST_P
+// macro invocations for a particular test case and generators
+// obtained from INSTANTIATE_TEST_CASE_P macro invocations for that
+// test case. It registers tests with all values generated by all
+// generators when asked.
+template <class TestCase>
+class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase {
+ public:
+ // ParamType and GeneratorCreationFunc are private types but are required
+ // for declarations of public methods AddTestPattern() and
+ // AddTestCaseInstantiation().
+ typedef typename TestCase::ParamType ParamType;
+ // A function that returns an instance of appropriate generator type.
+ typedef ParamGenerator<ParamType>(GeneratorCreationFunc)();
+
+ explicit ParameterizedTestCaseInfo(const char* name)
+ : test_case_name_(name) {}
+
+ // Test case base name for display purposes.
+ virtual const string& GetTestCaseName() const { return test_case_name_; }
+ // Test case id to verify identity.
+ virtual TypeId GetTestCaseTypeId() const { return GetTypeId<TestCase>(); }
+ // TEST_P macro uses AddTestPattern() to record information
+ // about a single test in a LocalTestInfo structure.
+ // test_case_name is the base name of the test case (without invocation
+ // prefix). test_base_name is the name of an individual test without
+ // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is
+ // test case base name and DoBar is test base name.
+ void AddTestPattern(const char* test_case_name,
+ const char* test_base_name,
+ TestMetaFactoryBase<ParamType>* meta_factory) {
+ tests_.push_back(linked_ptr<TestInfo>(new TestInfo(test_case_name,
+ test_base_name,
+ meta_factory)));
+ }
+ // INSTANTIATE_TEST_CASE_P macro uses AddGenerator() to record information
+ // about a generator.
+ int AddTestCaseInstantiation(const string& instantiation_name,
+ GeneratorCreationFunc* func,
+ const char* /* file */,
+ int /* line */) {
+ instantiations_.push_back(::std::make_pair(instantiation_name, func));
+ return 0; // Return value used only to run this method in namespace scope.
+ }
+ // UnitTest class invokes this method to register tests in this test case
+ // test cases right before running tests in RUN_ALL_TESTS macro.
+ // This method should not be called more then once on any single
+ // instance of a ParameterizedTestCaseInfoBase derived class.
+ // UnitTest has a guard to prevent from calling this method more then once.
+ virtual void RegisterTests() {
+ for (typename TestInfoContainer::iterator test_it = tests_.begin();
+ test_it != tests_.end(); ++test_it) {
+ linked_ptr<TestInfo> test_info = *test_it;
+ for (typename InstantiationContainer::iterator gen_it =
+ instantiations_.begin(); gen_it != instantiations_.end();
+ ++gen_it) {
+ const string& instantiation_name = gen_it->first;
+ ParamGenerator<ParamType> generator((*gen_it->second)());
+
+ string test_case_name;
+ if ( !instantiation_name.empty() )
+ test_case_name = instantiation_name + "/";
+ test_case_name += test_info->test_case_base_name;
+
+ int i = 0;
+ for (typename ParamGenerator<ParamType>::iterator param_it =
+ generator.begin();
+ param_it != generator.end(); ++param_it, ++i) {
+ Message test_name_stream;
+ test_name_stream << test_info->test_base_name << "/" << i;
+ MakeAndRegisterTestInfo(
+ test_case_name.c_str(),
+ test_name_stream.GetString().c_str(),
+ NULL, // No type parameter.
+ PrintToString(*param_it).c_str(),
+ GetTestCaseTypeId(),
+ TestCase::SetUpTestCase,
+ TestCase::TearDownTestCase,
+ test_info->test_meta_factory->CreateTestFactory(*param_it));
+ } // for param_it
+ } // for gen_it
+ } // for test_it
+ } // RegisterTests
+
+ private:
+ // LocalTestInfo structure keeps information about a single test registered
+ // with TEST_P macro.
+ struct TestInfo {
+ TestInfo(const char* a_test_case_base_name,
+ const char* a_test_base_name,
+ TestMetaFactoryBase<ParamType>* a_test_meta_factory) :
+ test_case_base_name(a_test_case_base_name),
+ test_base_name(a_test_base_name),
+ test_meta_factory(a_test_meta_factory) {}
+
+ const string test_case_base_name;
+ const string test_base_name;
+ const scoped_ptr<TestMetaFactoryBase<ParamType> > test_meta_factory;
+ };
+ typedef ::std::vector<linked_ptr<TestInfo> > TestInfoContainer;
+ // Keeps pairs of <Instantiation name, Sequence generator creation function>
+ // received from INSTANTIATE_TEST_CASE_P macros.
+ typedef ::std::vector<std::pair<string, GeneratorCreationFunc*> >
+ InstantiationContainer;
+
+ const string test_case_name_;
+ TestInfoContainer tests_;
+ InstantiationContainer instantiations_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfo);
+}; // class ParameterizedTestCaseInfo
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// ParameterizedTestCaseRegistry contains a map of ParameterizedTestCaseInfoBase
+// classes accessed by test case names. TEST_P and INSTANTIATE_TEST_CASE_P
+// macros use it to locate their corresponding ParameterizedTestCaseInfo
+// descriptors.
+class ParameterizedTestCaseRegistry {
+ public:
+ ParameterizedTestCaseRegistry() {}
+ ~ParameterizedTestCaseRegistry() {
+ for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();
+ it != test_case_infos_.end(); ++it) {
+ delete *it;
+ }
+ }
+
+ // Looks up or creates and returns a structure containing information about
+ // tests and instantiations of a particular test case.
+ template <class TestCase>
+ ParameterizedTestCaseInfo<TestCase>* GetTestCasePatternHolder(
+ const char* test_case_name,
+ const char* file,
+ int line) {
+ ParameterizedTestCaseInfo<TestCase>* typed_test_info = NULL;
+ for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();
+ it != test_case_infos_.end(); ++it) {
+ if ((*it)->GetTestCaseName() == test_case_name) {
+ if ((*it)->GetTestCaseTypeId() != GetTypeId<TestCase>()) {
+ // Complain about incorrect usage of Google Test facilities
+ // and terminate the program since we cannot guaranty correct
+ // test case setup and tear-down in this case.
+ ReportInvalidTestCaseType(test_case_name, file, line);
+ posix::Abort();
+ } else {
+ // At this point we are sure that the object we found is of the same
+ // type we are looking for, so we downcast it to that type
+ // without further checks.
+ typed_test_info = CheckedDowncastToActualType<
+ ParameterizedTestCaseInfo<TestCase> >(*it);
+ }
+ break;
+ }
+ }
+ if (typed_test_info == NULL) {
+ typed_test_info = new ParameterizedTestCaseInfo<TestCase>(test_case_name);
+ test_case_infos_.push_back(typed_test_info);
+ }
+ return typed_test_info;
+ }
+ void RegisterTests() {
+ for (TestCaseInfoContainer::iterator it = test_case_infos_.begin();
+ it != test_case_infos_.end(); ++it) {
+ (*it)->RegisterTests();
+ }
+ }
+
+ private:
+ typedef ::std::vector<ParameterizedTestCaseInfoBase*> TestCaseInfoContainer;
+
+ TestCaseInfoContainer test_case_infos_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseRegistry);
+};
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_HAS_PARAM_TEST
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
diff --git a/test/fmw/gtest/include/gtest/internal/gtest-port.h b/test/fmw/gtest/include/gtest/internal/gtest-port.h
new file mode 100644
index 0000000..b772f4b
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/internal/gtest-port.h
@@ -0,0 +1,1948 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: wan@google.com (Zhanyong Wan)
+//
+// Low-level types and utilities for porting Google Test to various
+// platforms. They are subject to change without notice. DO NOT USE
+// THEM IN USER CODE.
+//
+// This file is fundamental to Google Test. All other Google Test source
+// files are expected to #include this. Therefore, it cannot #include
+// any other Google Test header.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
+
+// The user can define the following macros in the build script to
+// control Google Test's behavior. If the user doesn't define a macro
+// in this list, Google Test will define it.
+//
+// GTEST_HAS_CLONE - Define it to 1/0 to indicate that clone(2)
+// is/isn't available.
+// GTEST_HAS_EXCEPTIONS - Define it to 1/0 to indicate that exceptions
+// are enabled.
+// GTEST_HAS_GLOBAL_STRING - Define it to 1/0 to indicate that ::string
+// is/isn't available (some systems define
+// ::string, which is different to std::string).
+// GTEST_HAS_GLOBAL_WSTRING - Define it to 1/0 to indicate that ::string
+// is/isn't available (some systems define
+// ::wstring, which is different to std::wstring).
+// GTEST_HAS_POSIX_RE - Define it to 1/0 to indicate that POSIX regular
+// expressions are/aren't available.
+// GTEST_HAS_PTHREAD - Define it to 1/0 to indicate that <pthread.h>
+// is/isn't available.
+// GTEST_HAS_RTTI - Define it to 1/0 to indicate that RTTI is/isn't
+// enabled.
+// GTEST_HAS_STD_WSTRING - Define it to 1/0 to indicate that
+// std::wstring does/doesn't work (Google Test can
+// be used where std::wstring is unavailable).
+// GTEST_HAS_TR1_TUPLE - Define it to 1/0 to indicate tr1::tuple
+// is/isn't available.
+// GTEST_HAS_SEH - Define it to 1/0 to indicate whether the
+// compiler supports Microsoft's "Structured
+// Exception Handling".
+// GTEST_HAS_STREAM_REDIRECTION
+// - Define it to 1/0 to indicate whether the
+// platform supports I/O stream redirection using
+// dup() and dup2().
+// GTEST_USE_OWN_TR1_TUPLE - Define it to 1/0 to indicate whether Google
+// Test's own tr1 tuple implementation should be
+// used. Unused when the user sets
+// GTEST_HAS_TR1_TUPLE to 0.
+// GTEST_LANG_CXX11 - Define it to 1/0 to indicate that Google Test
+// is building in C++11/C++98 mode.
+// GTEST_LINKED_AS_SHARED_LIBRARY
+// - Define to 1 when compiling tests that use
+// Google Test as a shared library (known as
+// DLL on Windows).
+// GTEST_CREATE_SHARED_LIBRARY
+// - Define to 1 when compiling Google Test itself
+// as a shared library.
+
+// This header defines the following utilities:
+//
+// Macros indicating the current platform (defined to 1 if compiled on
+// the given platform; otherwise undefined):
+// GTEST_OS_AIX - IBM AIX
+// GTEST_OS_CYGWIN - Cygwin
+// GTEST_OS_HPUX - HP-UX
+// GTEST_OS_LINUX - Linux
+// GTEST_OS_LINUX_ANDROID - Google Android
+// GTEST_OS_MAC - Mac OS X
+// GTEST_OS_IOS - iOS
+// GTEST_OS_IOS_SIMULATOR - iOS simulator
+// GTEST_OS_NACL - Google Native Client (NaCl)
+// GTEST_OS_OPENBSD - OpenBSD
+// GTEST_OS_QNX - QNX
+// GTEST_OS_SOLARIS - Sun Solaris
+// GTEST_OS_SYMBIAN - Symbian
+// GTEST_OS_WINDOWS - Windows (Desktop, MinGW, or Mobile)
+// GTEST_OS_WINDOWS_DESKTOP - Windows Desktop
+// GTEST_OS_WINDOWS_MINGW - MinGW
+// GTEST_OS_WINDOWS_MOBILE - Windows Mobile
+// GTEST_OS_ZOS - z/OS
+//
+// Among the platforms, Cygwin, Linux, Max OS X, and Windows have the
+// most stable support. Since core members of the Google Test project
+// don't have access to other platforms, support for them may be less
+// stable. If you notice any problems on your platform, please notify
+// googletestframework@googlegroups.com (patches for fixing them are
+// even more welcome!).
+//
+// Note that it is possible that none of the GTEST_OS_* macros are defined.
+//
+// Macros indicating available Google Test features (defined to 1 if
+// the corresponding feature is supported; otherwise undefined):
+// GTEST_HAS_COMBINE - the Combine() function (for value-parameterized
+// tests)
+// GTEST_HAS_DEATH_TEST - death tests
+// GTEST_HAS_PARAM_TEST - value-parameterized tests
+// GTEST_HAS_TYPED_TEST - typed tests
+// GTEST_HAS_TYPED_TEST_P - type-parameterized tests
+// GTEST_USES_POSIX_RE - enhanced POSIX regex is used. Do not confuse with
+// GTEST_HAS_POSIX_RE (see above) which users can
+// define themselves.
+// GTEST_USES_SIMPLE_RE - our own simple regex is used;
+// the above two are mutually exclusive.
+// GTEST_CAN_COMPARE_NULL - accepts untyped NULL in EXPECT_EQ().
+//
+// Macros for basic C++ coding:
+// GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning.
+// GTEST_ATTRIBUTE_UNUSED_ - declares that a class' instances or a
+// variable don't have to be used.
+// GTEST_DISALLOW_ASSIGN_ - disables operator=.
+// GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=.
+// GTEST_MUST_USE_RESULT_ - declares that a function's result must be used.
+//
+// Synchronization:
+// Mutex, MutexLock, ThreadLocal, GetThreadCount()
+// - synchronization primitives.
+// GTEST_IS_THREADSAFE - defined to 1 to indicate that the above
+// synchronization primitives have real implementations
+// and Google Test is thread-safe; or 0 otherwise.
+//
+// Template meta programming:
+// is_pointer - as in TR1; needed on Symbian and IBM XL C/C++ only.
+// IteratorTraits - partial implementation of std::iterator_traits, which
+// is not available in libCstd when compiled with Sun C++.
+//
+// Smart pointers:
+// scoped_ptr - as in TR2.
+//
+// Regular expressions:
+// RE - a simple regular expression class using the POSIX
+// Extended Regular Expression syntax on UNIX-like
+// platforms, or a reduced regular exception syntax on
+// other platforms, including Windows.
+//
+// Logging:
+// GTEST_LOG_() - logs messages at the specified severity level.
+// LogToStderr() - directs all log messages to stderr.
+// FlushInfoLog() - flushes informational log messages.
+//
+// Stdout and stderr capturing:
+// CaptureStdout() - starts capturing stdout.
+// GetCapturedStdout() - stops capturing stdout and returns the captured
+// string.
+// CaptureStderr() - starts capturing stderr.
+// GetCapturedStderr() - stops capturing stderr and returns the captured
+// string.
+//
+// Integer types:
+// TypeWithSize - maps an integer to a int type.
+// Int32, UInt32, Int64, UInt64, TimeInMillis
+// - integers of known sizes.
+// BiggestInt - the biggest signed integer type.
+//
+// Command-line utilities:
+// GTEST_FLAG() - references a flag.
+// GTEST_DECLARE_*() - declares a flag.
+// GTEST_DEFINE_*() - defines a flag.
+// GetInjectableArgvs() - returns the command line as a vector of strings.
+//
+// Environment variable utilities:
+// GetEnv() - gets the value of an environment variable.
+// BoolFromGTestEnv() - parses a bool environment variable.
+// Int32FromGTestEnv() - parses an Int32 environment variable.
+// StringFromGTestEnv() - parses a string environment variable.
+
+#include <ctype.h> // for isspace, etc
+#include <stddef.h> // for ptrdiff_t
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#ifndef _WIN32_WCE
+# include <sys/types.h>
+# include <sys/stat.h>
+#endif // !_WIN32_WCE
+
+#if defined __APPLE__
+# include <AvailabilityMacros.h>
+# include <TargetConditionals.h>
+#endif
+
+#include <iostream> // NOLINT
+#include <sstream> // NOLINT
+#include <string> // NOLINT
+
+#define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com"
+#define GTEST_FLAG_PREFIX_ "gtest_"
+#define GTEST_FLAG_PREFIX_DASH_ "gtest-"
+#define GTEST_FLAG_PREFIX_UPPER_ "GTEST_"
+#define GTEST_NAME_ "Google Test"
+#define GTEST_PROJECT_URL_ "http://code.google.com/p/googletest/"
+
+// Determines the version of gcc that is used to compile this.
+#ifdef __GNUC__
+// 40302 means version 4.3.2.
+# define GTEST_GCC_VER_ \
+ (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
+#endif // __GNUC__
+
+// Determines the platform on which Google Test is compiled.
+#ifdef __CYGWIN__
+# define GTEST_OS_CYGWIN 1
+#elif defined __SYMBIAN32__
+# define GTEST_OS_SYMBIAN 1
+#elif defined _WIN32
+# define GTEST_OS_WINDOWS 1
+# ifdef _WIN32_WCE
+# define GTEST_OS_WINDOWS_MOBILE 1
+# elif defined(__MINGW__) || defined(__MINGW32__)
+# define GTEST_OS_WINDOWS_MINGW 1
+# else
+# define GTEST_OS_WINDOWS_DESKTOP 1
+# endif // _WIN32_WCE
+#elif defined __APPLE__
+# define GTEST_OS_MAC 1
+# if TARGET_OS_IPHONE
+# define GTEST_OS_IOS 1
+# if TARGET_IPHONE_SIMULATOR
+# define GTEST_OS_IOS_SIMULATOR 1
+# endif
+# endif
+#elif defined __linux__
+# define GTEST_OS_LINUX 1
+# if defined __ANDROID__
+# define GTEST_OS_LINUX_ANDROID 1
+# endif
+#elif defined __MVS__
+# define GTEST_OS_ZOS 1
+#elif defined(__sun) && defined(__SVR4)
+# define GTEST_OS_SOLARIS 1
+#elif defined(_AIX)
+# define GTEST_OS_AIX 1
+#elif defined(__hpux)
+# define GTEST_OS_HPUX 1
+#elif defined __native_client__
+# define GTEST_OS_NACL 1
+#elif defined __OpenBSD__
+# define GTEST_OS_OPENBSD 1
+#elif defined __QNX__
+# define GTEST_OS_QNX 1
+#endif // __CYGWIN__
+
+#ifndef GTEST_LANG_CXX11
+// gcc and clang define __GXX_EXPERIMENTAL_CXX0X__ when
+// -std={c,gnu}++{0x,11} is passed. The C++11 standard specifies a
+// value for __cplusplus, and recent versions of clang, gcc, and
+// probably other compilers set that too in C++11 mode.
+# if __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L
+// Compiling in at least C++11 mode.
+# define GTEST_LANG_CXX11 1
+# else
+# define GTEST_LANG_CXX11 0
+# endif
+#endif
+
+// Brings in definitions for functions used in the testing::internal::posix
+// namespace (read, write, close, chdir, isatty, stat). We do not currently
+// use them on Windows Mobile.
+#if !GTEST_OS_WINDOWS
+// This assumes that non-Windows OSes provide unistd.h. For OSes where this
+// is not the case, we need to include headers that provide the functions
+// mentioned above.
+# include <unistd.h>
+# include <strings.h>
+#elif !GTEST_OS_WINDOWS_MOBILE
+# include <direct.h>
+# include <io.h>
+#endif
+
+#if GTEST_OS_LINUX_ANDROID
+// Used to define __ANDROID_API__ matching the target NDK API level.
+# include <android/api-level.h> // NOLINT
+#endif
+
+// Defines this to true iff Google Test can use POSIX regular expressions.
+#ifndef GTEST_HAS_POSIX_RE
+# if GTEST_OS_LINUX_ANDROID
+// On Android, <regex.h> is only available starting with Gingerbread.
+# define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9)
+# else
+# define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS)
+# endif
+#endif
+
+#if GTEST_HAS_POSIX_RE
+
+// On some platforms, <regex.h> needs someone to define size_t, and
+// won't compile otherwise. We can #include it here as we already
+// included <stdlib.h>, which is guaranteed to define size_t through
+// <stddef.h>.
+# include <regex.h> // NOLINT
+
+# define GTEST_USES_POSIX_RE 1
+
+#elif GTEST_OS_WINDOWS
+
+// <regex.h> is not available on Windows. Use our own simple regex
+// implementation instead.
+# define GTEST_USES_SIMPLE_RE 1
+
+#else
+
+// <regex.h> may not be available on this platform. Use our own
+// simple regex implementation instead.
+# define GTEST_USES_SIMPLE_RE 1
+
+#endif // GTEST_HAS_POSIX_RE
+
+#ifndef GTEST_HAS_EXCEPTIONS
+// The user didn't tell us whether exceptions are enabled, so we need
+// to figure it out.
+# if defined(_MSC_VER) || defined(__BORLANDC__)
+// MSVC's and C++Builder's implementations of the STL use the _HAS_EXCEPTIONS
+// macro to enable exceptions, so we'll do the same.
+// Assumes that exceptions are enabled by default.
+# ifndef _HAS_EXCEPTIONS
+# define _HAS_EXCEPTIONS 1
+# endif // _HAS_EXCEPTIONS
+# define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS
+# elif defined(__GNUC__) && __EXCEPTIONS
+// gcc defines __EXCEPTIONS to 1 iff exceptions are enabled.
+# define GTEST_HAS_EXCEPTIONS 1
+# elif defined(__SUNPRO_CC)
+// Sun Pro CC supports exceptions. However, there is no compile-time way of
+// detecting whether they are enabled or not. Therefore, we assume that
+// they are enabled unless the user tells us otherwise.
+# define GTEST_HAS_EXCEPTIONS 1
+# elif defined(__IBMCPP__) && __EXCEPTIONS
+// xlC defines __EXCEPTIONS to 1 iff exceptions are enabled.
+# define GTEST_HAS_EXCEPTIONS 1
+# elif defined(__HP_aCC)
+// Exception handling is in effect by default in HP aCC compiler. It has to
+// be turned of by +noeh compiler option if desired.
+# define GTEST_HAS_EXCEPTIONS 1
+# else
+// For other compilers, we assume exceptions are disabled to be
+// conservative.
+# define GTEST_HAS_EXCEPTIONS 0
+# endif // defined(_MSC_VER) || defined(__BORLANDC__)
+#endif // GTEST_HAS_EXCEPTIONS
+
+#if !defined(GTEST_HAS_STD_STRING)
+// Even though we don't use this macro any longer, we keep it in case
+// some clients still depend on it.
+# define GTEST_HAS_STD_STRING 1
+#elif !GTEST_HAS_STD_STRING
+// The user told us that ::std::string isn't available.
+# error "Google Test cannot be used where ::std::string isn't available."
+#endif // !defined(GTEST_HAS_STD_STRING)
+
+#ifndef GTEST_HAS_GLOBAL_STRING
+// The user didn't tell us whether ::string is available, so we need
+// to figure it out.
+
+# define GTEST_HAS_GLOBAL_STRING 0
+
+#endif // GTEST_HAS_GLOBAL_STRING
+
+#ifndef GTEST_HAS_STD_WSTRING
+// The user didn't tell us whether ::std::wstring is available, so we need
+// to figure it out.
+// TODO(wan@google.com): uses autoconf to detect whether ::std::wstring
+// is available.
+
+// Cygwin 1.7 and below doesn't support ::std::wstring.
+// Solaris' libc++ doesn't support it either. Android has
+// no support for it at least as recent as Froyo (2.2).
+# define GTEST_HAS_STD_WSTRING \
+ (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS))
+
+#endif // GTEST_HAS_STD_WSTRING
+
+#ifndef GTEST_HAS_GLOBAL_WSTRING
+// The user didn't tell us whether ::wstring is available, so we need
+// to figure it out.
+# define GTEST_HAS_GLOBAL_WSTRING \
+ (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING)
+#endif // GTEST_HAS_GLOBAL_WSTRING
+
+// Determines whether RTTI is available.
+#ifndef GTEST_HAS_RTTI
+// The user didn't tell us whether RTTI is enabled, so we need to
+// figure it out.
+
+# ifdef _MSC_VER
+
+# ifdef _CPPRTTI // MSVC defines this macro iff RTTI is enabled.
+# define GTEST_HAS_RTTI 1
+# else
+# define GTEST_HAS_RTTI 0
+# endif
+
+// Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled.
+# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302)
+
+# ifdef __GXX_RTTI
+// When building against STLport with the Android NDK and with
+// -frtti -fno-exceptions, the build fails at link time with undefined
+// references to __cxa_bad_typeid. Note sure if STL or toolchain bug,
+// so disable RTTI when detected.
+# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \
+ !defined(__EXCEPTIONS)
+# define GTEST_HAS_RTTI 0
+# else
+# define GTEST_HAS_RTTI 1
+# endif // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS
+# else
+# define GTEST_HAS_RTTI 0
+# endif // __GXX_RTTI
+
+// Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends
+// using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the
+// first version with C++ support.
+# elif defined(__clang__)
+
+# define GTEST_HAS_RTTI __has_feature(cxx_rtti)
+
+// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if
+// both the typeid and dynamic_cast features are present.
+# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900)
+
+# ifdef __RTTI_ALL__
+# define GTEST_HAS_RTTI 1
+# else
+# define GTEST_HAS_RTTI 0
+# endif
+
+# else
+
+// For all other compilers, we assume RTTI is enabled.
+# define GTEST_HAS_RTTI 1
+
+# endif // _MSC_VER
+
+#endif // GTEST_HAS_RTTI
+
+// It's this header's responsibility to #include <typeinfo> when RTTI
+// is enabled.
+#if GTEST_HAS_RTTI
+# include <typeinfo>
+#endif
+
+// Determines whether Google Test can use the pthreads library.
+#ifndef GTEST_HAS_PTHREAD
+// The user didn't tell us explicitly, so we assume pthreads support is
+// available on Linux and Mac.
+//
+// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0
+// to your compiler flags.
+# define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX \
+ || GTEST_OS_QNX)
+#endif // GTEST_HAS_PTHREAD
+
+#if GTEST_HAS_PTHREAD
+// gtest-port.h guarantees to #include <pthread.h> when GTEST_HAS_PTHREAD is
+// true.
+# include <pthread.h> // NOLINT
+
+// For timespec and nanosleep, used below.
+# include <time.h> // NOLINT
+#endif
+
+// Determines whether Google Test can use tr1/tuple. You can define
+// this macro to 0 to prevent Google Test from using tuple (any
+// feature depending on tuple with be disabled in this mode).
+#ifndef GTEST_HAS_TR1_TUPLE
+# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR)
+// STLport, provided with the Android NDK, has neither <tr1/tuple> or <tuple>.
+# define GTEST_HAS_TR1_TUPLE 0
+# else
+// The user didn't tell us not to do it, so we assume it's OK.
+# define GTEST_HAS_TR1_TUPLE 1
+# endif
+#endif // GTEST_HAS_TR1_TUPLE
+
+// Determines whether Google Test's own tr1 tuple implementation
+// should be used.
+#ifndef GTEST_USE_OWN_TR1_TUPLE
+// The user didn't tell us, so we need to figure it out.
+
+// We use our own TR1 tuple if we aren't sure the user has an
+// implementation of it already. At this time, libstdc++ 4.0.0+ and
+// MSVC 2010 are the only mainstream standard libraries that come
+// with a TR1 tuple implementation. NVIDIA's CUDA NVCC compiler
+// pretends to be GCC by defining __GNUC__ and friends, but cannot
+// compile GCC's tuple implementation. MSVC 2008 (9.0) provides TR1
+// tuple in a 323 MB Feature Pack download, which we cannot assume the
+// user has. QNX's QCC compiler is a modified GCC but it doesn't
+// support TR1 tuple. libc++ only provides std::tuple, in C++11 mode,
+// and it can be used with some compilers that define __GNUC__.
+# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) \
+ && !GTEST_OS_QNX && !defined(_LIBCPP_VERSION)) || _MSC_VER >= 1600
+# define GTEST_ENV_HAS_TR1_TUPLE_ 1
+# endif
+
+// C++11 specifies that <tuple> provides std::tuple. Use that if gtest is used
+// in C++11 mode and libstdc++ isn't very old (binaries targeting OS X 10.6
+// can build with clang but need to use gcc4.2's libstdc++).
+# if GTEST_LANG_CXX11 && (!defined(__GLIBCXX__) || __GLIBCXX__ > 20110325)
+# define GTEST_ENV_HAS_STD_TUPLE_ 1
+# endif
+
+# if GTEST_ENV_HAS_TR1_TUPLE_ || GTEST_ENV_HAS_STD_TUPLE_
+# define GTEST_USE_OWN_TR1_TUPLE 0
+# else
+# define GTEST_USE_OWN_TR1_TUPLE 1
+# endif
+
+#endif // GTEST_USE_OWN_TR1_TUPLE
+
+// To avoid conditional compilation everywhere, we make it
+// gtest-port.h's responsibility to #include the header implementing
+// tr1/tuple.
+#if GTEST_HAS_TR1_TUPLE
+
+# if GTEST_USE_OWN_TR1_TUPLE
+# include "gtest/internal/gtest-tuple.h"
+# elif GTEST_ENV_HAS_STD_TUPLE_
+# include <tuple>
+// C++11 puts its tuple into the ::std namespace rather than
+// ::std::tr1. gtest expects tuple to live in ::std::tr1, so put it there.
+// This causes undefined behavior, but supported compilers react in
+// the way we intend.
+namespace std {
+namespace tr1 {
+using ::std::get;
+using ::std::make_tuple;
+using ::std::tuple;
+using ::std::tuple_element;
+using ::std::tuple_size;
+}
+}
+
+# elif GTEST_OS_SYMBIAN
+
+// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to
+// use STLport's tuple implementation, which unfortunately doesn't
+// work as the copy of STLport distributed with Symbian is incomplete.
+// By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to
+// use its own tuple implementation.
+# ifdef BOOST_HAS_TR1_TUPLE
+# undef BOOST_HAS_TR1_TUPLE
+# endif // BOOST_HAS_TR1_TUPLE
+
+// This prevents <boost/tr1/detail/config.hpp>, which defines
+// BOOST_HAS_TR1_TUPLE, from being #included by Boost's <tuple>.
+# define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED
+# include <tuple>
+
+# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000)
+// GCC 4.0+ implements tr1/tuple in the <tr1/tuple> header. This does
+// not conform to the TR1 spec, which requires the header to be <tuple>.
+
+# if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
+// Until version 4.3.2, gcc has a bug that causes <tr1/functional>,
+// which is #included by <tr1/tuple>, to not compile when RTTI is
+// disabled. _TR1_FUNCTIONAL is the header guard for
+// <tr1/functional>. Hence the following #define is a hack to prevent
+// <tr1/functional> from being included.
+# define _TR1_FUNCTIONAL 1
+# include <tr1/tuple>
+# undef _TR1_FUNCTIONAL // Allows the user to #include
+ // <tr1/functional> if he chooses to.
+# else
+# include <tr1/tuple> // NOLINT
+# endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
+
+# else
+// If the compiler is not GCC 4.0+, we assume the user is using a
+// spec-conforming TR1 implementation.
+# include <tuple> // NOLINT
+# endif // GTEST_USE_OWN_TR1_TUPLE
+
+#endif // GTEST_HAS_TR1_TUPLE
+
+// Determines whether clone(2) is supported.
+// Usually it will only be available on Linux, excluding
+// Linux on the Itanium architecture.
+// Also see http://linux.die.net/man/2/clone.
+#ifndef GTEST_HAS_CLONE
+// The user didn't tell us, so we need to figure it out.
+
+# if GTEST_OS_LINUX && !defined(__ia64__)
+# if GTEST_OS_LINUX_ANDROID
+// On Android, clone() is only available on ARM starting with Gingerbread.
+# if defined(__arm__) && __ANDROID_API__ >= 9
+# define GTEST_HAS_CLONE 1
+# else
+# define GTEST_HAS_CLONE 0
+# endif
+# else
+# define GTEST_HAS_CLONE 1
+# endif
+# else
+# define GTEST_HAS_CLONE 0
+# endif // GTEST_OS_LINUX && !defined(__ia64__)
+
+#endif // GTEST_HAS_CLONE
+
+// Determines whether to support stream redirection. This is used to test
+// output correctness and to implement death tests.
+#ifndef GTEST_HAS_STREAM_REDIRECTION
+// By default, we assume that stream redirection is supported on all
+// platforms except known mobile ones.
+# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN
+# define GTEST_HAS_STREAM_REDIRECTION 0
+# else
+# define GTEST_HAS_STREAM_REDIRECTION 1
+# endif // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN
+#endif // GTEST_HAS_STREAM_REDIRECTION
+
+// Determines whether to support death tests.
+// Google Test does not support death tests for VC 7.1 and earlier as
+// abort() in a VC 7.1 application compiled as GUI in debug config
+// pops up a dialog window that cannot be suppressed programmatically.
+#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \
+ (GTEST_OS_MAC && !GTEST_OS_IOS) || GTEST_OS_IOS_SIMULATOR || \
+ (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \
+ GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \
+ GTEST_OS_OPENBSD || GTEST_OS_QNX)
+# define GTEST_HAS_DEATH_TEST 1
+# include <vector> // NOLINT
+#endif
+
+// We don't support MSVC 7.1 with exceptions disabled now. Therefore
+// all the compilers we care about are adequate for supporting
+// value-parameterized tests.
+#define GTEST_HAS_PARAM_TEST 1
+
+// Determines whether to support type-driven tests.
+
+// Typed tests need <typeinfo> and variadic macros, which GCC, VC++ 8.0,
+// Sun Pro CC, IBM Visual Age, and HP aCC support.
+#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || \
+ defined(__IBMCPP__) || defined(__HP_aCC)
+# define GTEST_HAS_TYPED_TEST 1
+# define GTEST_HAS_TYPED_TEST_P 1
+#endif
+
+// Determines whether to support Combine(). This only makes sense when
+// value-parameterized tests are enabled. The implementation doesn't
+// work on Sun Studio since it doesn't understand templated conversion
+// operators.
+#if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE && !defined(__SUNPRO_CC)
+# define GTEST_HAS_COMBINE 1
+#endif
+
+// Determines whether the system compiler uses UTF-16 for encoding wide strings.
+#define GTEST_WIDE_STRING_USES_UTF16_ \
+ (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX)
+
+// Determines whether test results can be streamed to a socket.
+#if GTEST_OS_LINUX
+# define GTEST_CAN_STREAM_RESULTS_ 1
+#endif
+
+// Defines some utility macros.
+
+// The GNU compiler emits a warning if nested "if" statements are followed by
+// an "else" statement and braces are not used to explicitly disambiguate the
+// "else" binding. This leads to problems with code like:
+//
+// if (gate)
+// ASSERT_*(condition) << "Some message";
+//
+// The "switch (0) case 0:" idiom is used to suppress this.
+#ifdef __INTEL_COMPILER
+# define GTEST_AMBIGUOUS_ELSE_BLOCKER_
+#else
+# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT
+#endif
+
+// Use this annotation at the end of a struct/class definition to
+// prevent the compiler from optimizing away instances that are never
+// used. This is useful when all interesting logic happens inside the
+// c'tor and / or d'tor. Example:
+//
+// struct Foo {
+// Foo() { ... }
+// } GTEST_ATTRIBUTE_UNUSED_;
+//
+// Also use it after a variable or parameter declaration to tell the
+// compiler the variable/parameter does not have to be used.
+#if defined(__GNUC__) && !defined(COMPILER_ICC)
+# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
+#else
+# define GTEST_ATTRIBUTE_UNUSED_
+#endif
+
+// A macro to disallow operator=
+// This should be used in the private: declarations for a class.
+#define GTEST_DISALLOW_ASSIGN_(type)\
+ void operator=(type const &)
+
+// A macro to disallow copy constructor and operator=
+// This should be used in the private: declarations for a class.
+#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)\
+ type(type const &);\
+ GTEST_DISALLOW_ASSIGN_(type)
+
+// Tell the compiler to warn about unused return values for functions declared
+// with this macro. The macro should be used on function declarations
+// following the argument list:
+//
+// Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_;
+#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC)
+# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result))
+#else
+# define GTEST_MUST_USE_RESULT_
+#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC
+
+// Determine whether the compiler supports Microsoft's Structured Exception
+// Handling. This is supported by several Windows compilers but generally
+// does not exist on any other system.
+#ifndef GTEST_HAS_SEH
+// The user didn't tell us, so we need to figure it out.
+
+# if defined(_MSC_VER) || defined(__BORLANDC__)
+// These two compilers are known to support SEH.
+# define GTEST_HAS_SEH 1
+# else
+// Assume no SEH.
+# define GTEST_HAS_SEH 0
+# endif
+
+#endif // GTEST_HAS_SEH
+
+#ifdef _MSC_VER
+
+# if GTEST_LINKED_AS_SHARED_LIBRARY
+# define GTEST_API_ __declspec(dllimport)
+# elif GTEST_CREATE_SHARED_LIBRARY
+# define GTEST_API_ __declspec(dllexport)
+# endif
+
+#endif // _MSC_VER
+
+#ifndef GTEST_API_
+# define GTEST_API_
+#endif
+
+#ifdef __GNUC__
+// Ask the compiler to never inline a given function.
+# define GTEST_NO_INLINE_ __attribute__((noinline))
+#else
+# define GTEST_NO_INLINE_
+#endif
+
+// _LIBCPP_VERSION is defined by the libc++ library from the LLVM project.
+#if defined(__GLIBCXX__) || defined(_LIBCPP_VERSION)
+# define GTEST_HAS_CXXABI_H_ 1
+#else
+# define GTEST_HAS_CXXABI_H_ 0
+#endif
+
+namespace testing {
+
+class Message;
+
+namespace internal {
+
+// A secret type that Google Test users don't know about. It has no
+// definition on purpose. Therefore it's impossible to create a
+// Secret object, which is what we want.
+class Secret;
+
+// The GTEST_COMPILE_ASSERT_ macro can be used to verify that a compile time
+// expression is true. For example, you could use it to verify the
+// size of a static array:
+//
+// GTEST_COMPILE_ASSERT_(ARRAYSIZE(content_type_names) == CONTENT_NUM_TYPES,
+// content_type_names_incorrect_size);
+//
+// or to make sure a struct is smaller than a certain size:
+//
+// GTEST_COMPILE_ASSERT_(sizeof(foo) < 128, foo_too_large);
+//
+// The second argument to the macro is the name of the variable. If
+// the expression is false, most compilers will issue a warning/error
+// containing the name of the variable.
+
+template <bool>
+struct CompileAssert {
+};
+
+#define GTEST_COMPILE_ASSERT_(expr, msg) \
+ typedef ::testing::internal::CompileAssert<(static_cast<bool>(expr))> \
+ msg[static_cast<bool>(expr) ? 1 : -1] GTEST_ATTRIBUTE_UNUSED_
+
+// Implementation details of GTEST_COMPILE_ASSERT_:
+//
+// - GTEST_COMPILE_ASSERT_ works by defining an array type that has -1
+// elements (and thus is invalid) when the expression is false.
+//
+// - The simpler definition
+//
+// #define GTEST_COMPILE_ASSERT_(expr, msg) typedef char msg[(expr) ? 1 : -1]
+//
+// does not work, as gcc supports variable-length arrays whose sizes
+// are determined at run-time (this is gcc's extension and not part
+// of the C++ standard). As a result, gcc fails to reject the
+// following code with the simple definition:
+//
+// int foo;
+// GTEST_COMPILE_ASSERT_(foo, msg); // not supposed to compile as foo is
+// // not a compile-time constant.
+//
+// - By using the type CompileAssert<(bool(expr))>, we ensures that
+// expr is a compile-time constant. (Template arguments must be
+// determined at compile-time.)
+//
+// - The outter parentheses in CompileAssert<(bool(expr))> are necessary
+// to work around a bug in gcc 3.4.4 and 4.0.1. If we had written
+//
+// CompileAssert<bool(expr)>
+//
+// instead, these compilers will refuse to compile
+//
+// GTEST_COMPILE_ASSERT_(5 > 0, some_message);
+//
+// (They seem to think the ">" in "5 > 0" marks the end of the
+// template argument list.)
+//
+// - The array size is (bool(expr) ? 1 : -1), instead of simply
+//
+// ((expr) ? 1 : -1).
+//
+// This is to avoid running into a bug in MS VC 7.1, which
+// causes ((0.0) ? 1 : -1) to incorrectly evaluate to 1.
+
+// StaticAssertTypeEqHelper is used by StaticAssertTypeEq defined in gtest.h.
+//
+// This template is declared, but intentionally undefined.
+template <typename T1, typename T2>
+struct StaticAssertTypeEqHelper;
+
+template <typename T>
+struct StaticAssertTypeEqHelper<T, T> {};
+
+#if GTEST_HAS_GLOBAL_STRING
+typedef ::string string;
+#else
+typedef ::std::string string;
+#endif // GTEST_HAS_GLOBAL_STRING
+
+#if GTEST_HAS_GLOBAL_WSTRING
+typedef ::wstring wstring;
+#elif GTEST_HAS_STD_WSTRING
+typedef ::std::wstring wstring;
+#endif // GTEST_HAS_GLOBAL_WSTRING
+
+// A helper for suppressing warnings on constant condition. It just
+// returns 'condition'.
+GTEST_API_ bool IsTrue(bool condition);
+
+// Defines scoped_ptr.
+
+// This implementation of scoped_ptr is PARTIAL - it only contains
+// enough stuff to satisfy Google Test's need.
+template <typename T>
+class scoped_ptr {
+ public:
+ typedef T element_type;
+
+ explicit scoped_ptr(T* p = NULL) : ptr_(p) {}
+ ~scoped_ptr() { reset(); }
+
+ T& operator*() const { return *ptr_; }
+ T* operator->() const { return ptr_; }
+ T* get() const { return ptr_; }
+
+ T* release() {
+ T* const ptr = ptr_;
+ ptr_ = NULL;
+ return ptr;
+ }
+
+ void reset(T* p = NULL) {
+ if (p != ptr_) {
+ if (IsTrue(sizeof(T) > 0)) { // Makes sure T is a complete type.
+ delete ptr_;
+ }
+ ptr_ = p;
+ }
+ }
+
+ private:
+ T* ptr_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(scoped_ptr);
+};
+
+// Defines RE.
+
+// A simple C++ wrapper for <regex.h>. It uses the POSIX Extended
+// Regular Expression syntax.
+class GTEST_API_ RE {
+ public:
+ // A copy constructor is required by the Standard to initialize object
+ // references from r-values.
+ RE(const RE& other) { Init(other.pattern()); }
+
+ // Constructs an RE from a string.
+ RE(const ::std::string& regex) { Init(regex.c_str()); } // NOLINT
+
+#if GTEST_HAS_GLOBAL_STRING
+
+ RE(const ::string& regex) { Init(regex.c_str()); } // NOLINT
+
+#endif // GTEST_HAS_GLOBAL_STRING
+
+ RE(const char* regex) { Init(regex); } // NOLINT
+ ~RE();
+
+ // Returns the string representation of the regex.
+ const char* pattern() const { return pattern_; }
+
+ // FullMatch(str, re) returns true iff regular expression re matches
+ // the entire str.
+ // PartialMatch(str, re) returns true iff regular expression re
+ // matches a substring of str (including str itself).
+ //
+ // TODO(wan@google.com): make FullMatch() and PartialMatch() work
+ // when str contains NUL characters.
+ static bool FullMatch(const ::std::string& str, const RE& re) {
+ return FullMatch(str.c_str(), re);
+ }
+ static bool PartialMatch(const ::std::string& str, const RE& re) {
+ return PartialMatch(str.c_str(), re);
+ }
+
+#if GTEST_HAS_GLOBAL_STRING
+
+ static bool FullMatch(const ::string& str, const RE& re) {
+ return FullMatch(str.c_str(), re);
+ }
+ static bool PartialMatch(const ::string& str, const RE& re) {
+ return PartialMatch(str.c_str(), re);
+ }
+
+#endif // GTEST_HAS_GLOBAL_STRING
+
+ static bool FullMatch(const char* str, const RE& re);
+ static bool PartialMatch(const char* str, const RE& re);
+
+ private:
+ void Init(const char* regex);
+
+ // We use a const char* instead of an std::string, as Google Test used to be
+ // used where std::string is not available. TODO(wan@google.com): change to
+ // std::string.
+ const char* pattern_;
+ bool is_valid_;
+
+#if GTEST_USES_POSIX_RE
+
+ regex_t full_regex_; // For FullMatch().
+ regex_t partial_regex_; // For PartialMatch().
+
+#else // GTEST_USES_SIMPLE_RE
+
+ const char* full_pattern_; // For FullMatch();
+
+#endif
+
+ GTEST_DISALLOW_ASSIGN_(RE);
+};
+
+// Formats a source file path and a line number as they would appear
+// in an error message from the compiler used to compile this code.
+GTEST_API_ ::std::string FormatFileLocation(const char* file, int line);
+
+// Formats a file location for compiler-independent XML output.
+// Although this function is not platform dependent, we put it next to
+// FormatFileLocation in order to contrast the two functions.
+GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file,
+ int line);
+
+// Defines logging utilities:
+// GTEST_LOG_(severity) - logs messages at the specified severity level. The
+// message itself is streamed into the macro.
+// LogToStderr() - directs all log messages to stderr.
+// FlushInfoLog() - flushes informational log messages.
+
+enum GTestLogSeverity {
+ GTEST_INFO,
+ GTEST_WARNING,
+ GTEST_ERROR,
+ GTEST_FATAL
+};
+
+// Formats log entry severity, provides a stream object for streaming the
+// log message, and terminates the message with a newline when going out of
+// scope.
+class GTEST_API_ GTestLog {
+ public:
+ GTestLog(GTestLogSeverity severity, const char* file, int line);
+
+ // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
+ ~GTestLog();
+
+ ::std::ostream& GetStream() { return ::std::cerr; }
+
+ private:
+ const GTestLogSeverity severity_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog);
+};
+
+#define GTEST_LOG_(severity) \
+ ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \
+ __FILE__, __LINE__).GetStream()
+
+inline void LogToStderr() {}
+inline void FlushInfoLog() { fflush(NULL); }
+
+// INTERNAL IMPLEMENTATION - DO NOT USE.
+//
+// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition
+// is not satisfied.
+// Synopsys:
+// GTEST_CHECK_(boolean_condition);
+// or
+// GTEST_CHECK_(boolean_condition) << "Additional message";
+//
+// This checks the condition and if the condition is not satisfied
+// it prints message about the condition violation, including the
+// condition itself, plus additional message streamed into it, if any,
+// and then it aborts the program. It aborts the program irrespective of
+// whether it is built in the debug mode or not.
+#define GTEST_CHECK_(condition) \
+ GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
+ if (::testing::internal::IsTrue(condition)) \
+ ; \
+ else \
+ GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
+
+// An all-mode assert to verify that the given POSIX-style function
+// call returns 0 (indicating success). Known limitation: this
+// doesn't expand to a balanced 'if' statement, so enclose the macro
+// in {} if you need to use it as the only statement in an 'if'
+// branch.
+#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \
+ if (const int gtest_error = (posix_call)) \
+ GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
+ << gtest_error
+
+// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
+//
+// Use ImplicitCast_ as a safe version of static_cast for upcasting in
+// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a
+// const Foo*). When you use ImplicitCast_, the compiler checks that
+// the cast is safe. Such explicit ImplicitCast_s are necessary in
+// surprisingly many situations where C++ demands an exact type match
+// instead of an argument type convertable to a target type.
+//
+// The syntax for using ImplicitCast_ is the same as for static_cast:
+//
+// ImplicitCast_<ToType>(expr)
+//
+// ImplicitCast_ would have been part of the C++ standard library,
+// but the proposal was submitted too late. It will probably make
+// its way into the language in the future.
+//
+// This relatively ugly name is intentional. It prevents clashes with
+// similar functions users may have (e.g., implicit_cast). The internal
+// namespace alone is not enough because the function can be found by ADL.
+template<typename To>
+inline To ImplicitCast_(To x) { return x; }
+
+// When you upcast (that is, cast a pointer from type Foo to type
+// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts
+// always succeed. When you downcast (that is, cast a pointer from
+// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because
+// how do you know the pointer is really of type SubclassOfFoo? It
+// could be a bare Foo, or of type DifferentSubclassOfFoo. Thus,
+// when you downcast, you should use this macro. In debug mode, we
+// use dynamic_cast<> to double-check the downcast is legal (we die
+// if it's not). In normal mode, we do the efficient static_cast<>
+// instead. Thus, it's important to test in debug mode to make sure
+// the cast is legal!
+// This is the only place in the code we should use dynamic_cast<>.
+// In particular, you SHOULDN'T be using dynamic_cast<> in order to
+// do RTTI (eg code like this:
+// if (dynamic_cast<Subclass1>(foo)) HandleASubclass1Object(foo);
+// if (dynamic_cast<Subclass2>(foo)) HandleASubclass2Object(foo);
+// You should design the code some other way not to need this.
+//
+// This relatively ugly name is intentional. It prevents clashes with
+// similar functions users may have (e.g., down_cast). The internal
+// namespace alone is not enough because the function can be found by ADL.
+template<typename To, typename From> // use like this: DownCast_<T*>(foo);
+inline To DownCast_(From* f) { // so we only accept pointers
+ // Ensures that To is a sub-type of From *. This test is here only
+ // for compile-time type checking, and has no overhead in an
+ // optimized build at run-time, as it will be optimized away
+ // completely.
+ if (false) {
+ const To to = NULL;
+ ::testing::internal::ImplicitCast_<From*>(to);
+ }
+
+#if GTEST_HAS_RTTI
+ // RTTI: debug mode only!
+ GTEST_CHECK_(f == NULL || dynamic_cast<To>(f) != NULL);
+#endif
+ return static_cast<To>(f);
+}
+
+// Downcasts the pointer of type Base to Derived.
+// Derived must be a subclass of Base. The parameter MUST
+// point to a class of type Derived, not any subclass of it.
+// When RTTI is available, the function performs a runtime
+// check to enforce this.
+template <class Derived, class Base>
+Derived* CheckedDowncastToActualType(Base* base) {
+#if GTEST_HAS_RTTI
+ GTEST_CHECK_(typeid(*base) == typeid(Derived));
+ return dynamic_cast<Derived*>(base); // NOLINT
+#else
+ return static_cast<Derived*>(base); // Poor man's downcast.
+#endif
+}
+
+#if GTEST_HAS_STREAM_REDIRECTION
+
+// Defines the stderr capturer:
+// CaptureStdout - starts capturing stdout.
+// GetCapturedStdout - stops capturing stdout and returns the captured string.
+// CaptureStderr - starts capturing stderr.
+// GetCapturedStderr - stops capturing stderr and returns the captured string.
+//
+GTEST_API_ void CaptureStdout();
+GTEST_API_ std::string GetCapturedStdout();
+GTEST_API_ void CaptureStderr();
+GTEST_API_ std::string GetCapturedStderr();
+
+#endif // GTEST_HAS_STREAM_REDIRECTION
+
+
+#if GTEST_HAS_DEATH_TEST
+
+const ::std::vector<testing::internal::string>& GetInjectableArgvs();
+void SetInjectableArgvs(const ::std::vector<testing::internal::string>*
+ new_argvs);
+
+// A copy of all command line arguments. Set by InitGoogleTest().
+extern ::std::vector<testing::internal::string> g_argvs;
+
+#endif // GTEST_HAS_DEATH_TEST
+
+// Defines synchronization primitives.
+
+#if GTEST_HAS_PTHREAD
+
+// Sleeps for (roughly) n milli-seconds. This function is only for
+// testing Google Test's own constructs. Don't use it in user tests,
+// either directly or indirectly.
+inline void SleepMilliseconds(int n) {
+ const timespec time = {
+ 0, // 0 seconds.
+ n * 1000L * 1000L, // And n ms.
+ };
+ nanosleep(&time, NULL);
+}
+
+// Allows a controller thread to pause execution of newly created
+// threads until notified. Instances of this class must be created
+// and destroyed in the controller thread.
+//
+// This class is only for testing Google Test's own constructs. Do not
+// use it in user tests, either directly or indirectly.
+class Notification {
+ public:
+ Notification() : notified_(false) {
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));
+ }
+ ~Notification() {
+ pthread_mutex_destroy(&mutex_);
+ }
+
+ // Notifies all threads created with this notification to start. Must
+ // be called from the controller thread.
+ void Notify() {
+ pthread_mutex_lock(&mutex_);
+ notified_ = true;
+ pthread_mutex_unlock(&mutex_);
+ }
+
+ // Blocks until the controller thread notifies. Must be called from a test
+ // thread.
+ void WaitForNotification() {
+ for (;;) {
+ pthread_mutex_lock(&mutex_);
+ const bool notified = notified_;
+ pthread_mutex_unlock(&mutex_);
+ if (notified)
+ break;
+ SleepMilliseconds(10);
+ }
+ }
+
+ private:
+ pthread_mutex_t mutex_;
+ bool notified_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
+};
+
+// As a C-function, ThreadFuncWithCLinkage cannot be templated itself.
+// Consequently, it cannot select a correct instantiation of ThreadWithParam
+// in order to call its Run(). Introducing ThreadWithParamBase as a
+// non-templated base class for ThreadWithParam allows us to bypass this
+// problem.
+class ThreadWithParamBase {
+ public:
+ virtual ~ThreadWithParamBase() {}
+ virtual void Run() = 0;
+};
+
+// pthread_create() accepts a pointer to a function type with the C linkage.
+// According to the Standard (7.5/1), function types with different linkages
+// are different even if they are otherwise identical. Some compilers (for
+// example, SunStudio) treat them as different types. Since class methods
+// cannot be defined with C-linkage we need to define a free C-function to
+// pass into pthread_create().
+extern "C" inline void* ThreadFuncWithCLinkage(void* thread) {
+ static_cast<ThreadWithParamBase*>(thread)->Run();
+ return NULL;
+}
+
+// Helper class for testing Google Test's multi-threading constructs.
+// To use it, write:
+//
+// void ThreadFunc(int param) { /* Do things with param */ }
+// Notification thread_can_start;
+// ...
+// // The thread_can_start parameter is optional; you can supply NULL.
+// ThreadWithParam<int> thread(&ThreadFunc, 5, &thread_can_start);
+// thread_can_start.Notify();
+//
+// These classes are only for testing Google Test's own constructs. Do
+// not use them in user tests, either directly or indirectly.
+template <typename T>
+class ThreadWithParam : public ThreadWithParamBase {
+ public:
+ typedef void (*UserThreadFunc)(T);
+
+ ThreadWithParam(
+ UserThreadFunc func, T param, Notification* thread_can_start)
+ : func_(func),
+ param_(param),
+ thread_can_start_(thread_can_start),
+ finished_(false) {
+ ThreadWithParamBase* const base = this;
+ // The thread can be created only after all fields except thread_
+ // have been initialized.
+ GTEST_CHECK_POSIX_SUCCESS_(
+ pthread_create(&thread_, 0, &ThreadFuncWithCLinkage, base));
+ }
+ ~ThreadWithParam() { Join(); }
+
+ void Join() {
+ if (!finished_) {
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, 0));
+ finished_ = true;
+ }
+ }
+
+ virtual void Run() {
+ if (thread_can_start_ != NULL)
+ thread_can_start_->WaitForNotification();
+ func_(param_);
+ }
+
+ private:
+ const UserThreadFunc func_; // User-supplied thread function.
+ const T param_; // User-supplied parameter to the thread function.
+ // When non-NULL, used to block execution until the controller thread
+ // notifies.
+ Notification* const thread_can_start_;
+ bool finished_; // true iff we know that the thread function has finished.
+ pthread_t thread_; // The native thread object.
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
+};
+
+// MutexBase and Mutex implement mutex on pthreads-based platforms. They
+// are used in conjunction with class MutexLock:
+//
+// Mutex mutex;
+// ...
+// MutexLock lock(&mutex); // Acquires the mutex and releases it at the end
+// // of the current scope.
+//
+// MutexBase implements behavior for both statically and dynamically
+// allocated mutexes. Do not use MutexBase directly. Instead, write
+// the following to define a static mutex:
+//
+// GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex);
+//
+// You can forward declare a static mutex like this:
+//
+// GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex);
+//
+// To create a dynamic mutex, just define an object of type Mutex.
+class MutexBase {
+ public:
+ // Acquires this mutex.
+ void Lock() {
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_));
+ owner_ = pthread_self();
+ has_owner_ = true;
+ }
+
+ // Releases this mutex.
+ void Unlock() {
+ // Since the lock is being released the owner_ field should no longer be
+ // considered valid. We don't protect writing to has_owner_ here, as it's
+ // the caller's responsibility to ensure that the current thread holds the
+ // mutex when this is called.
+ has_owner_ = false;
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_));
+ }
+
+ // Does nothing if the current thread holds the mutex. Otherwise, crashes
+ // with high probability.
+ void AssertHeld() const {
+ GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self()))
+ << "The current thread is not holding the mutex @" << this;
+ }
+
+ // A static mutex may be used before main() is entered. It may even
+ // be used before the dynamic initialization stage. Therefore we
+ // must be able to initialize a static mutex object at link time.
+ // This means MutexBase has to be a POD and its member variables
+ // have to be public.
+ public:
+ pthread_mutex_t mutex_; // The underlying pthread mutex.
+ // has_owner_ indicates whether the owner_ field below contains a valid thread
+ // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All
+ // accesses to the owner_ field should be protected by a check of this field.
+ // An alternative might be to memset() owner_ to all zeros, but there's no
+ // guarantee that a zero'd pthread_t is necessarily invalid or even different
+ // from pthread_self().
+ bool has_owner_;
+ pthread_t owner_; // The thread holding the mutex.
+};
+
+// Forward-declares a static mutex.
+# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
+ extern ::testing::internal::MutexBase mutex
+
+// Defines and statically (i.e. at link time) initializes a static mutex.
+// The initialization list here does not explicitly initialize each field,
+// instead relying on default initialization for the unspecified fields. In
+// particular, the owner_ field (a pthread_t) is not explicitly initialized.
+// This allows initialization to work whether pthread_t is a scalar or struct.
+// The flag -Wmissing-field-initializers must not be specified for this to work.
+# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
+ ::testing::internal::MutexBase mutex = { PTHREAD_MUTEX_INITIALIZER, false }
+
+// The Mutex class can only be used for mutexes created at runtime. It
+// shares its API with MutexBase otherwise.
+class Mutex : public MutexBase {
+ public:
+ Mutex() {
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL));
+ has_owner_ = false;
+ }
+ ~Mutex() {
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_));
+ }
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex);
+};
+
+// We cannot name this class MutexLock as the ctor declaration would
+// conflict with a macro named MutexLock, which is defined on some
+// platforms. Hence the typedef trick below.
+class GTestMutexLock {
+ public:
+ explicit GTestMutexLock(MutexBase* mutex)
+ : mutex_(mutex) { mutex_->Lock(); }
+
+ ~GTestMutexLock() { mutex_->Unlock(); }
+
+ private:
+ MutexBase* const mutex_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock);
+};
+
+typedef GTestMutexLock MutexLock;
+
+// Helpers for ThreadLocal.
+
+// pthread_key_create() requires DeleteThreadLocalValue() to have
+// C-linkage. Therefore it cannot be templatized to access
+// ThreadLocal<T>. Hence the need for class
+// ThreadLocalValueHolderBase.
+class ThreadLocalValueHolderBase {
+ public:
+ virtual ~ThreadLocalValueHolderBase() {}
+};
+
+// Called by pthread to delete thread-local data stored by
+// pthread_setspecific().
+extern "C" inline void DeleteThreadLocalValue(void* value_holder) {
+ delete static_cast<ThreadLocalValueHolderBase*>(value_holder);
+}
+
+// Implements thread-local storage on pthreads-based systems.
+//
+// // Thread 1
+// ThreadLocal<int> tl(100); // 100 is the default value for each thread.
+//
+// // Thread 2
+// tl.set(150); // Changes the value for thread 2 only.
+// EXPECT_EQ(150, tl.get());
+//
+// // Thread 1
+// EXPECT_EQ(100, tl.get()); // In thread 1, tl has the original value.
+// tl.set(200);
+// EXPECT_EQ(200, tl.get());
+//
+// The template type argument T must have a public copy constructor.
+// In addition, the default ThreadLocal constructor requires T to have
+// a public default constructor.
+//
+// An object managed for a thread by a ThreadLocal instance is deleted
+// when the thread exits. Or, if the ThreadLocal instance dies in
+// that thread, when the ThreadLocal dies. It's the user's
+// responsibility to ensure that all other threads using a ThreadLocal
+// have exited when it dies, or the per-thread objects for those
+// threads will not be deleted.
+//
+// Google Test only uses global ThreadLocal objects. That means they
+// will die after main() has returned. Therefore, no per-thread
+// object managed by Google Test will be leaked as long as all threads
+// using Google Test have exited when main() returns.
+template <typename T>
+class ThreadLocal {
+ public:
+ ThreadLocal() : key_(CreateKey()),
+ default_() {}
+ explicit ThreadLocal(const T& value) : key_(CreateKey()),
+ default_(value) {}
+
+ ~ThreadLocal() {
+ // Destroys the managed object for the current thread, if any.
+ DeleteThreadLocalValue(pthread_getspecific(key_));
+
+ // Releases resources associated with the key. This will *not*
+ // delete managed objects for other threads.
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_));
+ }
+
+ T* pointer() { return GetOrCreateValue(); }
+ const T* pointer() const { return GetOrCreateValue(); }
+ const T& get() const { return *pointer(); }
+ void set(const T& value) { *pointer() = value; }
+
+ private:
+ // Holds a value of type T.
+ class ValueHolder : public ThreadLocalValueHolderBase {
+ public:
+ explicit ValueHolder(const T& value) : value_(value) {}
+
+ T* pointer() { return &value_; }
+
+ private:
+ T value_;
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
+ };
+
+ static pthread_key_t CreateKey() {
+ pthread_key_t key;
+ // When a thread exits, DeleteThreadLocalValue() will be called on
+ // the object managed for that thread.
+ GTEST_CHECK_POSIX_SUCCESS_(
+ pthread_key_create(&key, &DeleteThreadLocalValue));
+ return key;
+ }
+
+ T* GetOrCreateValue() const {
+ ThreadLocalValueHolderBase* const holder =
+ static_cast<ThreadLocalValueHolderBase*>(pthread_getspecific(key_));
+ if (holder != NULL) {
+ return CheckedDowncastToActualType<ValueHolder>(holder)->pointer();
+ }
+
+ ValueHolder* const new_holder = new ValueHolder(default_);
+ ThreadLocalValueHolderBase* const holder_base = new_holder;
+ GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base));
+ return new_holder->pointer();
+ }
+
+ // A key pthreads uses for looking up per-thread values.
+ const pthread_key_t key_;
+ const T default_; // The default value for each thread.
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
+};
+
+# define GTEST_IS_THREADSAFE 1
+
+#else // GTEST_HAS_PTHREAD
+
+// A dummy implementation of synchronization primitives (mutex, lock,
+// and thread-local variable). Necessary for compiling Google Test where
+// mutex is not supported - using Google Test in multiple threads is not
+// supported on such platforms.
+
+class Mutex {
+ public:
+ Mutex() {}
+ void Lock() {}
+ void Unlock() {}
+ void AssertHeld() const {}
+};
+
+# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
+ extern ::testing::internal::Mutex mutex
+
+# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex
+
+class GTestMutexLock {
+ public:
+ explicit GTestMutexLock(Mutex*) {} // NOLINT
+};
+
+typedef GTestMutexLock MutexLock;
+
+template <typename T>
+class ThreadLocal {
+ public:
+ ThreadLocal() : value_() {}
+ explicit ThreadLocal(const T& value) : value_(value) {}
+ T* pointer() { return &value_; }
+ const T* pointer() const { return &value_; }
+ const T& get() const { return value_; }
+ void set(const T& value) { value_ = value; }
+ private:
+ T value_;
+};
+
+// The above synchronization primitives have dummy implementations.
+// Therefore Google Test is not thread-safe.
+# define GTEST_IS_THREADSAFE 0
+
+#endif // GTEST_HAS_PTHREAD
+
+// Returns the number of threads running in the process, or 0 to indicate that
+// we cannot detect it.
+GTEST_API_ size_t GetThreadCount();
+
+// Passing non-POD classes through ellipsis (...) crashes the ARM
+// compiler and generates a warning in Sun Studio before 12u4. The Nokia Symbian
+// and the IBM XL C/C++ compiler try to instantiate a copy constructor
+// for objects passed through ellipsis (...), failing for uncopyable
+// objects. We define this to ensure that only POD is passed through
+// ellipsis on these systems.
+#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || \
+ (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x5130)
+// We lose support for NULL detection where the compiler doesn't like
+// passing non-POD classes through ellipsis (...).
+# define GTEST_ELLIPSIS_NEEDS_POD_ 1
+#else
+# define GTEST_CAN_COMPARE_NULL 1
+#endif
+
+// The Nokia Symbian and IBM XL C/C++ compilers cannot decide between
+// const T& and const T* in a function template. These compilers
+// _can_ decide between class template specializations for T and T*,
+// so a tr1::type_traits-like is_pointer works.
+#if defined(__SYMBIAN32__) || defined(__IBMCPP__)
+# define GTEST_NEEDS_IS_POINTER_ 1
+#endif
+
+template <bool bool_value>
+struct bool_constant {
+ typedef bool_constant<bool_value> type;
+ static const bool value = bool_value;
+};
+template <bool bool_value> const bool bool_constant<bool_value>::value;
+
+typedef bool_constant<false> false_type;
+typedef bool_constant<true> true_type;
+
+template <typename T>
+struct is_pointer : public false_type {};
+
+template <typename T>
+struct is_pointer<T*> : public true_type {};
+
+template <typename Iterator>
+struct IteratorTraits {
+ typedef typename Iterator::value_type value_type;
+};
+
+template <typename T>
+struct IteratorTraits<T*> {
+ typedef T value_type;
+};
+
+template <typename T>
+struct IteratorTraits<const T*> {
+ typedef T value_type;
+};
+
+#if GTEST_OS_WINDOWS
+# define GTEST_PATH_SEP_ "\\"
+# define GTEST_HAS_ALT_PATH_SEP_ 1
+// The biggest signed integer type the compiler supports.
+typedef __int64 BiggestInt;
+#else
+# define GTEST_PATH_SEP_ "/"
+# define GTEST_HAS_ALT_PATH_SEP_ 0
+typedef long long BiggestInt; // NOLINT
+#endif // GTEST_OS_WINDOWS
+
+// Utilities for char.
+
+// isspace(int ch) and friends accept an unsigned char or EOF. char
+// may be signed, depending on the compiler (or compiler flags).
+// Therefore we need to cast a char to unsigned char before calling
+// isspace(), etc.
+
+inline bool IsAlpha(char ch) {
+ return isalpha(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsAlNum(char ch) {
+ return isalnum(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsDigit(char ch) {
+ return isdigit(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsLower(char ch) {
+ return islower(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsSpace(char ch) {
+ return isspace(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsUpper(char ch) {
+ return isupper(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsXDigit(char ch) {
+ return isxdigit(static_cast<unsigned char>(ch)) != 0;
+}
+inline bool IsXDigit(wchar_t ch) {
+ const unsigned char low_byte = static_cast<unsigned char>(ch);
+ return ch == low_byte && isxdigit(low_byte) != 0;
+}
+
+inline char ToLower(char ch) {
+ return static_cast<char>(tolower(static_cast<unsigned char>(ch)));
+}
+inline char ToUpper(char ch) {
+ return static_cast<char>(toupper(static_cast<unsigned char>(ch)));
+}
+
+// The testing::internal::posix namespace holds wrappers for common
+// POSIX functions. These wrappers hide the differences between
+// Windows/MSVC and POSIX systems. Since some compilers define these
+// standard functions as macros, the wrapper cannot have the same name
+// as the wrapped function.
+
+namespace posix {
+
+// Functions with a different name on Windows.
+
+#if GTEST_OS_WINDOWS
+
+typedef struct _stat StatStruct;
+
+# ifdef __BORLANDC__
+inline int IsATTY(int fd) { return isatty(fd); }
+inline int StrCaseCmp(const char* s1, const char* s2) {
+ return stricmp(s1, s2);
+}
+inline char* StrDup(const char* src) { return strdup(src); }
+# else // !__BORLANDC__
+# if GTEST_OS_WINDOWS_MOBILE
+inline int IsATTY(int /* fd */) { return 0; }
+# else
+inline int IsATTY(int fd) { return _isatty(fd); }
+# endif // GTEST_OS_WINDOWS_MOBILE
+inline int StrCaseCmp(const char* s1, const char* s2) {
+ return _stricmp(s1, s2);
+}
+inline char* StrDup(const char* src) { return _strdup(src); }
+# endif // __BORLANDC__
+
+# if GTEST_OS_WINDOWS_MOBILE
+inline int FileNo(FILE* file) { return reinterpret_cast<int>(_fileno(file)); }
+// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this
+// time and thus not defined there.
+# else
+inline int FileNo(FILE* file) { return _fileno(file); }
+inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); }
+inline int RmDir(const char* dir) { return _rmdir(dir); }
+inline bool IsDir(const StatStruct& st) {
+ return (_S_IFDIR & st.st_mode) != 0;
+}
+# endif // GTEST_OS_WINDOWS_MOBILE
+
+#else
+
+typedef struct stat StatStruct;
+
+inline int FileNo(FILE* file) { return fileno(file); }
+inline int IsATTY(int fd) { return isatty(fd); }
+inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); }
+inline int StrCaseCmp(const char* s1, const char* s2) {
+ return strcasecmp(s1, s2);
+}
+inline char* StrDup(const char* src) { return strdup(src); }
+inline int RmDir(const char* dir) { return rmdir(dir); }
+inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }
+
+#endif // GTEST_OS_WINDOWS
+
+// Functions deprecated by MSVC 8.0.
+
+#ifdef _MSC_VER
+// Temporarily disable warning 4996 (deprecated function).
+# pragma warning(push)
+# pragma warning(disable:4996)
+#endif
+
+inline const char* StrNCpy(char* dest, const char* src, size_t n) {
+ return strncpy(dest, src, n);
+}
+
+// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and
+// StrError() aren't needed on Windows CE at this time and thus not
+// defined there.
+
+#if !GTEST_OS_WINDOWS_MOBILE
+inline int ChDir(const char* dir) { return chdir(dir); }
+#endif
+inline FILE* FOpen(const char* path, const char* mode) {
+ return fopen(path, mode);
+}
+#if !GTEST_OS_WINDOWS_MOBILE
+inline FILE *FReopen(const char* path, const char* mode, FILE* stream) {
+ return freopen(path, mode, stream);
+}
+inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); }
+#endif
+inline int FClose(FILE* fp) { return fclose(fp); }
+#if !GTEST_OS_WINDOWS_MOBILE
+inline int Read(int fd, void* buf, unsigned int count) {
+ return static_cast<int>(read(fd, buf, count));
+}
+inline int Write(int fd, const void* buf, unsigned int count) {
+ return static_cast<int>(write(fd, buf, count));
+}
+inline int Close(int fd) { return close(fd); }
+inline const char* StrError(int errnum) { return strerror(errnum); }
+#endif
+inline const char* GetEnv(const char* name) {
+#if GTEST_OS_WINDOWS_MOBILE
+ // We are on Windows CE, which has no environment variables.
+ return NULL;
+#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9)
+ // Environment variables which we programmatically clear will be set to the
+ // empty string rather than unset (NULL). Handle that case.
+ const char* const env = getenv(name);
+ return (env != NULL && env[0] != '\0') ? env : NULL;
+#else
+ return getenv(name);
+#endif
+}
+
+#ifdef _MSC_VER
+# pragma warning(pop) // Restores the warning state.
+#endif
+
+#if GTEST_OS_WINDOWS_MOBILE
+// Windows CE has no C library. The abort() function is used in
+// several places in Google Test. This implementation provides a reasonable
+// imitation of standard behaviour.
+void Abort();
+#else
+inline void Abort() { abort(); }
+#endif // GTEST_OS_WINDOWS_MOBILE
+
+} // namespace posix
+
+// MSVC "deprecates" snprintf and issues warnings wherever it is used. In
+// order to avoid these warnings, we need to use _snprintf or _snprintf_s on
+// MSVC-based platforms. We map the GTEST_SNPRINTF_ macro to the appropriate
+// function in order to achieve that. We use macro definition here because
+// snprintf is a variadic function.
+#if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE
+// MSVC 2005 and above support variadic macros.
+# define GTEST_SNPRINTF_(buffer, size, format, ...) \
+ _snprintf_s(buffer, size, size, format, __VA_ARGS__)
+#elif defined(_MSC_VER)
+// Windows CE does not define _snprintf_s and MSVC prior to 2005 doesn't
+// complain about _snprintf.
+# define GTEST_SNPRINTF_ _snprintf
+#else
+# define GTEST_SNPRINTF_ snprintf
+#endif
+
+// The maximum number a BiggestInt can represent. This definition
+// works no matter BiggestInt is represented in one's complement or
+// two's complement.
+//
+// We cannot rely on numeric_limits in STL, as __int64 and long long
+// are not part of standard C++ and numeric_limits doesn't need to be
+// defined for them.
+const BiggestInt kMaxBiggestInt =
+ ~(static_cast<BiggestInt>(1) << (8*sizeof(BiggestInt) - 1));
+
+// This template class serves as a compile-time function from size to
+// type. It maps a size in bytes to a primitive type with that
+// size. e.g.
+//
+// TypeWithSize<4>::UInt
+//
+// is typedef-ed to be unsigned int (unsigned integer made up of 4
+// bytes).
+//
+// Such functionality should belong to STL, but I cannot find it
+// there.
+//
+// Google Test uses this class in the implementation of floating-point
+// comparison.
+//
+// For now it only handles UInt (unsigned int) as that's all Google Test
+// needs. Other types can be easily added in the future if need
+// arises.
+template <size_t size>
+class TypeWithSize {
+ public:
+ // This prevents the user from using TypeWithSize<N> with incorrect
+ // values of N.
+ typedef void UInt;
+};
+
+// The specialization for size 4.
+template <>
+class TypeWithSize<4> {
+ public:
+ // unsigned int has size 4 in both gcc and MSVC.
+ //
+ // As base/basictypes.h doesn't compile on Windows, we cannot use
+ // uint32, uint64, and etc here.
+ typedef int Int;
+ typedef unsigned int UInt;
+};
+
+// The specialization for size 8.
+template <>
+class TypeWithSize<8> {
+ public:
+#if GTEST_OS_WINDOWS
+ typedef __int64 Int;
+ typedef unsigned __int64 UInt;
+#else
+ typedef long long Int; // NOLINT
+ typedef unsigned long long UInt; // NOLINT
+#endif // GTEST_OS_WINDOWS
+};
+
+// Integer types of known sizes.
+typedef TypeWithSize<4>::Int Int32;
+typedef TypeWithSize<4>::UInt UInt32;
+typedef TypeWithSize<8>::Int Int64;
+typedef TypeWithSize<8>::UInt UInt64;
+typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds.
+
+// Utilities for command line flags and environment variables.
+
+// Macro for referencing flags.
+#define GTEST_FLAG(name) FLAGS_gtest_##name
+
+// Macros for declaring flags.
+#define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name)
+#define GTEST_DECLARE_int32_(name) \
+ GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name)
+#define GTEST_DECLARE_string_(name) \
+ GTEST_API_ extern ::std::string GTEST_FLAG(name)
+
+// Macros for defining flags.
+#define GTEST_DEFINE_bool_(name, default_val, doc) \
+ GTEST_API_ bool GTEST_FLAG(name) = (default_val)
+#define GTEST_DEFINE_int32_(name, default_val, doc) \
+ GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val)
+#define GTEST_DEFINE_string_(name, default_val, doc) \
+ GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val)
+
+// Thread annotations
+#define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
+#define GTEST_LOCK_EXCLUDED_(locks)
+
+// Parses 'str' for a 32-bit signed integer. If successful, writes the result
+// to *value and returns true; otherwise leaves *value unchanged and returns
+// false.
+// TODO(chandlerc): Find a better way to refactor flag and environment parsing
+// out of both gtest-port.cc and gtest.cc to avoid exporting this utility
+// function.
+bool ParseInt32(const Message& src_text, const char* str, Int32* value);
+
+// Parses a bool/Int32/string from the environment variable
+// corresponding to the given Google Test flag.
+bool BoolFromGTestEnv(const char* flag, bool default_val);
+GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val);
+const char* StringFromGTestEnv(const char* flag, const char* default_val);
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
diff --git a/test/fmw/gtest/include/gtest/internal/gtest-string.h b/test/fmw/gtest/include/gtest/internal/gtest-string.h
new file mode 100644
index 0000000..97f1a7f
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/internal/gtest-string.h
@@ -0,0 +1,167 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee)
+//
+// The Google C++ Testing Framework (Google Test)
+//
+// This header file declares the String class and functions used internally by
+// Google Test. They are subject to change without notice. They should not used
+// by code external to Google Test.
+//
+// This header file is #included by <gtest/internal/gtest-internal.h>.
+// It should not be #included by other files.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
+
+#ifdef __BORLANDC__
+// string.h is not guaranteed to provide strcpy on C++ Builder.
+# include <mem.h>
+#endif
+
+#include <string.h>
+#include <string>
+
+#include "gtest/internal/gtest-port.h"
+
+namespace testing {
+namespace internal {
+
+// String - an abstract class holding static string utilities.
+class GTEST_API_ String {
+ public:
+ // Static utility methods
+
+ // Clones a 0-terminated C string, allocating memory using new. The
+ // caller is responsible for deleting the return value using
+ // delete[]. Returns the cloned string, or NULL if the input is
+ // NULL.
+ //
+ // This is different from strdup() in string.h, which allocates
+ // memory using malloc().
+ static const char* CloneCString(const char* c_str);
+
+#if GTEST_OS_WINDOWS_MOBILE
+ // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be
+ // able to pass strings to Win32 APIs on CE we need to convert them
+ // to 'Unicode', UTF-16.
+
+ // Creates a UTF-16 wide string from the given ANSI string, allocating
+ // memory using new. The caller is responsible for deleting the return
+ // value using delete[]. Returns the wide string, or NULL if the
+ // input is NULL.
+ //
+ // The wide string is created using the ANSI codepage (CP_ACP) to
+ // match the behaviour of the ANSI versions of Win32 calls and the
+ // C runtime.
+ static LPCWSTR AnsiToUtf16(const char* c_str);
+
+ // Creates an ANSI string from the given wide string, allocating
+ // memory using new. The caller is responsible for deleting the return
+ // value using delete[]. Returns the ANSI string, or NULL if the
+ // input is NULL.
+ //
+ // The returned string is created using the ANSI codepage (CP_ACP) to
+ // match the behaviour of the ANSI versions of Win32 calls and the
+ // C runtime.
+ static const char* Utf16ToAnsi(LPCWSTR utf16_str);
+#endif
+
+ // Compares two C strings. Returns true iff they have the same content.
+ //
+ // Unlike strcmp(), this function can handle NULL argument(s). A
+ // NULL C string is considered different to any non-NULL C string,
+ // including the empty string.
+ static bool CStringEquals(const char* lhs, const char* rhs);
+
+ // Converts a wide C string to a String using the UTF-8 encoding.
+ // NULL will be converted to "(null)". If an error occurred during
+ // the conversion, "(failed to convert from wide string)" is
+ // returned.
+ static std::string ShowWideCString(const wchar_t* wide_c_str);
+
+ // Compares two wide C strings. Returns true iff they have the same
+ // content.
+ //
+ // Unlike wcscmp(), this function can handle NULL argument(s). A
+ // NULL C string is considered different to any non-NULL C string,
+ // including the empty string.
+ static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs);
+
+ // Compares two C strings, ignoring case. Returns true iff they
+ // have the same content.
+ //
+ // Unlike strcasecmp(), this function can handle NULL argument(s).
+ // A NULL C string is considered different to any non-NULL C string,
+ // including the empty string.
+ static bool CaseInsensitiveCStringEquals(const char* lhs,
+ const char* rhs);
+
+ // Compares two wide C strings, ignoring case. Returns true iff they
+ // have the same content.
+ //
+ // Unlike wcscasecmp(), this function can handle NULL argument(s).
+ // A NULL C string is considered different to any non-NULL wide C string,
+ // including the empty string.
+ // NB: The implementations on different platforms slightly differ.
+ // On windows, this method uses _wcsicmp which compares according to LC_CTYPE
+ // environment variable. On GNU platform this method uses wcscasecmp
+ // which compares according to LC_CTYPE category of the current locale.
+ // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
+ // current locale.
+ static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
+ const wchar_t* rhs);
+
+ // Returns true iff the given string ends with the given suffix, ignoring
+ // case. Any string is considered to end with an empty suffix.
+ static bool EndsWithCaseInsensitive(
+ const std::string& str, const std::string& suffix);
+
+ // Formats an int value as "%02d".
+ static std::string FormatIntWidth2(int value); // "%02d" for width == 2
+
+ // Formats an int value as "%X".
+ static std::string FormatHexInt(int value);
+
+ // Formats a byte as "%02X".
+ static std::string FormatByte(unsigned char value);
+
+ private:
+ String(); // Not meant to be instantiated.
+}; // class String
+
+// Gets the content of the stringstream's buffer as an std::string. Each '\0'
+// character in the buffer is replaced with "\\0".
+GTEST_API_ std::string StringStreamToString(::std::stringstream* stream);
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
diff --git a/test/fmw/gtest/include/gtest/internal/gtest-tuple.h b/test/fmw/gtest/include/gtest/internal/gtest-tuple.h
new file mode 100644
index 0000000..7b3dfc3
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/internal/gtest-tuple.h
@@ -0,0 +1,1012 @@
+// This file was GENERATED by command:
+// pump.py gtest-tuple.h.pump
+// DO NOT EDIT BY HAND!!!
+
+// Copyright 2009 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Implements a subset of TR1 tuple needed by Google Test and Google Mock.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
+
+#include <utility> // For ::std::pair.
+
+// The compiler used in Symbian has a bug that prevents us from declaring the
+// tuple template as a friend (it complains that tuple is redefined). This
+// hack bypasses the bug by declaring the members that should otherwise be
+// private as public.
+// Sun Studio versions < 12 also have the above bug.
+#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590)
+# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public:
+#else
+# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \
+ template <GTEST_10_TYPENAMES_(U)> friend class tuple; \
+ private:
+#endif
+
+// GTEST_n_TUPLE_(T) is the type of an n-tuple.
+#define GTEST_0_TUPLE_(T) tuple<>
+#define GTEST_1_TUPLE_(T) tuple<T##0, void, void, void, void, void, void, \
+ void, void, void>
+#define GTEST_2_TUPLE_(T) tuple<T##0, T##1, void, void, void, void, void, \
+ void, void, void>
+#define GTEST_3_TUPLE_(T) tuple<T##0, T##1, T##2, void, void, void, void, \
+ void, void, void>
+#define GTEST_4_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, void, void, void, \
+ void, void, void>
+#define GTEST_5_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, void, void, \
+ void, void, void>
+#define GTEST_6_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, void, \
+ void, void, void>
+#define GTEST_7_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
+ void, void, void>
+#define GTEST_8_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
+ T##7, void, void>
+#define GTEST_9_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
+ T##7, T##8, void>
+#define GTEST_10_TUPLE_(T) tuple<T##0, T##1, T##2, T##3, T##4, T##5, T##6, \
+ T##7, T##8, T##9>
+
+// GTEST_n_TYPENAMES_(T) declares a list of n typenames.
+#define GTEST_0_TYPENAMES_(T)
+#define GTEST_1_TYPENAMES_(T) typename T##0
+#define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1
+#define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2
+#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+ typename T##3
+#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+ typename T##3, typename T##4
+#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+ typename T##3, typename T##4, typename T##5
+#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+ typename T##3, typename T##4, typename T##5, typename T##6
+#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+ typename T##3, typename T##4, typename T##5, typename T##6, typename T##7
+#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+ typename T##3, typename T##4, typename T##5, typename T##6, \
+ typename T##7, typename T##8
+#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \
+ typename T##3, typename T##4, typename T##5, typename T##6, \
+ typename T##7, typename T##8, typename T##9
+
+// In theory, defining stuff in the ::std namespace is undefined
+// behavior. We can do this as we are playing the role of a standard
+// library vendor.
+namespace std {
+namespace tr1 {
+
+template <typename T0 = void, typename T1 = void, typename T2 = void,
+ typename T3 = void, typename T4 = void, typename T5 = void,
+ typename T6 = void, typename T7 = void, typename T8 = void,
+ typename T9 = void>
+class tuple;
+
+// Anything in namespace gtest_internal is Google Test's INTERNAL
+// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code.
+namespace gtest_internal {
+
+// ByRef<T>::type is T if T is a reference; otherwise it's const T&.
+template <typename T>
+struct ByRef { typedef const T& type; }; // NOLINT
+template <typename T>
+struct ByRef<T&> { typedef T& type; }; // NOLINT
+
+// A handy wrapper for ByRef.
+#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef<T>::type
+
+// AddRef<T>::type is T if T is a reference; otherwise it's T&. This
+// is the same as tr1::add_reference<T>::type.
+template <typename T>
+struct AddRef { typedef T& type; }; // NOLINT
+template <typename T>
+struct AddRef<T&> { typedef T& type; }; // NOLINT
+
+// A handy wrapper for AddRef.
+#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef<T>::type
+
+// A helper for implementing get<k>().
+template <int k> class Get;
+
+// A helper for implementing tuple_element<k, T>. kIndexValid is true
+// iff k < the number of fields in tuple type T.
+template <bool kIndexValid, int kIndex, class Tuple>
+struct TupleElement;
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 0, GTEST_10_TUPLE_(T) > {
+ typedef T0 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 1, GTEST_10_TUPLE_(T) > {
+ typedef T1 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 2, GTEST_10_TUPLE_(T) > {
+ typedef T2 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 3, GTEST_10_TUPLE_(T) > {
+ typedef T3 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 4, GTEST_10_TUPLE_(T) > {
+ typedef T4 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 5, GTEST_10_TUPLE_(T) > {
+ typedef T5 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 6, GTEST_10_TUPLE_(T) > {
+ typedef T6 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 7, GTEST_10_TUPLE_(T) > {
+ typedef T7 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 8, GTEST_10_TUPLE_(T) > {
+ typedef T8 type;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct TupleElement<true, 9, GTEST_10_TUPLE_(T) > {
+ typedef T9 type;
+};
+
+} // namespace gtest_internal
+
+template <>
+class tuple<> {
+ public:
+ tuple() {}
+ tuple(const tuple& /* t */) {}
+ tuple& operator=(const tuple& /* t */) { return *this; }
+};
+
+template <GTEST_1_TYPENAMES_(T)>
+class GTEST_1_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {}
+
+ tuple(const tuple& t) : f0_(t.f0_) {}
+
+ template <GTEST_1_TYPENAMES_(U)>
+ tuple(const GTEST_1_TUPLE_(U)& t) : f0_(t.f0_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_1_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_1_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_1_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_1_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ return *this;
+ }
+
+ T0 f0_;
+};
+
+template <GTEST_2_TYPENAMES_(T)>
+class GTEST_2_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0),
+ f1_(f1) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_) {}
+
+ template <GTEST_2_TYPENAMES_(U)>
+ tuple(const GTEST_2_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_) {}
+ template <typename U0, typename U1>
+ tuple(const ::std::pair<U0, U1>& p) : f0_(p.first), f1_(p.second) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_2_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_2_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+ template <typename U0, typename U1>
+ tuple& operator=(const ::std::pair<U0, U1>& p) {
+ f0_ = p.first;
+ f1_ = p.second;
+ return *this;
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_2_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_2_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+};
+
+template <GTEST_3_TYPENAMES_(T)>
+class GTEST_3_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}
+
+ template <GTEST_3_TYPENAMES_(U)>
+ tuple(const GTEST_3_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_3_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_3_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_3_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_3_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+};
+
+template <GTEST_4_TYPENAMES_(T)>
+class GTEST_4_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_(), f3_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2),
+ f3_(f3) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {}
+
+ template <GTEST_4_TYPENAMES_(U)>
+ tuple(const GTEST_4_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+ f3_(t.f3_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_4_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_4_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_4_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_4_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ f3_ = t.f3_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+ T3 f3_;
+};
+
+template <GTEST_5_TYPENAMES_(T)>
+class GTEST_5_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3,
+ GTEST_BY_REF_(T4) f4) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+ f4_(t.f4_) {}
+
+ template <GTEST_5_TYPENAMES_(U)>
+ tuple(const GTEST_5_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+ f3_(t.f3_), f4_(t.f4_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_5_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_5_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_5_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_5_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ f3_ = t.f3_;
+ f4_ = t.f4_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+ T3 f3_;
+ T4 f4_;
+};
+
+template <GTEST_6_TYPENAMES_(T)>
+class GTEST_6_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
+ GTEST_BY_REF_(T5) f5) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),
+ f5_(f5) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+ f4_(t.f4_), f5_(t.f5_) {}
+
+ template <GTEST_6_TYPENAMES_(U)>
+ tuple(const GTEST_6_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+ f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_6_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_6_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_6_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_6_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ f3_ = t.f3_;
+ f4_ = t.f4_;
+ f5_ = t.f5_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+ T3 f3_;
+ T4 f4_;
+ T5 f5_;
+};
+
+template <GTEST_7_TYPENAMES_(T)>
+class GTEST_7_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
+ GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) : f0_(f0), f1_(f1), f2_(f2),
+ f3_(f3), f4_(f4), f5_(f5), f6_(f6) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+ f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}
+
+ template <GTEST_7_TYPENAMES_(U)>
+ tuple(const GTEST_7_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+ f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_7_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_7_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_7_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_7_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ f3_ = t.f3_;
+ f4_ = t.f4_;
+ f5_ = t.f5_;
+ f6_ = t.f6_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+ T3 f3_;
+ T4 f4_;
+ T5 f5_;
+ T6 f6_;
+};
+
+template <GTEST_8_TYPENAMES_(T)>
+class GTEST_8_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
+ GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6,
+ GTEST_BY_REF_(T7) f7) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),
+ f5_(f5), f6_(f6), f7_(f7) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+ f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}
+
+ template <GTEST_8_TYPENAMES_(U)>
+ tuple(const GTEST_8_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+ f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_8_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_8_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_8_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_8_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ f3_ = t.f3_;
+ f4_ = t.f4_;
+ f5_ = t.f5_;
+ f6_ = t.f6_;
+ f7_ = t.f7_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+ T3 f3_;
+ T4 f4_;
+ T5 f5_;
+ T6 f6_;
+ T7 f7_;
+};
+
+template <GTEST_9_TYPENAMES_(T)>
+class GTEST_9_TUPLE_(T) {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
+ GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7,
+ GTEST_BY_REF_(T8) f8) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4),
+ f5_(f5), f6_(f6), f7_(f7), f8_(f8) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+ f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}
+
+ template <GTEST_9_TYPENAMES_(U)>
+ tuple(const GTEST_9_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+ f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_9_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_9_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_9_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_9_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ f3_ = t.f3_;
+ f4_ = t.f4_;
+ f5_ = t.f5_;
+ f6_ = t.f6_;
+ f7_ = t.f7_;
+ f8_ = t.f8_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+ T3 f3_;
+ T4 f4_;
+ T5 f5_;
+ T6 f6_;
+ T7 f7_;
+ T8 f8_;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+class tuple {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(),
+ f9_() {}
+
+ explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1,
+ GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4,
+ GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7,
+ GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) : f0_(f0), f1_(f1), f2_(f2),
+ f3_(f3), f4_(f4), f5_(f5), f6_(f6), f7_(f7), f8_(f8), f9_(f9) {}
+
+ tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_),
+ f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {}
+
+ template <GTEST_10_TYPENAMES_(U)>
+ tuple(const GTEST_10_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_),
+ f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_),
+ f9_(t.f9_) {}
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_10_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_10_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_10_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_10_TUPLE_(U)& t) {
+ f0_ = t.f0_;
+ f1_ = t.f1_;
+ f2_ = t.f2_;
+ f3_ = t.f3_;
+ f4_ = t.f4_;
+ f5_ = t.f5_;
+ f6_ = t.f6_;
+ f7_ = t.f7_;
+ f8_ = t.f8_;
+ f9_ = t.f9_;
+ return *this;
+ }
+
+ T0 f0_;
+ T1 f1_;
+ T2 f2_;
+ T3 f3_;
+ T4 f4_;
+ T5 f5_;
+ T6 f6_;
+ T7 f7_;
+ T8 f8_;
+ T9 f9_;
+};
+
+// 6.1.3.2 Tuple creation functions.
+
+// Known limitations: we don't support passing an
+// std::tr1::reference_wrapper<T> to make_tuple(). And we don't
+// implement tie().
+
+inline tuple<> make_tuple() { return tuple<>(); }
+
+template <GTEST_1_TYPENAMES_(T)>
+inline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) {
+ return GTEST_1_TUPLE_(T)(f0);
+}
+
+template <GTEST_2_TYPENAMES_(T)>
+inline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) {
+ return GTEST_2_TUPLE_(T)(f0, f1);
+}
+
+template <GTEST_3_TYPENAMES_(T)>
+inline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) {
+ return GTEST_3_TUPLE_(T)(f0, f1, f2);
+}
+
+template <GTEST_4_TYPENAMES_(T)>
+inline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+ const T3& f3) {
+ return GTEST_4_TUPLE_(T)(f0, f1, f2, f3);
+}
+
+template <GTEST_5_TYPENAMES_(T)>
+inline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+ const T3& f3, const T4& f4) {
+ return GTEST_5_TUPLE_(T)(f0, f1, f2, f3, f4);
+}
+
+template <GTEST_6_TYPENAMES_(T)>
+inline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+ const T3& f3, const T4& f4, const T5& f5) {
+ return GTEST_6_TUPLE_(T)(f0, f1, f2, f3, f4, f5);
+}
+
+template <GTEST_7_TYPENAMES_(T)>
+inline GTEST_7_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+ const T3& f3, const T4& f4, const T5& f5, const T6& f6) {
+ return GTEST_7_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6);
+}
+
+template <GTEST_8_TYPENAMES_(T)>
+inline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+ const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7) {
+ return GTEST_8_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7);
+}
+
+template <GTEST_9_TYPENAMES_(T)>
+inline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+ const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7,
+ const T8& f8) {
+ return GTEST_9_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8);
+}
+
+template <GTEST_10_TYPENAMES_(T)>
+inline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2,
+ const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7,
+ const T8& f8, const T9& f9) {
+ return GTEST_10_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9);
+}
+
+// 6.1.3.3 Tuple helper classes.
+
+template <typename Tuple> struct tuple_size;
+
+template <GTEST_0_TYPENAMES_(T)>
+struct tuple_size<GTEST_0_TUPLE_(T) > {
+ static const int value = 0;
+};
+
+template <GTEST_1_TYPENAMES_(T)>
+struct tuple_size<GTEST_1_TUPLE_(T) > {
+ static const int value = 1;
+};
+
+template <GTEST_2_TYPENAMES_(T)>
+struct tuple_size<GTEST_2_TUPLE_(T) > {
+ static const int value = 2;
+};
+
+template <GTEST_3_TYPENAMES_(T)>
+struct tuple_size<GTEST_3_TUPLE_(T) > {
+ static const int value = 3;
+};
+
+template <GTEST_4_TYPENAMES_(T)>
+struct tuple_size<GTEST_4_TUPLE_(T) > {
+ static const int value = 4;
+};
+
+template <GTEST_5_TYPENAMES_(T)>
+struct tuple_size<GTEST_5_TUPLE_(T) > {
+ static const int value = 5;
+};
+
+template <GTEST_6_TYPENAMES_(T)>
+struct tuple_size<GTEST_6_TUPLE_(T) > {
+ static const int value = 6;
+};
+
+template <GTEST_7_TYPENAMES_(T)>
+struct tuple_size<GTEST_7_TUPLE_(T) > {
+ static const int value = 7;
+};
+
+template <GTEST_8_TYPENAMES_(T)>
+struct tuple_size<GTEST_8_TUPLE_(T) > {
+ static const int value = 8;
+};
+
+template <GTEST_9_TYPENAMES_(T)>
+struct tuple_size<GTEST_9_TUPLE_(T) > {
+ static const int value = 9;
+};
+
+template <GTEST_10_TYPENAMES_(T)>
+struct tuple_size<GTEST_10_TUPLE_(T) > {
+ static const int value = 10;
+};
+
+template <int k, class Tuple>
+struct tuple_element {
+ typedef typename gtest_internal::TupleElement<
+ k < (tuple_size<Tuple>::value), k, Tuple>::type type;
+};
+
+#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple >::type
+
+// 6.1.3.4 Element access.
+
+namespace gtest_internal {
+
+template <>
+class Get<0> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple))
+ Field(Tuple& t) { return t.f0_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple))
+ ConstField(const Tuple& t) { return t.f0_; }
+};
+
+template <>
+class Get<1> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple))
+ Field(Tuple& t) { return t.f1_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple))
+ ConstField(const Tuple& t) { return t.f1_; }
+};
+
+template <>
+class Get<2> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple))
+ Field(Tuple& t) { return t.f2_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple))
+ ConstField(const Tuple& t) { return t.f2_; }
+};
+
+template <>
+class Get<3> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple))
+ Field(Tuple& t) { return t.f3_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple))
+ ConstField(const Tuple& t) { return t.f3_; }
+};
+
+template <>
+class Get<4> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple))
+ Field(Tuple& t) { return t.f4_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple))
+ ConstField(const Tuple& t) { return t.f4_; }
+};
+
+template <>
+class Get<5> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple))
+ Field(Tuple& t) { return t.f5_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple))
+ ConstField(const Tuple& t) { return t.f5_; }
+};
+
+template <>
+class Get<6> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple))
+ Field(Tuple& t) { return t.f6_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple))
+ ConstField(const Tuple& t) { return t.f6_; }
+};
+
+template <>
+class Get<7> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple))
+ Field(Tuple& t) { return t.f7_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple))
+ ConstField(const Tuple& t) { return t.f7_; }
+};
+
+template <>
+class Get<8> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple))
+ Field(Tuple& t) { return t.f8_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple))
+ ConstField(const Tuple& t) { return t.f8_; }
+};
+
+template <>
+class Get<9> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple))
+ Field(Tuple& t) { return t.f9_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple))
+ ConstField(const Tuple& t) { return t.f9_; }
+};
+
+} // namespace gtest_internal
+
+template <int k, GTEST_10_TYPENAMES_(T)>
+GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T)))
+get(GTEST_10_TUPLE_(T)& t) {
+ return gtest_internal::Get<k>::Field(t);
+}
+
+template <int k, GTEST_10_TYPENAMES_(T)>
+GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T)))
+get(const GTEST_10_TUPLE_(T)& t) {
+ return gtest_internal::Get<k>::ConstField(t);
+}
+
+// 6.1.3.5 Relational operators
+
+// We only implement == and !=, as we don't have a need for the rest yet.
+
+namespace gtest_internal {
+
+// SameSizeTuplePrefixComparator<k, k>::Eq(t1, t2) returns true if the
+// first k fields of t1 equals the first k fields of t2.
+// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if
+// k1 != k2.
+template <int kSize1, int kSize2>
+struct SameSizeTuplePrefixComparator;
+
+template <>
+struct SameSizeTuplePrefixComparator<0, 0> {
+ template <class Tuple1, class Tuple2>
+ static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) {
+ return true;
+ }
+};
+
+template <int k>
+struct SameSizeTuplePrefixComparator<k, k> {
+ template <class Tuple1, class Tuple2>
+ static bool Eq(const Tuple1& t1, const Tuple2& t2) {
+ return SameSizeTuplePrefixComparator<k - 1, k - 1>::Eq(t1, t2) &&
+ ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2);
+ }
+};
+
+} // namespace gtest_internal
+
+template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>
+inline bool operator==(const GTEST_10_TUPLE_(T)& t,
+ const GTEST_10_TUPLE_(U)& u) {
+ return gtest_internal::SameSizeTuplePrefixComparator<
+ tuple_size<GTEST_10_TUPLE_(T) >::value,
+ tuple_size<GTEST_10_TUPLE_(U) >::value>::Eq(t, u);
+}
+
+template <GTEST_10_TYPENAMES_(T), GTEST_10_TYPENAMES_(U)>
+inline bool operator!=(const GTEST_10_TUPLE_(T)& t,
+ const GTEST_10_TUPLE_(U)& u) { return !(t == u); }
+
+// 6.1.4 Pairs.
+// Unimplemented.
+
+} // namespace tr1
+} // namespace std
+
+#undef GTEST_0_TUPLE_
+#undef GTEST_1_TUPLE_
+#undef GTEST_2_TUPLE_
+#undef GTEST_3_TUPLE_
+#undef GTEST_4_TUPLE_
+#undef GTEST_5_TUPLE_
+#undef GTEST_6_TUPLE_
+#undef GTEST_7_TUPLE_
+#undef GTEST_8_TUPLE_
+#undef GTEST_9_TUPLE_
+#undef GTEST_10_TUPLE_
+
+#undef GTEST_0_TYPENAMES_
+#undef GTEST_1_TYPENAMES_
+#undef GTEST_2_TYPENAMES_
+#undef GTEST_3_TYPENAMES_
+#undef GTEST_4_TYPENAMES_
+#undef GTEST_5_TYPENAMES_
+#undef GTEST_6_TYPENAMES_
+#undef GTEST_7_TYPENAMES_
+#undef GTEST_8_TYPENAMES_
+#undef GTEST_9_TYPENAMES_
+#undef GTEST_10_TYPENAMES_
+
+#undef GTEST_DECLARE_TUPLE_AS_FRIEND_
+#undef GTEST_BY_REF_
+#undef GTEST_ADD_REF_
+#undef GTEST_TUPLE_ELEMENT_
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
diff --git a/test/fmw/gtest/include/gtest/internal/gtest-tuple.h.pump b/test/fmw/gtest/include/gtest/internal/gtest-tuple.h.pump
new file mode 100644
index 0000000..c7d9e03
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/internal/gtest-tuple.h.pump
@@ -0,0 +1,339 @@
+$$ -*- mode: c++; -*-
+$var n = 10 $$ Maximum number of tuple fields we want to support.
+$$ This meta comment fixes auto-indentation in Emacs. }}
+// Copyright 2009 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Implements a subset of TR1 tuple needed by Google Test and Google Mock.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
+
+#include <utility> // For ::std::pair.
+
+// The compiler used in Symbian has a bug that prevents us from declaring the
+// tuple template as a friend (it complains that tuple is redefined). This
+// hack bypasses the bug by declaring the members that should otherwise be
+// private as public.
+// Sun Studio versions < 12 also have the above bug.
+#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590)
+# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public:
+#else
+# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \
+ template <GTEST_$(n)_TYPENAMES_(U)> friend class tuple; \
+ private:
+#endif
+
+
+$range i 0..n-1
+$range j 0..n
+$range k 1..n
+// GTEST_n_TUPLE_(T) is the type of an n-tuple.
+#define GTEST_0_TUPLE_(T) tuple<>
+
+$for k [[
+$range m 0..k-1
+$range m2 k..n-1
+#define GTEST_$(k)_TUPLE_(T) tuple<$for m, [[T##$m]]$for m2 [[, void]]>
+
+]]
+
+// GTEST_n_TYPENAMES_(T) declares a list of n typenames.
+
+$for j [[
+$range m 0..j-1
+#define GTEST_$(j)_TYPENAMES_(T) $for m, [[typename T##$m]]
+
+
+]]
+
+// In theory, defining stuff in the ::std namespace is undefined
+// behavior. We can do this as we are playing the role of a standard
+// library vendor.
+namespace std {
+namespace tr1 {
+
+template <$for i, [[typename T$i = void]]>
+class tuple;
+
+// Anything in namespace gtest_internal is Google Test's INTERNAL
+// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code.
+namespace gtest_internal {
+
+// ByRef<T>::type is T if T is a reference; otherwise it's const T&.
+template <typename T>
+struct ByRef { typedef const T& type; }; // NOLINT
+template <typename T>
+struct ByRef<T&> { typedef T& type; }; // NOLINT
+
+// A handy wrapper for ByRef.
+#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef<T>::type
+
+// AddRef<T>::type is T if T is a reference; otherwise it's T&. This
+// is the same as tr1::add_reference<T>::type.
+template <typename T>
+struct AddRef { typedef T& type; }; // NOLINT
+template <typename T>
+struct AddRef<T&> { typedef T& type; }; // NOLINT
+
+// A handy wrapper for AddRef.
+#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef<T>::type
+
+// A helper for implementing get<k>().
+template <int k> class Get;
+
+// A helper for implementing tuple_element<k, T>. kIndexValid is true
+// iff k < the number of fields in tuple type T.
+template <bool kIndexValid, int kIndex, class Tuple>
+struct TupleElement;
+
+
+$for i [[
+template <GTEST_$(n)_TYPENAMES_(T)>
+struct TupleElement<true, $i, GTEST_$(n)_TUPLE_(T) > {
+ typedef T$i type;
+};
+
+
+]]
+} // namespace gtest_internal
+
+template <>
+class tuple<> {
+ public:
+ tuple() {}
+ tuple(const tuple& /* t */) {}
+ tuple& operator=(const tuple& /* t */) { return *this; }
+};
+
+
+$for k [[
+$range m 0..k-1
+template <GTEST_$(k)_TYPENAMES_(T)>
+class $if k < n [[GTEST_$(k)_TUPLE_(T)]] $else [[tuple]] {
+ public:
+ template <int k> friend class gtest_internal::Get;
+
+ tuple() : $for m, [[f$(m)_()]] {}
+
+ explicit tuple($for m, [[GTEST_BY_REF_(T$m) f$m]]) : [[]]
+$for m, [[f$(m)_(f$m)]] {}
+
+ tuple(const tuple& t) : $for m, [[f$(m)_(t.f$(m)_)]] {}
+
+ template <GTEST_$(k)_TYPENAMES_(U)>
+ tuple(const GTEST_$(k)_TUPLE_(U)& t) : $for m, [[f$(m)_(t.f$(m)_)]] {}
+
+$if k == 2 [[
+ template <typename U0, typename U1>
+ tuple(const ::std::pair<U0, U1>& p) : f0_(p.first), f1_(p.second) {}
+
+]]
+
+ tuple& operator=(const tuple& t) { return CopyFrom(t); }
+
+ template <GTEST_$(k)_TYPENAMES_(U)>
+ tuple& operator=(const GTEST_$(k)_TUPLE_(U)& t) {
+ return CopyFrom(t);
+ }
+
+$if k == 2 [[
+ template <typename U0, typename U1>
+ tuple& operator=(const ::std::pair<U0, U1>& p) {
+ f0_ = p.first;
+ f1_ = p.second;
+ return *this;
+ }
+
+]]
+
+ GTEST_DECLARE_TUPLE_AS_FRIEND_
+
+ template <GTEST_$(k)_TYPENAMES_(U)>
+ tuple& CopyFrom(const GTEST_$(k)_TUPLE_(U)& t) {
+
+$for m [[
+ f$(m)_ = t.f$(m)_;
+
+]]
+ return *this;
+ }
+
+
+$for m [[
+ T$m f$(m)_;
+
+]]
+};
+
+
+]]
+// 6.1.3.2 Tuple creation functions.
+
+// Known limitations: we don't support passing an
+// std::tr1::reference_wrapper<T> to make_tuple(). And we don't
+// implement tie().
+
+inline tuple<> make_tuple() { return tuple<>(); }
+
+$for k [[
+$range m 0..k-1
+
+template <GTEST_$(k)_TYPENAMES_(T)>
+inline GTEST_$(k)_TUPLE_(T) make_tuple($for m, [[const T$m& f$m]]) {
+ return GTEST_$(k)_TUPLE_(T)($for m, [[f$m]]);
+}
+
+]]
+
+// 6.1.3.3 Tuple helper classes.
+
+template <typename Tuple> struct tuple_size;
+
+
+$for j [[
+template <GTEST_$(j)_TYPENAMES_(T)>
+struct tuple_size<GTEST_$(j)_TUPLE_(T) > {
+ static const int value = $j;
+};
+
+
+]]
+template <int k, class Tuple>
+struct tuple_element {
+ typedef typename gtest_internal::TupleElement<
+ k < (tuple_size<Tuple>::value), k, Tuple>::type type;
+};
+
+#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element<k, Tuple >::type
+
+// 6.1.3.4 Element access.
+
+namespace gtest_internal {
+
+
+$for i [[
+template <>
+class Get<$i> {
+ public:
+ template <class Tuple>
+ static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_($i, Tuple))
+ Field(Tuple& t) { return t.f$(i)_; } // NOLINT
+
+ template <class Tuple>
+ static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_($i, Tuple))
+ ConstField(const Tuple& t) { return t.f$(i)_; }
+};
+
+
+]]
+} // namespace gtest_internal
+
+template <int k, GTEST_$(n)_TYPENAMES_(T)>
+GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_$(n)_TUPLE_(T)))
+get(GTEST_$(n)_TUPLE_(T)& t) {
+ return gtest_internal::Get<k>::Field(t);
+}
+
+template <int k, GTEST_$(n)_TYPENAMES_(T)>
+GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_$(n)_TUPLE_(T)))
+get(const GTEST_$(n)_TUPLE_(T)& t) {
+ return gtest_internal::Get<k>::ConstField(t);
+}
+
+// 6.1.3.5 Relational operators
+
+// We only implement == and !=, as we don't have a need for the rest yet.
+
+namespace gtest_internal {
+
+// SameSizeTuplePrefixComparator<k, k>::Eq(t1, t2) returns true if the
+// first k fields of t1 equals the first k fields of t2.
+// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if
+// k1 != k2.
+template <int kSize1, int kSize2>
+struct SameSizeTuplePrefixComparator;
+
+template <>
+struct SameSizeTuplePrefixComparator<0, 0> {
+ template <class Tuple1, class Tuple2>
+ static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) {
+ return true;
+ }
+};
+
+template <int k>
+struct SameSizeTuplePrefixComparator<k, k> {
+ template <class Tuple1, class Tuple2>
+ static bool Eq(const Tuple1& t1, const Tuple2& t2) {
+ return SameSizeTuplePrefixComparator<k - 1, k - 1>::Eq(t1, t2) &&
+ ::std::tr1::get<k - 1>(t1) == ::std::tr1::get<k - 1>(t2);
+ }
+};
+
+} // namespace gtest_internal
+
+template <GTEST_$(n)_TYPENAMES_(T), GTEST_$(n)_TYPENAMES_(U)>
+inline bool operator==(const GTEST_$(n)_TUPLE_(T)& t,
+ const GTEST_$(n)_TUPLE_(U)& u) {
+ return gtest_internal::SameSizeTuplePrefixComparator<
+ tuple_size<GTEST_$(n)_TUPLE_(T) >::value,
+ tuple_size<GTEST_$(n)_TUPLE_(U) >::value>::Eq(t, u);
+}
+
+template <GTEST_$(n)_TYPENAMES_(T), GTEST_$(n)_TYPENAMES_(U)>
+inline bool operator!=(const GTEST_$(n)_TUPLE_(T)& t,
+ const GTEST_$(n)_TUPLE_(U)& u) { return !(t == u); }
+
+// 6.1.4 Pairs.
+// Unimplemented.
+
+} // namespace tr1
+} // namespace std
+
+
+$for j [[
+#undef GTEST_$(j)_TUPLE_
+
+]]
+
+
+$for j [[
+#undef GTEST_$(j)_TYPENAMES_
+
+]]
+
+#undef GTEST_DECLARE_TUPLE_AS_FRIEND_
+#undef GTEST_BY_REF_
+#undef GTEST_ADD_REF_
+#undef GTEST_TUPLE_ELEMENT_
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_
diff --git a/test/fmw/gtest/include/gtest/internal/gtest-type-util.h b/test/fmw/gtest/include/gtest/internal/gtest-type-util.h
new file mode 100644
index 0000000..e46f7cf
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/internal/gtest-type-util.h
@@ -0,0 +1,3331 @@
+// This file was GENERATED by command:
+// pump.py gtest-type-util.h.pump
+// DO NOT EDIT BY HAND!!!
+
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Type utilities needed for implementing typed and type-parameterized
+// tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
+//
+// Currently we support at most 50 types in a list, and at most 50
+// type-parameterized tests in one type-parameterized test case.
+// Please contact googletestframework@googlegroups.com if you need
+// more.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
+
+#include "gtest/internal/gtest-port.h"
+
+// #ifdef __GNUC__ is too general here. It is possible to use gcc without using
+// libstdc++ (which is where cxxabi.h comes from).
+# if GTEST_HAS_CXXABI_H_
+# include <cxxabi.h>
+# elif defined(__HP_aCC)
+# include <acxx_demangle.h>
+# endif // GTEST_HASH_CXXABI_H_
+
+namespace testing {
+namespace internal {
+
+// GetTypeName<T>() returns a human-readable name of type T.
+// NB: This function is also used in Google Mock, so don't move it inside of
+// the typed-test-only section below.
+template <typename T>
+std::string GetTypeName() {
+# if GTEST_HAS_RTTI
+
+ const char* const name = typeid(T).name();
+# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
+ int status = 0;
+ // gcc's implementation of typeid(T).name() mangles the type name,
+ // so we have to demangle it.
+# if GTEST_HAS_CXXABI_H_
+ using abi::__cxa_demangle;
+# endif // GTEST_HAS_CXXABI_H_
+ char* const readable_name = __cxa_demangle(name, 0, 0, &status);
+ const std::string name_str(status == 0 ? readable_name : name);
+ free(readable_name);
+ return name_str;
+# else
+ return name;
+# endif // GTEST_HAS_CXXABI_H_ || __HP_aCC
+
+# else
+
+ return "<type>";
+
+# endif // GTEST_HAS_RTTI
+}
+
+#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+// AssertyTypeEq<T1, T2>::type is defined iff T1 and T2 are the same
+// type. This can be used as a compile-time assertion to ensure that
+// two types are equal.
+
+template <typename T1, typename T2>
+struct AssertTypeEq;
+
+template <typename T>
+struct AssertTypeEq<T, T> {
+ typedef bool type;
+};
+
+// A unique type used as the default value for the arguments of class
+// template Types. This allows us to simulate variadic templates
+// (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't
+// support directly.
+struct None {};
+
+// The following family of struct and struct templates are used to
+// represent type lists. In particular, TypesN<T1, T2, ..., TN>
+// represents a type list with N types (T1, T2, ..., and TN) in it.
+// Except for Types0, every struct in the family has two member types:
+// Head for the first type in the list, and Tail for the rest of the
+// list.
+
+// The empty type list.
+struct Types0 {};
+
+// Type lists of length 1, 2, 3, and so on.
+
+template <typename T1>
+struct Types1 {
+ typedef T1 Head;
+ typedef Types0 Tail;
+};
+template <typename T1, typename T2>
+struct Types2 {
+ typedef T1 Head;
+ typedef Types1<T2> Tail;
+};
+
+template <typename T1, typename T2, typename T3>
+struct Types3 {
+ typedef T1 Head;
+ typedef Types2<T2, T3> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4>
+struct Types4 {
+ typedef T1 Head;
+ typedef Types3<T2, T3, T4> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+struct Types5 {
+ typedef T1 Head;
+ typedef Types4<T2, T3, T4, T5> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6>
+struct Types6 {
+ typedef T1 Head;
+ typedef Types5<T2, T3, T4, T5, T6> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7>
+struct Types7 {
+ typedef T1 Head;
+ typedef Types6<T2, T3, T4, T5, T6, T7> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8>
+struct Types8 {
+ typedef T1 Head;
+ typedef Types7<T2, T3, T4, T5, T6, T7, T8> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9>
+struct Types9 {
+ typedef T1 Head;
+ typedef Types8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10>
+struct Types10 {
+ typedef T1 Head;
+ typedef Types9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11>
+struct Types11 {
+ typedef T1 Head;
+ typedef Types10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12>
+struct Types12 {
+ typedef T1 Head;
+ typedef Types11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13>
+struct Types13 {
+ typedef T1 Head;
+ typedef Types12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14>
+struct Types14 {
+ typedef T1 Head;
+ typedef Types13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15>
+struct Types15 {
+ typedef T1 Head;
+ typedef Types14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16>
+struct Types16 {
+ typedef T1 Head;
+ typedef Types15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17>
+struct Types17 {
+ typedef T1 Head;
+ typedef Types16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18>
+struct Types18 {
+ typedef T1 Head;
+ typedef Types17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19>
+struct Types19 {
+ typedef T1 Head;
+ typedef Types18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20>
+struct Types20 {
+ typedef T1 Head;
+ typedef Types19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21>
+struct Types21 {
+ typedef T1 Head;
+ typedef Types20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22>
+struct Types22 {
+ typedef T1 Head;
+ typedef Types21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23>
+struct Types23 {
+ typedef T1 Head;
+ typedef Types22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24>
+struct Types24 {
+ typedef T1 Head;
+ typedef Types23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25>
+struct Types25 {
+ typedef T1 Head;
+ typedef Types24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26>
+struct Types26 {
+ typedef T1 Head;
+ typedef Types25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27>
+struct Types27 {
+ typedef T1 Head;
+ typedef Types26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28>
+struct Types28 {
+ typedef T1 Head;
+ typedef Types27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29>
+struct Types29 {
+ typedef T1 Head;
+ typedef Types28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30>
+struct Types30 {
+ typedef T1 Head;
+ typedef Types29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31>
+struct Types31 {
+ typedef T1 Head;
+ typedef Types30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32>
+struct Types32 {
+ typedef T1 Head;
+ typedef Types31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33>
+struct Types33 {
+ typedef T1 Head;
+ typedef Types32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34>
+struct Types34 {
+ typedef T1 Head;
+ typedef Types33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35>
+struct Types35 {
+ typedef T1 Head;
+ typedef Types34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36>
+struct Types36 {
+ typedef T1 Head;
+ typedef Types35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37>
+struct Types37 {
+ typedef T1 Head;
+ typedef Types36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38>
+struct Types38 {
+ typedef T1 Head;
+ typedef Types37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39>
+struct Types39 {
+ typedef T1 Head;
+ typedef Types38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40>
+struct Types40 {
+ typedef T1 Head;
+ typedef Types39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41>
+struct Types41 {
+ typedef T1 Head;
+ typedef Types40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42>
+struct Types42 {
+ typedef T1 Head;
+ typedef Types41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43>
+struct Types43 {
+ typedef T1 Head;
+ typedef Types42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44>
+struct Types44 {
+ typedef T1 Head;
+ typedef Types43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45>
+struct Types45 {
+ typedef T1 Head;
+ typedef Types44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46>
+struct Types46 {
+ typedef T1 Head;
+ typedef Types45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47>
+struct Types47 {
+ typedef T1 Head;
+ typedef Types46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48>
+struct Types48 {
+ typedef T1 Head;
+ typedef Types47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47, T48> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49>
+struct Types49 {
+ typedef T1 Head;
+ typedef Types48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47, T48, T49> Tail;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49, typename T50>
+struct Types50 {
+ typedef T1 Head;
+ typedef Types49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47, T48, T49, T50> Tail;
+};
+
+
+} // namespace internal
+
+// We don't want to require the users to write TypesN<...> directly,
+// as that would require them to count the length. Types<...> is much
+// easier to write, but generates horrible messages when there is a
+// compiler error, as gcc insists on printing out each template
+// argument, even if it has the default value (this means Types<int>
+// will appear as Types<int, None, None, ..., None> in the compiler
+// errors).
+//
+// Our solution is to combine the best part of the two approaches: a
+// user would write Types<T1, ..., TN>, and Google Test will translate
+// that to TypesN<T1, ..., TN> internally to make error messages
+// readable. The translation is done by the 'type' member of the
+// Types template.
+template <typename T1 = internal::None, typename T2 = internal::None,
+ typename T3 = internal::None, typename T4 = internal::None,
+ typename T5 = internal::None, typename T6 = internal::None,
+ typename T7 = internal::None, typename T8 = internal::None,
+ typename T9 = internal::None, typename T10 = internal::None,
+ typename T11 = internal::None, typename T12 = internal::None,
+ typename T13 = internal::None, typename T14 = internal::None,
+ typename T15 = internal::None, typename T16 = internal::None,
+ typename T17 = internal::None, typename T18 = internal::None,
+ typename T19 = internal::None, typename T20 = internal::None,
+ typename T21 = internal::None, typename T22 = internal::None,
+ typename T23 = internal::None, typename T24 = internal::None,
+ typename T25 = internal::None, typename T26 = internal::None,
+ typename T27 = internal::None, typename T28 = internal::None,
+ typename T29 = internal::None, typename T30 = internal::None,
+ typename T31 = internal::None, typename T32 = internal::None,
+ typename T33 = internal::None, typename T34 = internal::None,
+ typename T35 = internal::None, typename T36 = internal::None,
+ typename T37 = internal::None, typename T38 = internal::None,
+ typename T39 = internal::None, typename T40 = internal::None,
+ typename T41 = internal::None, typename T42 = internal::None,
+ typename T43 = internal::None, typename T44 = internal::None,
+ typename T45 = internal::None, typename T46 = internal::None,
+ typename T47 = internal::None, typename T48 = internal::None,
+ typename T49 = internal::None, typename T50 = internal::None>
+struct Types {
+ typedef internal::Types50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
+};
+
+template <>
+struct Types<internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types0 type;
+};
+template <typename T1>
+struct Types<T1, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types1<T1> type;
+};
+template <typename T1, typename T2>
+struct Types<T1, T2, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types2<T1, T2> type;
+};
+template <typename T1, typename T2, typename T3>
+struct Types<T1, T2, T3, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types3<T1, T2, T3> type;
+};
+template <typename T1, typename T2, typename T3, typename T4>
+struct Types<T1, T2, T3, T4, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types4<T1, T2, T3, T4> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
+struct Types<T1, T2, T3, T4, T5, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types5<T1, T2, T3, T4, T5> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6>
+struct Types<T1, T2, T3, T4, T5, T6, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types6<T1, T2, T3, T4, T5, T6> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7>
+struct Types<T1, T2, T3, T4, T5, T6, T7, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types7<T1, T2, T3, T4, T5, T6, T7> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types8<T1, T2, T3, T4, T5, T6, T7, T8> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
+ T12> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
+ T26> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
+ T40> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, internal::None,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None, internal::None> {
+ typedef internal::Types43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None, internal::None> {
+ typedef internal::Types44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
+ internal::None, internal::None, internal::None, internal::None,
+ internal::None> {
+ typedef internal::Types45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44, T45> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
+ T46, internal::None, internal::None, internal::None, internal::None> {
+ typedef internal::Types46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44, T45, T46> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
+ T46, T47, internal::None, internal::None, internal::None> {
+ typedef internal::Types47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44, T45, T46, T47> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
+ T46, T47, T48, internal::None, internal::None> {
+ typedef internal::Types48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44, T45, T46, T47, T48> type;
+};
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49>
+struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
+ T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
+ T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
+ T46, T47, T48, T49, internal::None> {
+ typedef internal::Types49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44, T45, T46, T47, T48, T49> type;
+};
+
+namespace internal {
+
+# define GTEST_TEMPLATE_ template <typename T> class
+
+// The template "selector" struct TemplateSel<Tmpl> is used to
+// represent Tmpl, which must be a class template with one type
+// parameter, as a type. TemplateSel<Tmpl>::Bind<T>::type is defined
+// as the type Tmpl<T>. This allows us to actually instantiate the
+// template "selected" by TemplateSel<Tmpl>.
+//
+// This trick is necessary for simulating typedef for class templates,
+// which C++ doesn't support directly.
+template <GTEST_TEMPLATE_ Tmpl>
+struct TemplateSel {
+ template <typename T>
+ struct Bind {
+ typedef Tmpl<T> type;
+ };
+};
+
+# define GTEST_BIND_(TmplSel, T) \
+ TmplSel::template Bind<T>::type
+
+// A unique struct template used as the default value for the
+// arguments of class template Templates. This allows us to simulate
+// variadic templates (e.g. Templates<int>, Templates<int, double>,
+// and etc), which C++ doesn't support directly.
+template <typename T>
+struct NoneT {};
+
+// The following family of struct and struct templates are used to
+// represent template lists. In particular, TemplatesN<T1, T2, ...,
+// TN> represents a list of N templates (T1, T2, ..., and TN). Except
+// for Templates0, every struct in the family has two member types:
+// Head for the selector of the first template in the list, and Tail
+// for the rest of the list.
+
+// The empty template list.
+struct Templates0 {};
+
+// Template lists of length 1, 2, 3, and so on.
+
+template <GTEST_TEMPLATE_ T1>
+struct Templates1 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates0 Tail;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
+struct Templates2 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates1<T2> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
+struct Templates3 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates2<T2, T3> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4>
+struct Templates4 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates3<T2, T3, T4> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
+struct Templates5 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates4<T2, T3, T4, T5> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
+struct Templates6 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates5<T2, T3, T4, T5, T6> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7>
+struct Templates7 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates6<T2, T3, T4, T5, T6, T7> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
+struct Templates8 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates7<T2, T3, T4, T5, T6, T7, T8> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
+struct Templates9 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10>
+struct Templates10 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
+struct Templates11 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
+struct Templates12 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13>
+struct Templates13 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
+struct Templates14 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
+struct Templates15 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16>
+struct Templates16 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
+struct Templates17 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
+struct Templates18 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19>
+struct Templates19 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
+struct Templates20 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
+struct Templates21 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22>
+struct Templates22 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
+struct Templates23 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
+struct Templates24 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25>
+struct Templates25 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
+struct Templates26 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
+struct Templates27 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28>
+struct Templates28 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
+struct Templates29 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
+struct Templates30 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31>
+struct Templates31 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
+struct Templates32 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
+struct Templates33 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34>
+struct Templates34 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
+struct Templates35 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
+struct Templates36 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37>
+struct Templates37 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
+struct Templates38 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
+struct Templates39 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40>
+struct Templates40 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
+struct Templates41 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
+struct Templates42 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43>
+struct Templates43 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
+struct Templates44 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43, T44> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
+struct Templates45 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43, T44, T45> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46>
+struct Templates46 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43, T44, T45, T46> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
+struct Templates47 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43, T44, T45, T46, T47> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
+struct Templates48 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43, T44, T45, T46, T47, T48> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
+ GTEST_TEMPLATE_ T49>
+struct Templates49 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43, T44, T45, T46, T47, T48, T49> Tail;
+};
+
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
+ GTEST_TEMPLATE_ T49, GTEST_TEMPLATE_ T50>
+struct Templates50 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
+ T43, T44, T45, T46, T47, T48, T49, T50> Tail;
+};
+
+
+// We don't want to require the users to write TemplatesN<...> directly,
+// as that would require them to count the length. Templates<...> is much
+// easier to write, but generates horrible messages when there is a
+// compiler error, as gcc insists on printing out each template
+// argument, even if it has the default value (this means Templates<list>
+// will appear as Templates<list, NoneT, NoneT, ..., NoneT> in the compiler
+// errors).
+//
+// Our solution is to combine the best part of the two approaches: a
+// user would write Templates<T1, ..., TN>, and Google Test will translate
+// that to TemplatesN<T1, ..., TN> internally to make error messages
+// readable. The translation is done by the 'type' member of the
+// Templates template.
+template <GTEST_TEMPLATE_ T1 = NoneT, GTEST_TEMPLATE_ T2 = NoneT,
+ GTEST_TEMPLATE_ T3 = NoneT, GTEST_TEMPLATE_ T4 = NoneT,
+ GTEST_TEMPLATE_ T5 = NoneT, GTEST_TEMPLATE_ T6 = NoneT,
+ GTEST_TEMPLATE_ T7 = NoneT, GTEST_TEMPLATE_ T8 = NoneT,
+ GTEST_TEMPLATE_ T9 = NoneT, GTEST_TEMPLATE_ T10 = NoneT,
+ GTEST_TEMPLATE_ T11 = NoneT, GTEST_TEMPLATE_ T12 = NoneT,
+ GTEST_TEMPLATE_ T13 = NoneT, GTEST_TEMPLATE_ T14 = NoneT,
+ GTEST_TEMPLATE_ T15 = NoneT, GTEST_TEMPLATE_ T16 = NoneT,
+ GTEST_TEMPLATE_ T17 = NoneT, GTEST_TEMPLATE_ T18 = NoneT,
+ GTEST_TEMPLATE_ T19 = NoneT, GTEST_TEMPLATE_ T20 = NoneT,
+ GTEST_TEMPLATE_ T21 = NoneT, GTEST_TEMPLATE_ T22 = NoneT,
+ GTEST_TEMPLATE_ T23 = NoneT, GTEST_TEMPLATE_ T24 = NoneT,
+ GTEST_TEMPLATE_ T25 = NoneT, GTEST_TEMPLATE_ T26 = NoneT,
+ GTEST_TEMPLATE_ T27 = NoneT, GTEST_TEMPLATE_ T28 = NoneT,
+ GTEST_TEMPLATE_ T29 = NoneT, GTEST_TEMPLATE_ T30 = NoneT,
+ GTEST_TEMPLATE_ T31 = NoneT, GTEST_TEMPLATE_ T32 = NoneT,
+ GTEST_TEMPLATE_ T33 = NoneT, GTEST_TEMPLATE_ T34 = NoneT,
+ GTEST_TEMPLATE_ T35 = NoneT, GTEST_TEMPLATE_ T36 = NoneT,
+ GTEST_TEMPLATE_ T37 = NoneT, GTEST_TEMPLATE_ T38 = NoneT,
+ GTEST_TEMPLATE_ T39 = NoneT, GTEST_TEMPLATE_ T40 = NoneT,
+ GTEST_TEMPLATE_ T41 = NoneT, GTEST_TEMPLATE_ T42 = NoneT,
+ GTEST_TEMPLATE_ T43 = NoneT, GTEST_TEMPLATE_ T44 = NoneT,
+ GTEST_TEMPLATE_ T45 = NoneT, GTEST_TEMPLATE_ T46 = NoneT,
+ GTEST_TEMPLATE_ T47 = NoneT, GTEST_TEMPLATE_ T48 = NoneT,
+ GTEST_TEMPLATE_ T49 = NoneT, GTEST_TEMPLATE_ T50 = NoneT>
+struct Templates {
+ typedef Templates50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
+};
+
+template <>
+struct Templates<NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT> {
+ typedef Templates0 type;
+};
+template <GTEST_TEMPLATE_ T1>
+struct Templates<T1, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT> {
+ typedef Templates1<T1> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
+struct Templates<T1, T2, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT> {
+ typedef Templates2<T1, T2> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
+struct Templates<T1, T2, T3, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates3<T1, T2, T3> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4>
+struct Templates<T1, T2, T3, T4, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates4<T1, T2, T3, T4> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
+struct Templates<T1, T2, T3, T4, T5, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates5<T1, T2, T3, T4, T5> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
+struct Templates<T1, T2, T3, T4, T5, T6, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates6<T1, T2, T3, T4, T5, T6> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates7<T1, T2, T3, T4, T5, T6, T7> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates8<T1, T2, T3, T4, T5, T6, T7, T8> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT> {
+ typedef Templates22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT> {
+ typedef Templates23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT> {
+ typedef Templates24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT> {
+ typedef Templates25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT> {
+ typedef Templates26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT> {
+ typedef Templates27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT> {
+ typedef Templates28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT> {
+ typedef Templates29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, NoneT, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, NoneT, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, NoneT, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, NoneT, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, NoneT,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+ NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43, T44> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+ T45, NoneT, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43, T44, T45> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+ T45, T46, NoneT, NoneT, NoneT, NoneT> {
+ typedef Templates46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43, T44, T45, T46> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+ T45, T46, T47, NoneT, NoneT, NoneT> {
+ typedef Templates47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43, T44, T45, T46, T47> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+ T45, T46, T47, T48, NoneT, NoneT> {
+ typedef Templates48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43, T44, T45, T46, T47, T48> type;
+};
+template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
+ GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
+ GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
+ GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
+ GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
+ GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
+ GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
+ GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
+ GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
+ GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
+ GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
+ GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
+ GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
+ GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
+ GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
+ GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
+ GTEST_TEMPLATE_ T49>
+struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
+ T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
+ T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
+ T45, T46, T47, T48, T49, NoneT> {
+ typedef Templates49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
+ T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
+ T42, T43, T44, T45, T46, T47, T48, T49> type;
+};
+
+// The TypeList template makes it possible to use either a single type
+// or a Types<...> list in TYPED_TEST_CASE() and
+// INSTANTIATE_TYPED_TEST_CASE_P().
+
+template <typename T>
+struct TypeList {
+ typedef Types1<T> type;
+};
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5,
+ typename T6, typename T7, typename T8, typename T9, typename T10,
+ typename T11, typename T12, typename T13, typename T14, typename T15,
+ typename T16, typename T17, typename T18, typename T19, typename T20,
+ typename T21, typename T22, typename T23, typename T24, typename T25,
+ typename T26, typename T27, typename T28, typename T29, typename T30,
+ typename T31, typename T32, typename T33, typename T34, typename T35,
+ typename T36, typename T37, typename T38, typename T39, typename T40,
+ typename T41, typename T42, typename T43, typename T44, typename T45,
+ typename T46, typename T47, typename T48, typename T49, typename T50>
+struct TypeList<Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
+ T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
+ T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
+ T44, T45, T46, T47, T48, T49, T50> > {
+ typedef typename Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
+ T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
+ T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
+ T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>::type type;
+};
+
+#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
diff --git a/test/fmw/gtest/include/gtest/internal/gtest-type-util.h.pump b/test/fmw/gtest/include/gtest/internal/gtest-type-util.h.pump
new file mode 100644
index 0000000..251fdf0
--- /dev/null
+++ b/test/fmw/gtest/include/gtest/internal/gtest-type-util.h.pump
@@ -0,0 +1,297 @@
+$$ -*- mode: c++; -*-
+$var n = 50 $$ Maximum length of type lists we want to support.
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Type utilities needed for implementing typed and type-parameterized
+// tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
+//
+// Currently we support at most $n types in a list, and at most $n
+// type-parameterized tests in one type-parameterized test case.
+// Please contact googletestframework@googlegroups.com if you need
+// more.
+
+#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
+#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
+
+#include "gtest/internal/gtest-port.h"
+
+// #ifdef __GNUC__ is too general here. It is possible to use gcc without using
+// libstdc++ (which is where cxxabi.h comes from).
+# if GTEST_HAS_CXXABI_H_
+# include <cxxabi.h>
+# elif defined(__HP_aCC)
+# include <acxx_demangle.h>
+# endif // GTEST_HASH_CXXABI_H_
+
+namespace testing {
+namespace internal {
+
+// GetTypeName<T>() returns a human-readable name of type T.
+// NB: This function is also used in Google Mock, so don't move it inside of
+// the typed-test-only section below.
+template <typename T>
+std::string GetTypeName() {
+# if GTEST_HAS_RTTI
+
+ const char* const name = typeid(T).name();
+# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
+ int status = 0;
+ // gcc's implementation of typeid(T).name() mangles the type name,
+ // so we have to demangle it.
+# if GTEST_HAS_CXXABI_H_
+ using abi::__cxa_demangle;
+# endif // GTEST_HAS_CXXABI_H_
+ char* const readable_name = __cxa_demangle(name, 0, 0, &status);
+ const std::string name_str(status == 0 ? readable_name : name);
+ free(readable_name);
+ return name_str;
+# else
+ return name;
+# endif // GTEST_HAS_CXXABI_H_ || __HP_aCC
+
+# else
+
+ return "<type>";
+
+# endif // GTEST_HAS_RTTI
+}
+
+#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+// AssertyTypeEq<T1, T2>::type is defined iff T1 and T2 are the same
+// type. This can be used as a compile-time assertion to ensure that
+// two types are equal.
+
+template <typename T1, typename T2>
+struct AssertTypeEq;
+
+template <typename T>
+struct AssertTypeEq<T, T> {
+ typedef bool type;
+};
+
+// A unique type used as the default value for the arguments of class
+// template Types. This allows us to simulate variadic templates
+// (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't
+// support directly.
+struct None {};
+
+// The following family of struct and struct templates are used to
+// represent type lists. In particular, TypesN<T1, T2, ..., TN>
+// represents a type list with N types (T1, T2, ..., and TN) in it.
+// Except for Types0, every struct in the family has two member types:
+// Head for the first type in the list, and Tail for the rest of the
+// list.
+
+// The empty type list.
+struct Types0 {};
+
+// Type lists of length 1, 2, 3, and so on.
+
+template <typename T1>
+struct Types1 {
+ typedef T1 Head;
+ typedef Types0 Tail;
+};
+
+$range i 2..n
+
+$for i [[
+$range j 1..i
+$range k 2..i
+template <$for j, [[typename T$j]]>
+struct Types$i {
+ typedef T1 Head;
+ typedef Types$(i-1)<$for k, [[T$k]]> Tail;
+};
+
+
+]]
+
+} // namespace internal
+
+// We don't want to require the users to write TypesN<...> directly,
+// as that would require them to count the length. Types<...> is much
+// easier to write, but generates horrible messages when there is a
+// compiler error, as gcc insists on printing out each template
+// argument, even if it has the default value (this means Types<int>
+// will appear as Types<int, None, None, ..., None> in the compiler
+// errors).
+//
+// Our solution is to combine the best part of the two approaches: a
+// user would write Types<T1, ..., TN>, and Google Test will translate
+// that to TypesN<T1, ..., TN> internally to make error messages
+// readable. The translation is done by the 'type' member of the
+// Types template.
+
+$range i 1..n
+template <$for i, [[typename T$i = internal::None]]>
+struct Types {
+ typedef internal::Types$n<$for i, [[T$i]]> type;
+};
+
+template <>
+struct Types<$for i, [[internal::None]]> {
+ typedef internal::Types0 type;
+};
+
+$range i 1..n-1
+$for i [[
+$range j 1..i
+$range k i+1..n
+template <$for j, [[typename T$j]]>
+struct Types<$for j, [[T$j]]$for k[[, internal::None]]> {
+ typedef internal::Types$i<$for j, [[T$j]]> type;
+};
+
+]]
+
+namespace internal {
+
+# define GTEST_TEMPLATE_ template <typename T> class
+
+// The template "selector" struct TemplateSel<Tmpl> is used to
+// represent Tmpl, which must be a class template with one type
+// parameter, as a type. TemplateSel<Tmpl>::Bind<T>::type is defined
+// as the type Tmpl<T>. This allows us to actually instantiate the
+// template "selected" by TemplateSel<Tmpl>.
+//
+// This trick is necessary for simulating typedef for class templates,
+// which C++ doesn't support directly.
+template <GTEST_TEMPLATE_ Tmpl>
+struct TemplateSel {
+ template <typename T>
+ struct Bind {
+ typedef Tmpl<T> type;
+ };
+};
+
+# define GTEST_BIND_(TmplSel, T) \
+ TmplSel::template Bind<T>::type
+
+// A unique struct template used as the default value for the
+// arguments of class template Templates. This allows us to simulate
+// variadic templates (e.g. Templates<int>, Templates<int, double>,
+// and etc), which C++ doesn't support directly.
+template <typename T>
+struct NoneT {};
+
+// The following family of struct and struct templates are used to
+// represent template lists. In particular, TemplatesN<T1, T2, ...,
+// TN> represents a list of N templates (T1, T2, ..., and TN). Except
+// for Templates0, every struct in the family has two member types:
+// Head for the selector of the first template in the list, and Tail
+// for the rest of the list.
+
+// The empty template list.
+struct Templates0 {};
+
+// Template lists of length 1, 2, 3, and so on.
+
+template <GTEST_TEMPLATE_ T1>
+struct Templates1 {
+ typedef TemplateSel<T1> Head;
+ typedef Templates0 Tail;
+};
+
+$range i 2..n
+
+$for i [[
+$range j 1..i
+$range k 2..i
+template <$for j, [[GTEST_TEMPLATE_ T$j]]>
+struct Templates$i {
+ typedef TemplateSel<T1> Head;
+ typedef Templates$(i-1)<$for k, [[T$k]]> Tail;
+};
+
+
+]]
+
+// We don't want to require the users to write TemplatesN<...> directly,
+// as that would require them to count the length. Templates<...> is much
+// easier to write, but generates horrible messages when there is a
+// compiler error, as gcc insists on printing out each template
+// argument, even if it has the default value (this means Templates<list>
+// will appear as Templates<list, NoneT, NoneT, ..., NoneT> in the compiler
+// errors).
+//
+// Our solution is to combine the best part of the two approaches: a
+// user would write Templates<T1, ..., TN>, and Google Test will translate
+// that to TemplatesN<T1, ..., TN> internally to make error messages
+// readable. The translation is done by the 'type' member of the
+// Templates template.
+
+$range i 1..n
+template <$for i, [[GTEST_TEMPLATE_ T$i = NoneT]]>
+struct Templates {
+ typedef Templates$n<$for i, [[T$i]]> type;
+};
+
+template <>
+struct Templates<$for i, [[NoneT]]> {
+ typedef Templates0 type;
+};
+
+$range i 1..n-1
+$for i [[
+$range j 1..i
+$range k i+1..n
+template <$for j, [[GTEST_TEMPLATE_ T$j]]>
+struct Templates<$for j, [[T$j]]$for k[[, NoneT]]> {
+ typedef Templates$i<$for j, [[T$j]]> type;
+};
+
+]]
+
+// The TypeList template makes it possible to use either a single type
+// or a Types<...> list in TYPED_TEST_CASE() and
+// INSTANTIATE_TYPED_TEST_CASE_P().
+
+template <typename T>
+struct TypeList {
+ typedef Types1<T> type;
+};
+
+
+$range i 1..n
+template <$for i, [[typename T$i]]>
+struct TypeList<Types<$for i, [[T$i]]> > {
+ typedef typename Types<$for i, [[T$i]]>::type type;
+};
+
+#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
diff --git a/test/fmw/gtest/src/gtest-all.cc b/test/fmw/gtest/src/gtest-all.cc
new file mode 100644
index 0000000..0a9cee5
--- /dev/null
+++ b/test/fmw/gtest/src/gtest-all.cc
@@ -0,0 +1,48 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: mheule@google.com (Markus Heule)
+//
+// Google C++ Testing Framework (Google Test)
+//
+// Sometimes it's desirable to build Google Test by compiling a single file.
+// This file serves this purpose.
+
+// This line ensures that gtest.h can be compiled on its own, even
+// when it's fused.
+#include "gtest/gtest.h"
+
+// The following lines pull in the real gtest *.cc files.
+#include "src/gtest.cc"
+#include "src/gtest-death-test.cc"
+#include "src/gtest-filepath.cc"
+#include "src/gtest-port.cc"
+#include "src/gtest-printers.cc"
+#include "src/gtest-test-part.cc"
+#include "src/gtest-typed-test.cc"
diff --git a/test/fmw/gtest/src/gtest-death-test.cc b/test/fmw/gtest/src/gtest-death-test.cc
new file mode 100644
index 0000000..a6023fc
--- /dev/null
+++ b/test/fmw/gtest/src/gtest-death-test.cc
@@ -0,0 +1,1344 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan), vladl@google.com (Vlad Losev)
+//
+// This file implements death tests.
+
+#include "gtest/gtest-death-test.h"
+#include "gtest/internal/gtest-port.h"
+
+#if GTEST_HAS_DEATH_TEST
+
+# if GTEST_OS_MAC
+# include <crt_externs.h>
+# endif // GTEST_OS_MAC
+
+# include <errno.h>
+# include <fcntl.h>
+# include <limits.h>
+
+# if GTEST_OS_LINUX
+# include <signal.h>
+# endif // GTEST_OS_LINUX
+
+# include <stdarg.h>
+
+# if GTEST_OS_WINDOWS
+# include <windows.h>
+# else
+# include <sys/mman.h>
+# include <sys/wait.h>
+# endif // GTEST_OS_WINDOWS
+
+# if GTEST_OS_QNX
+# include <spawn.h>
+# endif // GTEST_OS_QNX
+
+#endif // GTEST_HAS_DEATH_TEST
+
+#include "gtest/gtest-message.h"
+#include "gtest/internal/gtest-string.h"
+
+// Indicates that this translation unit is part of Google Test's
+// implementation. It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error. This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+namespace testing {
+
+// Constants.
+
+// The default death test style.
+static const char kDefaultDeathTestStyle[] = "fast";
+
+GTEST_DEFINE_string_(
+ death_test_style,
+ internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle),
+ "Indicates how to run a death test in a forked child process: "
+ "\"threadsafe\" (child process re-executes the test binary "
+ "from the beginning, running only the specific death test) or "
+ "\"fast\" (child process runs the death test immediately "
+ "after forking).");
+
+GTEST_DEFINE_bool_(
+ death_test_use_fork,
+ internal::BoolFromGTestEnv("death_test_use_fork", false),
+ "Instructs to use fork()/_exit() instead of clone() in death tests. "
+ "Ignored and always uses fork() on POSIX systems where clone() is not "
+ "implemented. Useful when running under valgrind or similar tools if "
+ "those do not support clone(). Valgrind 3.3.1 will just fail if "
+ "it sees an unsupported combination of clone() flags. "
+ "It is not recommended to use this flag w/o valgrind though it will "
+ "work in 99% of the cases. Once valgrind is fixed, this flag will "
+ "most likely be removed.");
+
+namespace internal {
+GTEST_DEFINE_string_(
+ internal_run_death_test, "",
+ "Indicates the file, line number, temporal index of "
+ "the single death test to run, and a file descriptor to "
+ "which a success code may be sent, all separated by "
+ "the '|' characters. This flag is specified if and only if the current "
+ "process is a sub-process launched for running a thread-safe "
+ "death test. FOR INTERNAL USE ONLY.");
+} // namespace internal
+
+#if GTEST_HAS_DEATH_TEST
+
+namespace internal {
+
+// Valid only for fast death tests. Indicates the code is running in the
+// child process of a fast style death test.
+static bool g_in_fast_death_test_child = false;
+
+// Returns a Boolean value indicating whether the caller is currently
+// executing in the context of the death test child process. Tools such as
+// Valgrind heap checkers may need this to modify their behavior in death
+// tests. IMPORTANT: This is an internal utility. Using it may break the
+// implementation of death tests. User code MUST NOT use it.
+bool InDeathTestChild() {
+# if GTEST_OS_WINDOWS
+
+ // On Windows, death tests are thread-safe regardless of the value of the
+ // death_test_style flag.
+ return !GTEST_FLAG(internal_run_death_test).empty();
+
+# else
+
+ if (GTEST_FLAG(death_test_style) == "threadsafe")
+ return !GTEST_FLAG(internal_run_death_test).empty();
+ else
+ return g_in_fast_death_test_child;
+#endif
+}
+
+} // namespace internal
+
+// ExitedWithCode constructor.
+ExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) {
+}
+
+// ExitedWithCode function-call operator.
+bool ExitedWithCode::operator()(int exit_status) const {
+# if GTEST_OS_WINDOWS
+
+ return exit_status == exit_code_;
+
+# else
+
+ return WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == exit_code_;
+
+# endif // GTEST_OS_WINDOWS
+}
+
+# if !GTEST_OS_WINDOWS
+// KilledBySignal constructor.
+KilledBySignal::KilledBySignal(int signum) : signum_(signum) {
+}
+
+// KilledBySignal function-call operator.
+bool KilledBySignal::operator()(int exit_status) const {
+ return WIFSIGNALED(exit_status) && WTERMSIG(exit_status) == signum_;
+}
+# endif // !GTEST_OS_WINDOWS
+
+namespace internal {
+
+// Utilities needed for death tests.
+
+// Generates a textual description of a given exit code, in the format
+// specified by wait(2).
+static std::string ExitSummary(int exit_code) {
+ Message m;
+
+# if GTEST_OS_WINDOWS
+
+ m << "Exited with exit status " << exit_code;
+
+# else
+
+ if (WIFEXITED(exit_code)) {
+ m << "Exited with exit status " << WEXITSTATUS(exit_code);
+ } else if (WIFSIGNALED(exit_code)) {
+ m << "Terminated by signal " << WTERMSIG(exit_code);
+ }
+# ifdef WCOREDUMP
+ if (WCOREDUMP(exit_code)) {
+ m << " (core dumped)";
+ }
+# endif
+# endif // GTEST_OS_WINDOWS
+
+ return m.GetString();
+}
+
+// Returns true if exit_status describes a process that was terminated
+// by a signal, or exited normally with a nonzero exit code.
+bool ExitedUnsuccessfully(int exit_status) {
+ return !ExitedWithCode(0)(exit_status);
+}
+
+# if !GTEST_OS_WINDOWS
+// Generates a textual failure message when a death test finds more than
+// one thread running, or cannot determine the number of threads, prior
+// to executing the given statement. It is the responsibility of the
+// caller not to pass a thread_count of 1.
+static std::string DeathTestThreadWarning(size_t thread_count) {
+ Message msg;
+ msg << "Death tests use fork(), which is unsafe particularly"
+ << " in a threaded context. For this test, " << GTEST_NAME_ << " ";
+ if (thread_count == 0)
+ msg << "couldn't detect the number of threads.";
+ else
+ msg << "detected " << thread_count << " threads.";
+ return msg.GetString();
+}
+# endif // !GTEST_OS_WINDOWS
+
+// Flag characters for reporting a death test that did not die.
+static const char kDeathTestLived = 'L';
+static const char kDeathTestReturned = 'R';
+static const char kDeathTestThrew = 'T';
+static const char kDeathTestInternalError = 'I';
+
+// An enumeration describing all of the possible ways that a death test can
+// conclude. DIED means that the process died while executing the test
+// code; LIVED means that process lived beyond the end of the test code;
+// RETURNED means that the test statement attempted to execute a return
+// statement, which is not allowed; THREW means that the test statement
+// returned control by throwing an exception. IN_PROGRESS means the test
+// has not yet concluded.
+// TODO(vladl@google.com): Unify names and possibly values for
+// AbortReason, DeathTestOutcome, and flag characters above.
+enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW };
+
+// Routine for aborting the program which is safe to call from an
+// exec-style death test child process, in which case the error
+// message is propagated back to the parent process. Otherwise, the
+// message is simply printed to stderr. In either case, the program
+// then exits with status 1.
+void DeathTestAbort(const std::string& message) {
+ // On a POSIX system, this function may be called from a threadsafe-style
+ // death test child process, which operates on a very small stack. Use
+ // the heap for any additional non-minuscule memory requirements.
+ const InternalRunDeathTestFlag* const flag =
+ GetUnitTestImpl()->internal_run_death_test_flag();
+ if (flag != NULL) {
+ FILE* parent = posix::FDOpen(flag->write_fd(), "w");
+ fputc(kDeathTestInternalError, parent);
+ fprintf(parent, "%s", message.c_str());
+ fflush(parent);
+ _exit(1);
+ } else {
+ fprintf(stderr, "%s", message.c_str());
+ fflush(stderr);
+ posix::Abort();
+ }
+}
+
+// A replacement for CHECK that calls DeathTestAbort if the assertion
+// fails.
+# define GTEST_DEATH_TEST_CHECK_(expression) \
+ do { \
+ if (!::testing::internal::IsTrue(expression)) { \
+ DeathTestAbort( \
+ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \
+ + ::testing::internal::StreamableToString(__LINE__) + ": " \
+ + #expression); \
+ } \
+ } while (::testing::internal::AlwaysFalse())
+
+// This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for
+// evaluating any system call that fulfills two conditions: it must return
+// -1 on failure, and set errno to EINTR when it is interrupted and
+// should be tried again. The macro expands to a loop that repeatedly
+// evaluates the expression as long as it evaluates to -1 and sets
+// errno to EINTR. If the expression evaluates to -1 but errno is
+// something other than EINTR, DeathTestAbort is called.
+# define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
+ do { \
+ int gtest_retval; \
+ do { \
+ gtest_retval = (expression); \
+ } while (gtest_retval == -1 && errno == EINTR); \
+ if (gtest_retval == -1) { \
+ DeathTestAbort( \
+ ::std::string("CHECK failed: File ") + __FILE__ + ", line " \
+ + ::testing::internal::StreamableToString(__LINE__) + ": " \
+ + #expression + " != -1"); \
+ } \
+ } while (::testing::internal::AlwaysFalse())
+
+// Returns the message describing the last system error in errno.
+std::string GetLastErrnoDescription() {
+ return errno == 0 ? "" : posix::StrError(errno);
+}
+
+// This is called from a death test parent process to read a failure
+// message from the death test child process and log it with the FATAL
+// severity. On Windows, the message is read from a pipe handle. On other
+// platforms, it is read from a file descriptor.
+static void FailFromInternalError(int fd) {
+ Message error;
+ char buffer[256];
+ int num_read;
+
+ do {
+ while ((num_read = posix::Read(fd, buffer, 255)) > 0) {
+ buffer[num_read] = '\0';
+ error << buffer;
+ }
+ } while (num_read == -1 && errno == EINTR);
+
+ if (num_read == 0) {
+ GTEST_LOG_(FATAL) << error.GetString();
+ } else {
+ const int last_error = errno;
+ GTEST_LOG_(FATAL) << "Error while reading death test internal: "
+ << GetLastErrnoDescription() << " [" << last_error << "]";
+ }
+}
+
+// Death test constructor. Increments the running death test count
+// for the current test.
+DeathTest::DeathTest() {
+ TestInfo* const info = GetUnitTestImpl()->current_test_info();
+ if (info == NULL) {
+ DeathTestAbort("Cannot run a death test outside of a TEST or "
+ "TEST_F construct");
+ }
+}
+
+// Creates and returns a death test by dispatching to the current
+// death test factory.
+bool DeathTest::Create(const char* statement, const RE* regex,
+ const char* file, int line, DeathTest** test) {
+ return GetUnitTestImpl()->death_test_factory()->Create(
+ statement, regex, file, line, test);
+}
+
+const char* DeathTest::LastMessage() {
+ return last_death_test_message_.c_str();
+}
+
+void DeathTest::set_last_death_test_message(const std::string& message) {
+ last_death_test_message_ = message;
+}
+
+std::string DeathTest::last_death_test_message_;
+
+// Provides cross platform implementation for some death functionality.
+class DeathTestImpl : public DeathTest {
+ protected:
+ DeathTestImpl(const char* a_statement, const RE* a_regex)
+ : statement_(a_statement),
+ regex_(a_regex),
+ spawned_(false),
+ status_(-1),
+ outcome_(IN_PROGRESS),
+ read_fd_(-1),
+ write_fd_(-1) {}
+
+ // read_fd_ is expected to be closed and cleared by a derived class.
+ ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); }
+
+ void Abort(AbortReason reason);
+ virtual bool Passed(bool status_ok);
+
+ const char* statement() const { return statement_; }
+ const RE* regex() const { return regex_; }
+ bool spawned() const { return spawned_; }
+ void set_spawned(bool is_spawned) { spawned_ = is_spawned; }
+ int status() const { return status_; }
+ void set_status(int a_status) { status_ = a_status; }
+ DeathTestOutcome outcome() const { return outcome_; }
+ void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; }
+ int read_fd() const { return read_fd_; }
+ void set_read_fd(int fd) { read_fd_ = fd; }
+ int write_fd() const { return write_fd_; }
+ void set_write_fd(int fd) { write_fd_ = fd; }
+
+ // Called in the parent process only. Reads the result code of the death
+ // test child process via a pipe, interprets it to set the outcome_
+ // member, and closes read_fd_. Outputs diagnostics and terminates in
+ // case of unexpected codes.
+ void ReadAndInterpretStatusByte();
+
+ private:
+ // The textual content of the code this object is testing. This class
+ // doesn't own this string and should not attempt to delete it.
+ const char* const statement_;
+ // The regular expression which test output must match. DeathTestImpl
+ // doesn't own this object and should not attempt to delete it.
+ const RE* const regex_;
+ // True if the death test child process has been successfully spawned.
+ bool spawned_;
+ // The exit status of the child process.
+ int status_;
+ // How the death test concluded.
+ DeathTestOutcome outcome_;
+ // Descriptor to the read end of the pipe to the child process. It is
+ // always -1 in the child process. The child keeps its write end of the
+ // pipe in write_fd_.
+ int read_fd_;
+ // Descriptor to the child's write end of the pipe to the parent process.
+ // It is always -1 in the parent process. The parent keeps its end of the
+ // pipe in read_fd_.
+ int write_fd_;
+};
+
+// Called in the parent process only. Reads the result code of the death
+// test child process via a pipe, interprets it to set the outcome_
+// member, and closes read_fd_. Outputs diagnostics and terminates in
+// case of unexpected codes.
+void DeathTestImpl::ReadAndInterpretStatusByte() {
+ char flag;
+ int bytes_read;
+
+ // The read() here blocks until data is available (signifying the
+ // failure of the death test) or until the pipe is closed (signifying
+ // its success), so it's okay to call this in the parent before
+ // the child process has exited.
+ do {
+ bytes_read = posix::Read(read_fd(), &flag, 1);
+ } while (bytes_read == -1 && errno == EINTR);
+
+ if (bytes_read == 0) {
+ set_outcome(DIED);
+ } else if (bytes_read == 1) {
+ switch (flag) {
+ case kDeathTestReturned:
+ set_outcome(RETURNED);
+ break;
+ case kDeathTestThrew:
+ set_outcome(THREW);
+ break;
+ case kDeathTestLived:
+ set_outcome(LIVED);
+ break;
+ case kDeathTestInternalError:
+ FailFromInternalError(read_fd()); // Does not return.
+ break;
+ default:
+ GTEST_LOG_(FATAL) << "Death test child process reported "
+ << "unexpected status byte ("
+ << static_cast<unsigned int>(flag) << ")";
+ }
+ } else {
+ GTEST_LOG_(FATAL) << "Read from death test child process failed: "
+ << GetLastErrnoDescription();
+ }
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Close(read_fd()));
+ set_read_fd(-1);
+}
+
+// Signals that the death test code which should have exited, didn't.
+// Should be called only in a death test child process.
+// Writes a status byte to the child's status file descriptor, then
+// calls _exit(1).
+void DeathTestImpl::Abort(AbortReason reason) {
+ // The parent process considers the death test to be a failure if
+ // it finds any data in our pipe. So, here we write a single flag byte
+ // to the pipe, then exit.
+ const char status_ch =
+ reason == TEST_DID_NOT_DIE ? kDeathTestLived :
+ reason == TEST_THREW_EXCEPTION ? kDeathTestThrew : kDeathTestReturned;
+
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Write(write_fd(), &status_ch, 1));
+ // We are leaking the descriptor here because on some platforms (i.e.,
+ // when built as Windows DLL), destructors of global objects will still
+ // run after calling _exit(). On such systems, write_fd_ will be
+ // indirectly closed from the destructor of UnitTestImpl, causing double
+ // close if it is also closed here. On debug configurations, double close
+ // may assert. As there are no in-process buffers to flush here, we are
+ // relying on the OS to close the descriptor after the process terminates
+ // when the destructors are not run.
+ _exit(1); // Exits w/o any normal exit hooks (we were supposed to crash)
+}
+
+// Returns an indented copy of stderr output for a death test.
+// This makes distinguishing death test output lines from regular log lines
+// much easier.
+static ::std::string FormatDeathTestOutput(const ::std::string& output) {
+ ::std::string ret;
+ for (size_t at = 0; ; ) {
+ const size_t line_end = output.find('\n', at);
+ ret += "[ DEATH ] ";
+ if (line_end == ::std::string::npos) {
+ ret += output.substr(at);
+ break;
+ }
+ ret += output.substr(at, line_end + 1 - at);
+ at = line_end + 1;
+ }
+ return ret;
+}
+
+// Assesses the success or failure of a death test, using both private
+// members which have previously been set, and one argument:
+//
+// Private data members:
+// outcome: An enumeration describing how the death test
+// concluded: DIED, LIVED, THREW, or RETURNED. The death test
+// fails in the latter three cases.
+// status: The exit status of the child process. On *nix, it is in the
+// in the format specified by wait(2). On Windows, this is the
+// value supplied to the ExitProcess() API or a numeric code
+// of the exception that terminated the program.
+// regex: A regular expression object to be applied to
+// the test's captured standard error output; the death test
+// fails if it does not match.
+//
+// Argument:
+// status_ok: true if exit_status is acceptable in the context of
+// this particular death test, which fails if it is false
+//
+// Returns true iff all of the above conditions are met. Otherwise, the
+// first failing condition, in the order given above, is the one that is
+// reported. Also sets the last death test message string.
+bool DeathTestImpl::Passed(bool status_ok) {
+ if (!spawned())
+ return false;
+
+ const std::string error_message = GetCapturedStderr();
+
+ bool success = false;
+ Message buffer;
+
+ buffer << "Death test: " << statement() << "\n";
+ switch (outcome()) {
+ case LIVED:
+ buffer << " Result: failed to die.\n"
+ << " Error msg:\n" << FormatDeathTestOutput(error_message);
+ break;
+ case THREW:
+ buffer << " Result: threw an exception.\n"
+ << " Error msg:\n" << FormatDeathTestOutput(error_message);
+ break;
+ case RETURNED:
+ buffer << " Result: illegal return in test statement.\n"
+ << " Error msg:\n" << FormatDeathTestOutput(error_message);
+ break;
+ case DIED:
+ if (status_ok) {
+ const bool matched = RE::PartialMatch(error_message.c_str(), *regex());
+ if (matched) {
+ success = true;
+ } else {
+ buffer << " Result: died but not with expected error.\n"
+ << " Expected: " << regex()->pattern() << "\n"
+ << "Actual msg:\n" << FormatDeathTestOutput(error_message);
+ }
+ } else {
+ buffer << " Result: died but not with expected exit code:\n"
+ << " " << ExitSummary(status()) << "\n"
+ << "Actual msg:\n" << FormatDeathTestOutput(error_message);
+ }
+ break;
+ case IN_PROGRESS:
+ default:
+ GTEST_LOG_(FATAL)
+ << "DeathTest::Passed somehow called before conclusion of test";
+ }
+
+ DeathTest::set_last_death_test_message(buffer.GetString());
+ return success;
+}
+
+# if GTEST_OS_WINDOWS
+// WindowsDeathTest implements death tests on Windows. Due to the
+// specifics of starting new processes on Windows, death tests there are
+// always threadsafe, and Google Test considers the
+// --gtest_death_test_style=fast setting to be equivalent to
+// --gtest_death_test_style=threadsafe there.
+//
+// A few implementation notes: Like the Linux version, the Windows
+// implementation uses pipes for child-to-parent communication. But due to
+// the specifics of pipes on Windows, some extra steps are required:
+//
+// 1. The parent creates a communication pipe and stores handles to both
+// ends of it.
+// 2. The parent starts the child and provides it with the information
+// necessary to acquire the handle to the write end of the pipe.
+// 3. The child acquires the write end of the pipe and signals the parent
+// using a Windows event.
+// 4. Now the parent can release the write end of the pipe on its side. If
+// this is done before step 3, the object's reference count goes down to
+// 0 and it is destroyed, preventing the child from acquiring it. The
+// parent now has to release it, or read operations on the read end of
+// the pipe will not return when the child terminates.
+// 5. The parent reads child's output through the pipe (outcome code and
+// any possible error messages) from the pipe, and its stderr and then
+// determines whether to fail the test.
+//
+// Note: to distinguish Win32 API calls from the local method and function
+// calls, the former are explicitly resolved in the global namespace.
+//
+class WindowsDeathTest : public DeathTestImpl {
+ public:
+ WindowsDeathTest(const char* a_statement,
+ const RE* a_regex,
+ const char* file,
+ int line)
+ : DeathTestImpl(a_statement, a_regex), file_(file), line_(line) {}
+
+ // All of these virtual functions are inherited from DeathTest.
+ virtual int Wait();
+ virtual TestRole AssumeRole();
+
+ private:
+ // The name of the file in which the death test is located.
+ const char* const file_;
+ // The line number on which the death test is located.
+ const int line_;
+ // Handle to the write end of the pipe to the child process.
+ AutoHandle write_handle_;
+ // Child process handle.
+ AutoHandle child_handle_;
+ // Event the child process uses to signal the parent that it has
+ // acquired the handle to the write end of the pipe. After seeing this
+ // event the parent can release its own handles to make sure its
+ // ReadFile() calls return when the child terminates.
+ AutoHandle event_handle_;
+};
+
+// Waits for the child in a death test to exit, returning its exit
+// status, or 0 if no child process exists. As a side effect, sets the
+// outcome data member.
+int WindowsDeathTest::Wait() {
+ if (!spawned())
+ return 0;
+
+ // Wait until the child either signals that it has acquired the write end
+ // of the pipe or it dies.
+ const HANDLE wait_handles[2] = { child_handle_.Get(), event_handle_.Get() };
+ switch (::WaitForMultipleObjects(2,
+ wait_handles,
+ FALSE, // Waits for any of the handles.
+ INFINITE)) {
+ case WAIT_OBJECT_0:
+ case WAIT_OBJECT_0 + 1:
+ break;
+ default:
+ GTEST_DEATH_TEST_CHECK_(false); // Should not get here.
+ }
+
+ // The child has acquired the write end of the pipe or exited.
+ // We release the handle on our side and continue.
+ write_handle_.Reset();
+ event_handle_.Reset();
+
+ ReadAndInterpretStatusByte();
+
+ // Waits for the child process to exit if it haven't already. This
+ // returns immediately if the child has already exited, regardless of
+ // whether previous calls to WaitForMultipleObjects synchronized on this
+ // handle or not.
+ GTEST_DEATH_TEST_CHECK_(
+ WAIT_OBJECT_0 == ::WaitForSingleObject(child_handle_.Get(),
+ INFINITE));
+ DWORD status_code;
+ GTEST_DEATH_TEST_CHECK_(
+ ::GetExitCodeProcess(child_handle_.Get(), &status_code) != FALSE);
+ child_handle_.Reset();
+ set_status(static_cast<int>(status_code));
+ return status();
+}
+
+// The AssumeRole process for a Windows death test. It creates a child
+// process with the same executable as the current process to run the
+// death test. The child process is given the --gtest_filter and
+// --gtest_internal_run_death_test flags such that it knows to run the
+// current death test only.
+DeathTest::TestRole WindowsDeathTest::AssumeRole() {
+ const UnitTestImpl* const impl = GetUnitTestImpl();
+ const InternalRunDeathTestFlag* const flag =
+ impl->internal_run_death_test_flag();
+ const TestInfo* const info = impl->current_test_info();
+ const int death_test_index = info->result()->death_test_count();
+
+ if (flag != NULL) {
+ // ParseInternalRunDeathTestFlag() has performed all the necessary
+ // processing.
+ set_write_fd(flag->write_fd());
+ return EXECUTE_TEST;
+ }
+
+ // WindowsDeathTest uses an anonymous pipe to communicate results of
+ // a death test.
+ SECURITY_ATTRIBUTES handles_are_inheritable = {
+ sizeof(SECURITY_ATTRIBUTES), NULL, TRUE };
+ HANDLE read_handle, write_handle;
+ GTEST_DEATH_TEST_CHECK_(
+ ::CreatePipe(&read_handle, &write_handle, &handles_are_inheritable,
+ 0) // Default buffer size.
+ != FALSE);
+ set_read_fd(::_open_osfhandle(reinterpret_cast<intptr_t>(read_handle),
+ O_RDONLY));
+ write_handle_.Reset(write_handle);
+ event_handle_.Reset(::CreateEvent(
+ &handles_are_inheritable,
+ TRUE, // The event will automatically reset to non-signaled state.
+ FALSE, // The initial state is non-signalled.
+ NULL)); // The even is unnamed.
+ GTEST_DEATH_TEST_CHECK_(event_handle_.Get() != NULL);
+ const std::string filter_flag =
+ std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "=" +
+ info->test_case_name() + "." + info->name();
+ const std::string internal_flag =
+ std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag +
+ "=" + file_ + "|" + StreamableToString(line_) + "|" +
+ StreamableToString(death_test_index) + "|" +
+ StreamableToString(static_cast<unsigned int>(::GetCurrentProcessId())) +
+ // size_t has the same width as pointers on both 32-bit and 64-bit
+ // Windows platforms.
+ // See http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx.
+ "|" + StreamableToString(reinterpret_cast<size_t>(write_handle)) +
+ "|" + StreamableToString(reinterpret_cast<size_t>(event_handle_.Get()));
+
+ char executable_path[_MAX_PATH + 1]; // NOLINT
+ GTEST_DEATH_TEST_CHECK_(
+ _MAX_PATH + 1 != ::GetModuleFileNameA(NULL,
+ executable_path,
+ _MAX_PATH));
+
+ std::string command_line =
+ std::string(::GetCommandLineA()) + " " + filter_flag + " \"" +
+ internal_flag + "\"";
+
+ DeathTest::set_last_death_test_message("");
+
+ CaptureStderr();
+ // Flush the log buffers since the log streams are shared with the child.
+ FlushInfoLog();
+
+ // The child process will share the standard handles with the parent.
+ STARTUPINFOA startup_info;
+ memset(&startup_info, 0, sizeof(STARTUPINFO));
+ startup_info.dwFlags = STARTF_USESTDHANDLES;
+ startup_info.hStdInput = ::GetStdHandle(STD_INPUT_HANDLE);
+ startup_info.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE);
+ startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE);
+
+ PROCESS_INFORMATION process_info;
+ GTEST_DEATH_TEST_CHECK_(::CreateProcessA(
+ executable_path,
+ const_cast<char*>(command_line.c_str()),
+ NULL, // Retuned process handle is not inheritable.
+ NULL, // Retuned thread handle is not inheritable.
+ TRUE, // Child inherits all inheritable handles (for write_handle_).
+ 0x0, // Default creation flags.
+ NULL, // Inherit the parent's environment.
+ UnitTest::GetInstance()->original_working_dir(),
+ &startup_info,
+ &process_info) != FALSE);
+ child_handle_.Reset(process_info.hProcess);
+ ::CloseHandle(process_info.hThread);
+ set_spawned(true);
+ return OVERSEE_TEST;
+}
+# else // We are not on Windows.
+
+// ForkingDeathTest provides implementations for most of the abstract
+// methods of the DeathTest interface. Only the AssumeRole method is
+// left undefined.
+class ForkingDeathTest : public DeathTestImpl {
+ public:
+ ForkingDeathTest(const char* statement, const RE* regex);
+
+ // All of these virtual functions are inherited from DeathTest.
+ virtual int Wait();
+
+ protected:
+ void set_child_pid(pid_t child_pid) { child_pid_ = child_pid; }
+
+ private:
+ // PID of child process during death test; 0 in the child process itself.
+ pid_t child_pid_;
+};
+
+// Constructs a ForkingDeathTest.
+ForkingDeathTest::ForkingDeathTest(const char* a_statement, const RE* a_regex)
+ : DeathTestImpl(a_statement, a_regex),
+ child_pid_(-1) {}
+
+// Waits for the child in a death test to exit, returning its exit
+// status, or 0 if no child process exists. As a side effect, sets the
+// outcome data member.
+int ForkingDeathTest::Wait() {
+ if (!spawned())
+ return 0;
+
+ ReadAndInterpretStatusByte();
+
+ int status_value;
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status_value, 0));
+ set_status(status_value);
+ return status_value;
+}
+
+// A concrete death test class that forks, then immediately runs the test
+// in the child process.
+class NoExecDeathTest : public ForkingDeathTest {
+ public:
+ NoExecDeathTest(const char* a_statement, const RE* a_regex) :
+ ForkingDeathTest(a_statement, a_regex) { }
+ virtual TestRole AssumeRole();
+};
+
+// The AssumeRole process for a fork-and-run death test. It implements a
+// straightforward fork, with a simple pipe to transmit the status byte.
+DeathTest::TestRole NoExecDeathTest::AssumeRole() {
+ const size_t thread_count = GetThreadCount();
+ if (thread_count != 1) {
+ GTEST_LOG_(WARNING) << DeathTestThreadWarning(thread_count);
+ }
+
+ int pipe_fd[2];
+ GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
+
+ DeathTest::set_last_death_test_message("");
+ CaptureStderr();
+ // When we fork the process below, the log file buffers are copied, but the
+ // file descriptors are shared. We flush all log files here so that closing
+ // the file descriptors in the child process doesn't throw off the
+ // synchronization between descriptors and buffers in the parent process.
+ // This is as close to the fork as possible to avoid a race condition in case
+ // there are multiple threads running before the death test, and another
+ // thread writes to the log file.
+ FlushInfoLog();
+
+ const pid_t child_pid = fork();
+ GTEST_DEATH_TEST_CHECK_(child_pid != -1);
+ set_child_pid(child_pid);
+ if (child_pid == 0) {
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[0]));
+ set_write_fd(pipe_fd[1]);
+ // Redirects all logging to stderr in the child process to prevent
+ // concurrent writes to the log files. We capture stderr in the parent
+ // process and append the child process' output to a log.
+ LogToStderr();
+ // Event forwarding to the listeners of event listener API mush be shut
+ // down in death test subprocesses.
+ GetUnitTestImpl()->listeners()->SuppressEventForwarding();
+ g_in_fast_death_test_child = true;
+ return EXECUTE_TEST;
+ } else {
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
+ set_read_fd(pipe_fd[0]);
+ set_spawned(true);
+ return OVERSEE_TEST;
+ }
+}
+
+// A concrete death test class that forks and re-executes the main
+// program from the beginning, with command-line flags set that cause
+// only this specific death test to be run.
+class ExecDeathTest : public ForkingDeathTest {
+ public:
+ ExecDeathTest(const char* a_statement, const RE* a_regex,
+ const char* file, int line) :
+ ForkingDeathTest(a_statement, a_regex), file_(file), line_(line) { }
+ virtual TestRole AssumeRole();
+ private:
+ static ::std::vector<testing::internal::string>
+ GetArgvsForDeathTestChildProcess() {
+ ::std::vector<testing::internal::string> args = GetInjectableArgvs();
+ return args;
+ }
+ // The name of the file in which the death test is located.
+ const char* const file_;
+ // The line number on which the death test is located.
+ const int line_;
+};
+
+// Utility class for accumulating command-line arguments.
+class Arguments {
+ public:
+ Arguments() {
+ args_.push_back(NULL);
+ }
+
+ ~Arguments() {
+ for (std::vector<char*>::iterator i = args_.begin(); i != args_.end();
+ ++i) {
+ free(*i);
+ }
+ }
+ void AddArgument(const char* argument) {
+ args_.insert(args_.end() - 1, posix::StrDup(argument));
+ }
+
+ template <typename Str>
+ void AddArguments(const ::std::vector<Str>& arguments) {
+ for (typename ::std::vector<Str>::const_iterator i = arguments.begin();
+ i != arguments.end();
+ ++i) {
+ args_.insert(args_.end() - 1, posix::StrDup(i->c_str()));
+ }
+ }
+ char* const* Argv() {
+ return &args_[0];
+ }
+
+ private:
+ std::vector<char*> args_;
+};
+
+// A struct that encompasses the arguments to the child process of a
+// threadsafe-style death test process.
+struct ExecDeathTestArgs {
+ char* const* argv; // Command-line arguments for the child's call to exec
+ int close_fd; // File descriptor to close; the read end of a pipe
+};
+
+# if GTEST_OS_MAC
+inline char** GetEnviron() {
+ // When Google Test is built as a framework on MacOS X, the environ variable
+ // is unavailable. Apple's documentation (man environ) recommends using
+ // _NSGetEnviron() instead.
+ return *_NSGetEnviron();
+}
+# else
+// Some POSIX platforms expect you to declare environ. extern "C" makes
+// it reside in the global namespace.
+extern "C" char** environ;
+inline char** GetEnviron() { return environ; }
+# endif // GTEST_OS_MAC
+
+# if !GTEST_OS_QNX
+// The main function for a threadsafe-style death test child process.
+// This function is called in a clone()-ed process and thus must avoid
+// any potentially unsafe operations like malloc or libc functions.
+static int ExecDeathTestChildMain(void* child_arg) {
+ ExecDeathTestArgs* const args = static_cast<ExecDeathTestArgs*>(child_arg);
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(close(args->close_fd));
+
+ // We need to execute the test program in the same environment where
+ // it was originally invoked. Therefore we change to the original
+ // working directory first.
+ const char* const original_dir =
+ UnitTest::GetInstance()->original_working_dir();
+ // We can safely call chdir() as it's a direct system call.
+ if (chdir(original_dir) != 0) {
+ DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
+ GetLastErrnoDescription());
+ return EXIT_FAILURE;
+ }
+
+ // We can safely call execve() as it's a direct system call. We
+ // cannot use execvp() as it's a libc function and thus potentially
+ // unsafe. Since execve() doesn't search the PATH, the user must
+ // invoke the test program via a valid path that contains at least
+ // one path separator.
+ execve(args->argv[0], args->argv, GetEnviron());
+ DeathTestAbort(std::string("execve(") + args->argv[0] + ", ...) in " +
+ original_dir + " failed: " +
+ GetLastErrnoDescription());
+ return EXIT_FAILURE;
+}
+# endif // !GTEST_OS_QNX
+
+// Two utility routines that together determine the direction the stack
+// grows.
+// This could be accomplished more elegantly by a single recursive
+// function, but we want to guard against the unlikely possibility of
+// a smart compiler optimizing the recursion away.
+//
+// GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining
+// StackLowerThanAddress into StackGrowsDown, which then doesn't give
+// correct answer.
+void StackLowerThanAddress(const void* ptr, bool* result) GTEST_NO_INLINE_;
+void StackLowerThanAddress(const void* ptr, bool* result) {
+ int dummy;
+ *result = (&dummy < ptr);
+}
+
+bool StackGrowsDown() {
+ int dummy;
+ bool result;
+ StackLowerThanAddress(&dummy, &result);
+ return result;
+}
+
+// Spawns a child process with the same executable as the current process in
+// a thread-safe manner and instructs it to run the death test. The
+// implementation uses fork(2) + exec. On systems where clone(2) is
+// available, it is used instead, being slightly more thread-safe. On QNX,
+// fork supports only single-threaded environments, so this function uses
+// spawn(2) there instead. The function dies with an error message if
+// anything goes wrong.
+static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) {
+ ExecDeathTestArgs args = { argv, close_fd };
+ pid_t child_pid = -1;
+
+# if GTEST_OS_QNX
+ // Obtains the current directory and sets it to be closed in the child
+ // process.
+ const int cwd_fd = open(".", O_RDONLY);
+ GTEST_DEATH_TEST_CHECK_(cwd_fd != -1);
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(cwd_fd, F_SETFD, FD_CLOEXEC));
+ // We need to execute the test program in the same environment where
+ // it was originally invoked. Therefore we change to the original
+ // working directory first.
+ const char* const original_dir =
+ UnitTest::GetInstance()->original_working_dir();
+ // We can safely call chdir() as it's a direct system call.
+ if (chdir(original_dir) != 0) {
+ DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
+ GetLastErrnoDescription());
+ return EXIT_FAILURE;
+ }
+
+ int fd_flags;
+ // Set close_fd to be closed after spawn.
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(fd_flags = fcntl(close_fd, F_GETFD));
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(close_fd, F_SETFD,
+ fd_flags | FD_CLOEXEC));
+ struct inheritance inherit = {0};
+ // spawn is a system call.
+ child_pid = spawn(args.argv[0], 0, NULL, &inherit, args.argv, GetEnviron());
+ // Restores the current working directory.
+ GTEST_DEATH_TEST_CHECK_(fchdir(cwd_fd) != -1);
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(close(cwd_fd));
+
+# else // GTEST_OS_QNX
+# if GTEST_OS_LINUX
+ // When a SIGPROF signal is received while fork() or clone() are executing,
+ // the process may hang. To avoid this, we ignore SIGPROF here and re-enable
+ // it after the call to fork()/clone() is complete.
+ struct sigaction saved_sigprof_action;
+ struct sigaction ignore_sigprof_action;
+ memset(&ignore_sigprof_action, 0, sizeof(ignore_sigprof_action));
+ sigemptyset(&ignore_sigprof_action.sa_mask);
+ ignore_sigprof_action.sa_handler = SIG_IGN;
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(sigaction(
+ SIGPROF, &ignore_sigprof_action, &saved_sigprof_action));
+# endif // GTEST_OS_LINUX
+
+# if GTEST_HAS_CLONE
+ const bool use_fork = GTEST_FLAG(death_test_use_fork);
+
+ if (!use_fork) {
+ static const bool stack_grows_down = StackGrowsDown();
+ const size_t stack_size = getpagesize();
+ // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead.
+ void* const stack = mmap(NULL, stack_size, PROT_READ | PROT_WRITE,
+ MAP_ANON | MAP_PRIVATE, -1, 0);
+ GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED);
+
+ // Maximum stack alignment in bytes: For a downward-growing stack, this
+ // amount is subtracted from size of the stack space to get an address
+ // that is within the stack space and is aligned on all systems we care
+ // about. As far as I know there is no ABI with stack alignment greater
+ // than 64. We assume stack and stack_size already have alignment of
+ // kMaxStackAlignment.
+ const size_t kMaxStackAlignment = 64;
+ void* const stack_top =
+ static_cast<char*>(stack) +
+ (stack_grows_down ? stack_size - kMaxStackAlignment : 0);
+ GTEST_DEATH_TEST_CHECK_(stack_size > kMaxStackAlignment &&
+ reinterpret_cast<intptr_t>(stack_top) % kMaxStackAlignment == 0);
+
+ child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args);
+
+ GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1);
+ }
+# else
+ const bool use_fork = true;
+# endif // GTEST_HAS_CLONE
+
+ if (use_fork && (child_pid = fork()) == 0) {
+ ExecDeathTestChildMain(&args);
+ _exit(0);
+ }
+# endif // GTEST_OS_QNX
+# if GTEST_OS_LINUX
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(
+ sigaction(SIGPROF, &saved_sigprof_action, NULL));
+# endif // GTEST_OS_LINUX
+
+ GTEST_DEATH_TEST_CHECK_(child_pid != -1);
+ return child_pid;
+}
+
+// The AssumeRole process for a fork-and-exec death test. It re-executes the
+// main program from the beginning, setting the --gtest_filter
+// and --gtest_internal_run_death_test flags to cause only the current
+// death test to be re-run.
+DeathTest::TestRole ExecDeathTest::AssumeRole() {
+ const UnitTestImpl* const impl = GetUnitTestImpl();
+ const InternalRunDeathTestFlag* const flag =
+ impl->internal_run_death_test_flag();
+ const TestInfo* const info = impl->current_test_info();
+ const int death_test_index = info->result()->death_test_count();
+
+ if (flag != NULL) {
+ set_write_fd(flag->write_fd());
+ return EXECUTE_TEST;
+ }
+
+ int pipe_fd[2];
+ GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
+ // Clear the close-on-exec flag on the write end of the pipe, lest
+ // it be closed when the child process does an exec:
+ GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);
+
+ const std::string filter_flag =
+ std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "="
+ + info->test_case_name() + "." + info->name();
+ const std::string internal_flag =
+ std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "="
+ + file_ + "|" + StreamableToString(line_) + "|"
+ + StreamableToString(death_test_index) + "|"
+ + StreamableToString(pipe_fd[1]);
+ Arguments args;
+ args.AddArguments(GetArgvsForDeathTestChildProcess());
+ args.AddArgument(filter_flag.c_str());
+ args.AddArgument(internal_flag.c_str());
+
+ DeathTest::set_last_death_test_message("");
+
+ CaptureStderr();
+ // See the comment in NoExecDeathTest::AssumeRole for why the next line
+ // is necessary.
+ FlushInfoLog();
+
+ const pid_t child_pid = ExecDeathTestSpawnChild(args.Argv(), pipe_fd[0]);
+ GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
+ set_child_pid(child_pid);
+ set_read_fd(pipe_fd[0]);
+ set_spawned(true);
+ return OVERSEE_TEST;
+}
+
+# endif // !GTEST_OS_WINDOWS
+
+// Creates a concrete DeathTest-derived class that depends on the
+// --gtest_death_test_style flag, and sets the pointer pointed to
+// by the "test" argument to its address. If the test should be
+// skipped, sets that pointer to NULL. Returns true, unless the
+// flag is set to an invalid value.
+bool DefaultDeathTestFactory::Create(const char* statement, const RE* regex,
+ const char* file, int line,
+ DeathTest** test) {
+ UnitTestImpl* const impl = GetUnitTestImpl();
+ const InternalRunDeathTestFlag* const flag =
+ impl->internal_run_death_test_flag();
+ const int death_test_index = impl->current_test_info()
+ ->increment_death_test_count();
+
+ if (flag != NULL) {
+ if (death_test_index > flag->index()) {
+ DeathTest::set_last_death_test_message(
+ "Death test count (" + StreamableToString(death_test_index)
+ + ") somehow exceeded expected maximum ("
+ + StreamableToString(flag->index()) + ")");
+ return false;
+ }
+
+ if (!(flag->file() == file && flag->line() == line &&
+ flag->index() == death_test_index)) {
+ *test = NULL;
+ return true;
+ }
+ }
+
+# if GTEST_OS_WINDOWS
+
+ if (GTEST_FLAG(death_test_style) == "threadsafe" ||
+ GTEST_FLAG(death_test_style) == "fast") {
+ *test = new WindowsDeathTest(statement, regex, file, line);
+ }
+
+# else
+
+ if (GTEST_FLAG(death_test_style) == "threadsafe") {
+ *test = new ExecDeathTest(statement, regex, file, line);
+ } else if (GTEST_FLAG(death_test_style) == "fast") {
+ *test = new NoExecDeathTest(statement, regex);
+ }
+
+# endif // GTEST_OS_WINDOWS
+
+ else { // NOLINT - this is more readable than unbalanced brackets inside #if.
+ DeathTest::set_last_death_test_message(
+ "Unknown death test style \"" + GTEST_FLAG(death_test_style)
+ + "\" encountered");
+ return false;
+ }
+
+ return true;
+}
+
+// Splits a given string on a given delimiter, populating a given
+// vector with the fields. GTEST_HAS_DEATH_TEST implies that we have
+// ::std::string, so we can use it here.
+static void SplitString(const ::std::string& str, char delimiter,
+ ::std::vector< ::std::string>* dest) {
+ ::std::vector< ::std::string> parsed;
+ ::std::string::size_type pos = 0;
+ while (::testing::internal::AlwaysTrue()) {
+ const ::std::string::size_type colon = str.find(delimiter, pos);
+ if (colon == ::std::string::npos) {
+ parsed.push_back(str.substr(pos));
+ break;
+ } else {
+ parsed.push_back(str.substr(pos, colon - pos));
+ pos = colon + 1;
+ }
+ }
+ dest->swap(parsed);
+}
+
+# if GTEST_OS_WINDOWS
+// Recreates the pipe and event handles from the provided parameters,
+// signals the event, and returns a file descriptor wrapped around the pipe
+// handle. This function is called in the child process only.
+int GetStatusFileDescriptor(unsigned int parent_process_id,
+ size_t write_handle_as_size_t,
+ size_t event_handle_as_size_t) {
+ AutoHandle parent_process_handle(::OpenProcess(PROCESS_DUP_HANDLE,
+ FALSE, // Non-inheritable.
+ parent_process_id));
+ if (parent_process_handle.Get() == INVALID_HANDLE_VALUE) {
+ DeathTestAbort("Unable to open parent process " +
+ StreamableToString(parent_process_id));
+ }
+
+ // TODO(vladl@google.com): Replace the following check with a
+ // compile-time assertion when available.
+ GTEST_CHECK_(sizeof(HANDLE) <= sizeof(size_t));
+
+ const HANDLE write_handle =
+ reinterpret_cast<HANDLE>(write_handle_as_size_t);
+ HANDLE dup_write_handle;
+
+ // The newly initialized handle is accessible only in in the parent
+ // process. To obtain one accessible within the child, we need to use
+ // DuplicateHandle.
+ if (!::DuplicateHandle(parent_process_handle.Get(), write_handle,
+ ::GetCurrentProcess(), &dup_write_handle,
+ 0x0, // Requested privileges ignored since
+ // DUPLICATE_SAME_ACCESS is used.
+ FALSE, // Request non-inheritable handler.
+ DUPLICATE_SAME_ACCESS)) {
+ DeathTestAbort("Unable to duplicate the pipe handle " +
+ StreamableToString(write_handle_as_size_t) +
+ " from the parent process " +
+ StreamableToString(parent_process_id));
+ }
+
+ const HANDLE event_handle = reinterpret_cast<HANDLE>(event_handle_as_size_t);
+ HANDLE dup_event_handle;
+
+ if (!::DuplicateHandle(parent_process_handle.Get(), event_handle,
+ ::GetCurrentProcess(), &dup_event_handle,
+ 0x0,
+ FALSE,
+ DUPLICATE_SAME_ACCESS)) {
+ DeathTestAbort("Unable to duplicate the event handle " +
+ StreamableToString(event_handle_as_size_t) +
+ " from the parent process " +
+ StreamableToString(parent_process_id));
+ }
+
+ const int write_fd =
+ ::_open_osfhandle(reinterpret_cast<intptr_t>(dup_write_handle), O_APPEND);
+ if (write_fd == -1) {
+ DeathTestAbort("Unable to convert pipe handle " +
+ StreamableToString(write_handle_as_size_t) +
+ " to a file descriptor");
+ }
+
+ // Signals the parent that the write end of the pipe has been acquired
+ // so the parent can release its own write end.
+ ::SetEvent(dup_event_handle);
+
+ return write_fd;
+}
+# endif // GTEST_OS_WINDOWS
+
+// Returns a newly created InternalRunDeathTestFlag object with fields
+// initialized from the GTEST_FLAG(internal_run_death_test) flag if
+// the flag is specified; otherwise returns NULL.
+InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() {
+ if (GTEST_FLAG(internal_run_death_test) == "") return NULL;
+
+ // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we
+ // can use it here.
+ int line = -1;
+ int index = -1;
+ ::std::vector< ::std::string> fields;
+ SplitString(GTEST_FLAG(internal_run_death_test).c_str(), '|', &fields);
+ int write_fd = -1;
+
+# if GTEST_OS_WINDOWS
+
+ unsigned int parent_process_id = 0;
+ size_t write_handle_as_size_t = 0;
+ size_t event_handle_as_size_t = 0;
+
+ if (fields.size() != 6
+ || !ParseNaturalNumber(fields[1], &line)
+ || !ParseNaturalNumber(fields[2], &index)
+ || !ParseNaturalNumber(fields[3], &parent_process_id)
+ || !ParseNaturalNumber(fields[4], &write_handle_as_size_t)
+ || !ParseNaturalNumber(fields[5], &event_handle_as_size_t)) {
+ DeathTestAbort("Bad --gtest_internal_run_death_test flag: " +
+ GTEST_FLAG(internal_run_death_test));
+ }
+ write_fd = GetStatusFileDescriptor(parent_process_id,
+ write_handle_as_size_t,
+ event_handle_as_size_t);
+# else
+
+ if (fields.size() != 4
+ || !ParseNaturalNumber(fields[1], &line)
+ || !ParseNaturalNumber(fields[2], &index)
+ || !ParseNaturalNumber(fields[3], &write_fd)) {
+ DeathTestAbort("Bad --gtest_internal_run_death_test flag: "
+ + GTEST_FLAG(internal_run_death_test));
+ }
+
+# endif // GTEST_OS_WINDOWS
+
+ return new InternalRunDeathTestFlag(fields[0], line, index, write_fd);
+}
+
+} // namespace internal
+
+#endif // GTEST_HAS_DEATH_TEST
+
+} // namespace testing
diff --git a/test/fmw/gtest/src/gtest-filepath.cc b/test/fmw/gtest/src/gtest-filepath.cc
new file mode 100644
index 0000000..6be58b6
--- /dev/null
+++ b/test/fmw/gtest/src/gtest-filepath.cc
@@ -0,0 +1,382 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Authors: keith.ray@gmail.com (Keith Ray)
+
+#include "gtest/gtest-message.h"
+#include "gtest/internal/gtest-filepath.h"
+#include "gtest/internal/gtest-port.h"
+
+#include <stdlib.h>
+
+#if GTEST_OS_WINDOWS_MOBILE
+# include <windows.h>
+#elif GTEST_OS_WINDOWS
+# include <direct.h>
+# include <io.h>
+#elif GTEST_OS_SYMBIAN
+// Symbian OpenC has PATH_MAX in sys/syslimits.h
+# include <sys/syslimits.h>
+#else
+# include <limits.h>
+# include <climits> // Some Linux distributions define PATH_MAX here.
+#endif // GTEST_OS_WINDOWS_MOBILE
+
+#if GTEST_OS_WINDOWS
+# define GTEST_PATH_MAX_ _MAX_PATH
+#elif defined(PATH_MAX)
+# define GTEST_PATH_MAX_ PATH_MAX
+#elif defined(_XOPEN_PATH_MAX)
+# define GTEST_PATH_MAX_ _XOPEN_PATH_MAX
+#else
+# define GTEST_PATH_MAX_ _POSIX_PATH_MAX
+#endif // GTEST_OS_WINDOWS
+
+#include "gtest/internal/gtest-string.h"
+
+namespace testing {
+namespace internal {
+
+#if GTEST_OS_WINDOWS
+// On Windows, '\\' is the standard path separator, but many tools and the
+// Windows API also accept '/' as an alternate path separator. Unless otherwise
+// noted, a file path can contain either kind of path separators, or a mixture
+// of them.
+const char kPathSeparator = '\\';
+const char kAlternatePathSeparator = '/';
+const char kPathSeparatorString[] = "\\";
+const char kAlternatePathSeparatorString[] = "/";
+# if GTEST_OS_WINDOWS_MOBILE
+// Windows CE doesn't have a current directory. You should not use
+// the current directory in tests on Windows CE, but this at least
+// provides a reasonable fallback.
+const char kCurrentDirectoryString[] = "\\";
+// Windows CE doesn't define INVALID_FILE_ATTRIBUTES
+const DWORD kInvalidFileAttributes = 0xffffffff;
+# else
+const char kCurrentDirectoryString[] = ".\\";
+# endif // GTEST_OS_WINDOWS_MOBILE
+#else
+const char kPathSeparator = '/';
+const char kPathSeparatorString[] = "/";
+const char kCurrentDirectoryString[] = "./";
+#endif // GTEST_OS_WINDOWS
+
+// Returns whether the given character is a valid path separator.
+static bool IsPathSeparator(char c) {
+#if GTEST_HAS_ALT_PATH_SEP_
+ return (c == kPathSeparator) || (c == kAlternatePathSeparator);
+#else
+ return c == kPathSeparator;
+#endif
+}
+
+// Returns the current working directory, or "" if unsuccessful.
+FilePath FilePath::GetCurrentDir() {
+#if GTEST_OS_WINDOWS_MOBILE
+ // Windows CE doesn't have a current directory, so we just return
+ // something reasonable.
+ return FilePath(kCurrentDirectoryString);
+#elif GTEST_OS_WINDOWS
+ char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
+ return FilePath(_getcwd(cwd, sizeof(cwd)) == NULL ? "" : cwd);
+#else
+ char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
+ return FilePath(getcwd(cwd, sizeof(cwd)) == NULL ? "" : cwd);
+#endif // GTEST_OS_WINDOWS_MOBILE
+}
+
+// Returns a copy of the FilePath with the case-insensitive extension removed.
+// Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
+// FilePath("dir/file"). If a case-insensitive extension is not
+// found, returns a copy of the original FilePath.
+FilePath FilePath::RemoveExtension(const char* extension) const {
+ const std::string dot_extension = std::string(".") + extension;
+ if (String::EndsWithCaseInsensitive(pathname_, dot_extension)) {
+ return FilePath(pathname_.substr(
+ 0, pathname_.length() - dot_extension.length()));
+ }
+ return *this;
+}
+
+// Returns a pointer to the last occurence of a valid path separator in
+// the FilePath. On Windows, for example, both '/' and '\' are valid path
+// separators. Returns NULL if no path separator was found.
+const char* FilePath::FindLastPathSeparator() const {
+ const char* const last_sep = strrchr(c_str(), kPathSeparator);
+#if GTEST_HAS_ALT_PATH_SEP_
+ const char* const last_alt_sep = strrchr(c_str(), kAlternatePathSeparator);
+ // Comparing two pointers of which only one is NULL is undefined.
+ if (last_alt_sep != NULL &&
+ (last_sep == NULL || last_alt_sep > last_sep)) {
+ return last_alt_sep;
+ }
+#endif
+ return last_sep;
+}
+
+// Returns a copy of the FilePath with the directory part removed.
+// Example: FilePath("path/to/file").RemoveDirectoryName() returns
+// FilePath("file"). If there is no directory part ("just_a_file"), it returns
+// the FilePath unmodified. If there is no file part ("just_a_dir/") it
+// returns an empty FilePath ("").
+// On Windows platform, '\' is the path separator, otherwise it is '/'.
+FilePath FilePath::RemoveDirectoryName() const {
+ const char* const last_sep = FindLastPathSeparator();
+ return last_sep ? FilePath(last_sep + 1) : *this;
+}
+
+// RemoveFileName returns the directory path with the filename removed.
+// Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
+// If the FilePath is "a_file" or "/a_file", RemoveFileName returns
+// FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
+// not have a file, like "just/a/dir/", it returns the FilePath unmodified.
+// On Windows platform, '\' is the path separator, otherwise it is '/'.
+FilePath FilePath::RemoveFileName() const {
+ const char* const last_sep = FindLastPathSeparator();
+ std::string dir;
+ if (last_sep) {
+ dir = std::string(c_str(), last_sep + 1 - c_str());
+ } else {
+ dir = kCurrentDirectoryString;
+ }
+ return FilePath(dir);
+}
+
+// Helper functions for naming files in a directory for xml output.
+
+// Given directory = "dir", base_name = "test", number = 0,
+// extension = "xml", returns "dir/test.xml". If number is greater
+// than zero (e.g., 12), returns "dir/test_12.xml".
+// On Windows platform, uses \ as the separator rather than /.
+FilePath FilePath::MakeFileName(const FilePath& directory,
+ const FilePath& base_name,
+ int number,
+ const char* extension) {
+ std::string file;
+ if (number == 0) {
+ file = base_name.string() + "." + extension;
+ } else {
+ file = base_name.string() + "_" + StreamableToString(number)
+ + "." + extension;
+ }
+ return ConcatPaths(directory, FilePath(file));
+}
+
+// Given directory = "dir", relative_path = "test.xml", returns "dir/test.xml".
+// On Windows, uses \ as the separator rather than /.
+FilePath FilePath::ConcatPaths(const FilePath& directory,
+ const FilePath& relative_path) {
+ if (directory.IsEmpty())
+ return relative_path;
+ const FilePath dir(directory.RemoveTrailingPathSeparator());
+ return FilePath(dir.string() + kPathSeparator + relative_path.string());
+}
+
+// Returns true if pathname describes something findable in the file-system,
+// either a file, directory, or whatever.
+bool FilePath::FileOrDirectoryExists() const {
+#if GTEST_OS_WINDOWS_MOBILE
+ LPCWSTR unicode = String::AnsiToUtf16(pathname_.c_str());
+ const DWORD attributes = GetFileAttributes(unicode);
+ delete [] unicode;
+ return attributes != kInvalidFileAttributes;
+#else
+ posix::StatStruct file_stat;
+ return posix::Stat(pathname_.c_str(), &file_stat) == 0;
+#endif // GTEST_OS_WINDOWS_MOBILE
+}
+
+// Returns true if pathname describes a directory in the file-system
+// that exists.
+bool FilePath::DirectoryExists() const {
+ bool result = false;
+#if GTEST_OS_WINDOWS
+ // Don't strip off trailing separator if path is a root directory on
+ // Windows (like "C:\\").
+ const FilePath& path(IsRootDirectory() ? *this :
+ RemoveTrailingPathSeparator());
+#else
+ const FilePath& path(*this);
+#endif
+
+#if GTEST_OS_WINDOWS_MOBILE
+ LPCWSTR unicode = String::AnsiToUtf16(path.c_str());
+ const DWORD attributes = GetFileAttributes(unicode);
+ delete [] unicode;
+ if ((attributes != kInvalidFileAttributes) &&
+ (attributes & FILE_ATTRIBUTE_DIRECTORY)) {
+ result = true;
+ }
+#else
+ posix::StatStruct file_stat;
+ result = posix::Stat(path.c_str(), &file_stat) == 0 &&
+ posix::IsDir(file_stat);
+#endif // GTEST_OS_WINDOWS_MOBILE
+
+ return result;
+}
+
+// Returns true if pathname describes a root directory. (Windows has one
+// root directory per disk drive.)
+bool FilePath::IsRootDirectory() const {
+#if GTEST_OS_WINDOWS
+ // TODO(wan@google.com): on Windows a network share like
+ // \\server\share can be a root directory, although it cannot be the
+ // current directory. Handle this properly.
+ return pathname_.length() == 3 && IsAbsolutePath();
+#else
+ return pathname_.length() == 1 && IsPathSeparator(pathname_.c_str()[0]);
+#endif
+}
+
+// Returns true if pathname describes an absolute path.
+bool FilePath::IsAbsolutePath() const {
+ const char* const name = pathname_.c_str();
+#if GTEST_OS_WINDOWS
+ return pathname_.length() >= 3 &&
+ ((name[0] >= 'a' && name[0] <= 'z') ||
+ (name[0] >= 'A' && name[0] <= 'Z')) &&
+ name[1] == ':' &&
+ IsPathSeparator(name[2]);
+#else
+ return IsPathSeparator(name[0]);
+#endif
+}
+
+// Returns a pathname for a file that does not currently exist. The pathname
+// will be directory/base_name.extension or
+// directory/base_name_<number>.extension if directory/base_name.extension
+// already exists. The number will be incremented until a pathname is found
+// that does not already exist.
+// Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
+// There could be a race condition if two or more processes are calling this
+// function at the same time -- they could both pick the same filename.
+FilePath FilePath::GenerateUniqueFileName(const FilePath& directory,
+ const FilePath& base_name,
+ const char* extension) {
+ FilePath full_pathname;
+ int number = 0;
+ do {
+ full_pathname.Set(MakeFileName(directory, base_name, number++, extension));
+ } while (full_pathname.FileOrDirectoryExists());
+ return full_pathname;
+}
+
+// Returns true if FilePath ends with a path separator, which indicates that
+// it is intended to represent a directory. Returns false otherwise.
+// This does NOT check that a directory (or file) actually exists.
+bool FilePath::IsDirectory() const {
+ return !pathname_.empty() &&
+ IsPathSeparator(pathname_.c_str()[pathname_.length() - 1]);
+}
+
+// Create directories so that path exists. Returns true if successful or if
+// the directories already exist; returns false if unable to create directories
+// for any reason.
+bool FilePath::CreateDirectoriesRecursively() const {
+ if (!this->IsDirectory()) {
+ return false;
+ }
+
+ if (pathname_.length() == 0 || this->DirectoryExists()) {
+ return true;
+ }
+
+ const FilePath parent(this->RemoveTrailingPathSeparator().RemoveFileName());
+ return parent.CreateDirectoriesRecursively() && this->CreateFolder();
+}
+
+// Create the directory so that path exists. Returns true if successful or
+// if the directory already exists; returns false if unable to create the
+// directory for any reason, including if the parent directory does not
+// exist. Not named "CreateDirectory" because that's a macro on Windows.
+bool FilePath::CreateFolder() const {
+#if GTEST_OS_WINDOWS_MOBILE
+ FilePath removed_sep(this->RemoveTrailingPathSeparator());
+ LPCWSTR unicode = String::AnsiToUtf16(removed_sep.c_str());
+ int result = CreateDirectory(unicode, NULL) ? 0 : -1;
+ delete [] unicode;
+#elif GTEST_OS_WINDOWS
+ int result = _mkdir(pathname_.c_str());
+#else
+ int result = mkdir(pathname_.c_str(), 0777);
+#endif // GTEST_OS_WINDOWS_MOBILE
+
+ if (result == -1) {
+ return this->DirectoryExists(); // An error is OK if the directory exists.
+ }
+ return true; // No error.
+}
+
+// If input name has a trailing separator character, remove it and return the
+// name, otherwise return the name string unmodified.
+// On Windows platform, uses \ as the separator, other platforms use /.
+FilePath FilePath::RemoveTrailingPathSeparator() const {
+ return IsDirectory()
+ ? FilePath(pathname_.substr(0, pathname_.length() - 1))
+ : *this;
+}
+
+// Removes any redundant separators that might be in the pathname.
+// For example, "bar///foo" becomes "bar/foo". Does not eliminate other
+// redundancies that might be in a pathname involving "." or "..".
+// TODO(wan@google.com): handle Windows network shares (e.g. \\server\share).
+void FilePath::Normalize() {
+ if (pathname_.c_str() == NULL) {
+ pathname_ = "";
+ return;
+ }
+ const char* src = pathname_.c_str();
+ char* const dest = new char[pathname_.length() + 1];
+ char* dest_ptr = dest;
+ memset(dest_ptr, 0, pathname_.length() + 1);
+
+ while (*src != '\0') {
+ *dest_ptr = *src;
+ if (!IsPathSeparator(*src)) {
+ src++;
+ } else {
+#if GTEST_HAS_ALT_PATH_SEP_
+ if (*dest_ptr == kAlternatePathSeparator) {
+ *dest_ptr = kPathSeparator;
+ }
+#endif
+ while (IsPathSeparator(*src))
+ src++;
+ }
+ dest_ptr++;
+ }
+ *dest_ptr = '\0';
+ pathname_ = dest;
+ delete[] dest;
+}
+
+} // namespace internal
+} // namespace testing
diff --git a/test/fmw/gtest/src/gtest-internal-inl.h b/test/fmw/gtest/src/gtest-internal-inl.h
new file mode 100644
index 0000000..35df303
--- /dev/null
+++ b/test/fmw/gtest/src/gtest-internal-inl.h
@@ -0,0 +1,1218 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Utility functions and classes used by the Google C++ testing framework.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// This file contains purely Google Test's internal implementation. Please
+// DO NOT #INCLUDE IT IN A USER PROGRAM.
+
+#ifndef GTEST_SRC_GTEST_INTERNAL_INL_H_
+#define GTEST_SRC_GTEST_INTERNAL_INL_H_
+
+// GTEST_IMPLEMENTATION_ is defined to 1 iff the current translation unit is
+// part of Google Test's implementation; otherwise it's undefined.
+#if !GTEST_IMPLEMENTATION_
+// A user is trying to include this from his code - just say no.
+# error "gtest-internal-inl.h is part of Google Test's internal implementation."
+# error "It must not be included except by Google Test itself."
+#endif // GTEST_IMPLEMENTATION_
+
+#ifndef _WIN32_WCE
+# include <errno.h>
+#endif // !_WIN32_WCE
+#include <stddef.h>
+#include <stdlib.h> // For strtoll/_strtoul64/malloc/free.
+#include <string.h> // For memmove.
+
+#include <algorithm>
+#include <string>
+#include <vector>
+
+#include "gtest/internal/gtest-port.h"
+
+#if GTEST_CAN_STREAM_RESULTS_
+# include <arpa/inet.h> // NOLINT
+# include <netdb.h> // NOLINT
+#endif
+
+#if GTEST_OS_WINDOWS
+# include <windows.h> // NOLINT
+#endif // GTEST_OS_WINDOWS
+
+#include "gtest/gtest.h" // NOLINT
+#include "gtest/gtest-spi.h"
+
+namespace testing {
+
+// Declares the flags.
+//
+// We don't want the users to modify this flag in the code, but want
+// Google Test's own unit tests to be able to access it. Therefore we
+// declare it here as opposed to in gtest.h.
+GTEST_DECLARE_bool_(death_test_use_fork);
+
+namespace internal {
+
+// The value of GetTestTypeId() as seen from within the Google Test
+// library. This is solely for testing GetTestTypeId().
+GTEST_API_ extern const TypeId kTestTypeIdInGoogleTest;
+
+// Names of the flags (needed for parsing Google Test flags).
+const char kAlsoRunDisabledTestsFlag[] = "also_run_disabled_tests";
+const char kBreakOnFailureFlag[] = "break_on_failure";
+const char kCatchExceptionsFlag[] = "catch_exceptions";
+const char kColorFlag[] = "color";
+const char kFilterFlag[] = "filter";
+const char kListTestsFlag[] = "list_tests";
+const char kOutputFlag[] = "output";
+const char kPrintTimeFlag[] = "print_time";
+const char kRandomSeedFlag[] = "random_seed";
+const char kRepeatFlag[] = "repeat";
+const char kShuffleFlag[] = "shuffle";
+const char kStackTraceDepthFlag[] = "stack_trace_depth";
+const char kStreamResultToFlag[] = "stream_result_to";
+const char kThrowOnFailureFlag[] = "throw_on_failure";
+
+// A valid random seed must be in [1, kMaxRandomSeed].
+const int kMaxRandomSeed = 99999;
+
+// g_help_flag is true iff the --help flag or an equivalent form is
+// specified on the command line.
+GTEST_API_ extern bool g_help_flag;
+
+// Returns the current time in milliseconds.
+GTEST_API_ TimeInMillis GetTimeInMillis();
+
+// Returns true iff Google Test should use colors in the output.
+GTEST_API_ bool ShouldUseColor(bool stdout_is_tty);
+
+// Formats the given time in milliseconds as seconds.
+GTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms);
+
+// Converts the given time in milliseconds to a date string in the ISO 8601
+// format, without the timezone information. N.B.: due to the use the
+// non-reentrant localtime() function, this function is not thread safe. Do
+// not use it in any code that can be called from multiple threads.
+GTEST_API_ std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms);
+
+// Parses a string for an Int32 flag, in the form of "--flag=value".
+//
+// On success, stores the value of the flag in *value, and returns
+// true. On failure, returns false without changing *value.
+GTEST_API_ bool ParseInt32Flag(
+ const char* str, const char* flag, Int32* value);
+
+// Returns a random seed in range [1, kMaxRandomSeed] based on the
+// given --gtest_random_seed flag value.
+inline int GetRandomSeedFromFlag(Int32 random_seed_flag) {
+ const unsigned int raw_seed = (random_seed_flag == 0) ?
+ static_cast<unsigned int>(GetTimeInMillis()) :
+ static_cast<unsigned int>(random_seed_flag);
+
+ // Normalizes the actual seed to range [1, kMaxRandomSeed] such that
+ // it's easy to type.
+ const int normalized_seed =
+ static_cast<int>((raw_seed - 1U) %
+ static_cast<unsigned int>(kMaxRandomSeed)) + 1;
+ return normalized_seed;
+}
+
+// Returns the first valid random seed after 'seed'. The behavior is
+// undefined if 'seed' is invalid. The seed after kMaxRandomSeed is
+// considered to be 1.
+inline int GetNextRandomSeed(int seed) {
+ GTEST_CHECK_(1 <= seed && seed <= kMaxRandomSeed)
+ << "Invalid random seed " << seed << " - must be in [1, "
+ << kMaxRandomSeed << "].";
+ const int next_seed = seed + 1;
+ return (next_seed > kMaxRandomSeed) ? 1 : next_seed;
+}
+
+// This class saves the values of all Google Test flags in its c'tor, and
+// restores them in its d'tor.
+class GTestFlagSaver {
+ public:
+ // The c'tor.
+ GTestFlagSaver() {
+ also_run_disabled_tests_ = GTEST_FLAG(also_run_disabled_tests);
+ break_on_failure_ = GTEST_FLAG(break_on_failure);
+ catch_exceptions_ = GTEST_FLAG(catch_exceptions);
+ color_ = GTEST_FLAG(color);
+ death_test_style_ = GTEST_FLAG(death_test_style);
+ death_test_use_fork_ = GTEST_FLAG(death_test_use_fork);
+ filter_ = GTEST_FLAG(filter);
+ internal_run_death_test_ = GTEST_FLAG(internal_run_death_test);
+ list_tests_ = GTEST_FLAG(list_tests);
+ output_ = GTEST_FLAG(output);
+ print_time_ = GTEST_FLAG(print_time);
+ random_seed_ = GTEST_FLAG(random_seed);
+ repeat_ = GTEST_FLAG(repeat);
+ shuffle_ = GTEST_FLAG(shuffle);
+ stack_trace_depth_ = GTEST_FLAG(stack_trace_depth);
+ stream_result_to_ = GTEST_FLAG(stream_result_to);
+ throw_on_failure_ = GTEST_FLAG(throw_on_failure);
+ }
+
+ // The d'tor is not virtual. DO NOT INHERIT FROM THIS CLASS.
+ ~GTestFlagSaver() {
+ GTEST_FLAG(also_run_disabled_tests) = also_run_disabled_tests_;
+ GTEST_FLAG(break_on_failure) = break_on_failure_;
+ GTEST_FLAG(catch_exceptions) = catch_exceptions_;
+ GTEST_FLAG(color) = color_;
+ GTEST_FLAG(death_test_style) = death_test_style_;
+ GTEST_FLAG(death_test_use_fork) = death_test_use_fork_;
+ GTEST_FLAG(filter) = filter_;
+ GTEST_FLAG(internal_run_death_test) = internal_run_death_test_;
+ GTEST_FLAG(list_tests) = list_tests_;
+ GTEST_FLAG(output) = output_;
+ GTEST_FLAG(print_time) = print_time_;
+ GTEST_FLAG(random_seed) = random_seed_;
+ GTEST_FLAG(repeat) = repeat_;
+ GTEST_FLAG(shuffle) = shuffle_;
+ GTEST_FLAG(stack_trace_depth) = stack_trace_depth_;
+ GTEST_FLAG(stream_result_to) = stream_result_to_;
+ GTEST_FLAG(throw_on_failure) = throw_on_failure_;
+ }
+
+ private:
+ // Fields for saving the original values of flags.
+ bool also_run_disabled_tests_;
+ bool break_on_failure_;
+ bool catch_exceptions_;
+ std::string color_;
+ std::string death_test_style_;
+ bool death_test_use_fork_;
+ std::string filter_;
+ std::string internal_run_death_test_;
+ bool list_tests_;
+ std::string output_;
+ bool print_time_;
+ internal::Int32 random_seed_;
+ internal::Int32 repeat_;
+ bool shuffle_;
+ internal::Int32 stack_trace_depth_;
+ std::string stream_result_to_;
+ bool throw_on_failure_;
+} GTEST_ATTRIBUTE_UNUSED_;
+
+// Converts a Unicode code point to a narrow string in UTF-8 encoding.
+// code_point parameter is of type UInt32 because wchar_t may not be
+// wide enough to contain a code point.
+// If the code_point is not a valid Unicode code point
+// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
+// to "(Invalid Unicode 0xXXXXXXXX)".
+GTEST_API_ std::string CodePointToUtf8(UInt32 code_point);
+
+// Converts a wide string to a narrow string in UTF-8 encoding.
+// The wide string is assumed to have the following encoding:
+// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS)
+// UTF-32 if sizeof(wchar_t) == 4 (on Linux)
+// Parameter str points to a null-terminated wide string.
+// Parameter num_chars may additionally limit the number
+// of wchar_t characters processed. -1 is used when the entire string
+// should be processed.
+// If the string contains code points that are not valid Unicode code points
+// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
+// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
+// and contains invalid UTF-16 surrogate pairs, values in those pairs
+// will be encoded as individual Unicode characters from Basic Normal Plane.
+GTEST_API_ std::string WideStringToUtf8(const wchar_t* str, int num_chars);
+
+// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
+// if the variable is present. If a file already exists at this location, this
+// function will write over it. If the variable is present, but the file cannot
+// be created, prints an error and exits.
+void WriteToShardStatusFileIfNeeded();
+
+// Checks whether sharding is enabled by examining the relevant
+// environment variable values. If the variables are present,
+// but inconsistent (e.g., shard_index >= total_shards), prints
+// an error and exits. If in_subprocess_for_death_test, sharding is
+// disabled because it must only be applied to the original test
+// process. Otherwise, we could filter out death tests we intended to execute.
+GTEST_API_ bool ShouldShard(const char* total_shards_str,
+ const char* shard_index_str,
+ bool in_subprocess_for_death_test);
+
+// Parses the environment variable var as an Int32. If it is unset,
+// returns default_val. If it is not an Int32, prints an error and
+// and aborts.
+GTEST_API_ Int32 Int32FromEnvOrDie(const char* env_var, Int32 default_val);
+
+// Given the total number of shards, the shard index, and the test id,
+// returns true iff the test should be run on this shard. The test id is
+// some arbitrary but unique non-negative integer assigned to each test
+// method. Assumes that 0 <= shard_index < total_shards.
+GTEST_API_ bool ShouldRunTestOnShard(
+ int total_shards, int shard_index, int test_id);
+
+// STL container utilities.
+
+// Returns the number of elements in the given container that satisfy
+// the given predicate.
+template <class Container, typename Predicate>
+inline int CountIf(const Container& c, Predicate predicate) {
+ // Implemented as an explicit loop since std::count_if() in libCstd on
+ // Solaris has a non-standard signature.
+ int count = 0;
+ for (typename Container::const_iterator it = c.begin(); it != c.end(); ++it) {
+ if (predicate(*it))
+ ++count;
+ }
+ return count;
+}
+
+// Applies a function/functor to each element in the container.
+template <class Container, typename Functor>
+void ForEach(const Container& c, Functor functor) {
+ std::for_each(c.begin(), c.end(), functor);
+}
+
+// Returns the i-th element of the vector, or default_value if i is not
+// in range [0, v.size()).
+template <typename E>
+inline E GetElementOr(const std::vector<E>& v, int i, E default_value) {
+ return (i < 0 || i >= static_cast<int>(v.size())) ? default_value : v[i];
+}
+
+// Performs an in-place shuffle of a range of the vector's elements.
+// 'begin' and 'end' are element indices as an STL-style range;
+// i.e. [begin, end) are shuffled, where 'end' == size() means to
+// shuffle to the end of the vector.
+template <typename E>
+void ShuffleRange(internal::Random* random, int begin, int end,
+ std::vector<E>* v) {
+ const int size = static_cast<int>(v->size());
+ GTEST_CHECK_(0 <= begin && begin <= size)
+ << "Invalid shuffle range start " << begin << ": must be in range [0, "
+ << size << "].";
+ GTEST_CHECK_(begin <= end && end <= size)
+ << "Invalid shuffle range finish " << end << ": must be in range ["
+ << begin << ", " << size << "].";
+
+ // Fisher-Yates shuffle, from
+ // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle
+ for (int range_width = end - begin; range_width >= 2; range_width--) {
+ const int last_in_range = begin + range_width - 1;
+ const int selected = begin + random->Generate(range_width);
+ std::swap((*v)[selected], (*v)[last_in_range]);
+ }
+}
+
+// Performs an in-place shuffle of the vector's elements.
+template <typename E>
+inline void Shuffle(internal::Random* random, std::vector<E>* v) {
+ ShuffleRange(random, 0, static_cast<int>(v->size()), v);
+}
+
+// A function for deleting an object. Handy for being used as a
+// functor.
+template <typename T>
+static void Delete(T* x) {
+ delete x;
+}
+
+// A predicate that checks the key of a TestProperty against a known key.
+//
+// TestPropertyKeyIs is copyable.
+class TestPropertyKeyIs {
+ public:
+ // Constructor.
+ //
+ // TestPropertyKeyIs has NO default constructor.
+ explicit TestPropertyKeyIs(const std::string& key) : key_(key) {}
+
+ // Returns true iff the test name of test property matches on key_.
+ bool operator()(const TestProperty& test_property) const {
+ return test_property.key() == key_;
+ }
+
+ private:
+ std::string key_;
+};
+
+// Class UnitTestOptions.
+//
+// This class contains functions for processing options the user
+// specifies when running the tests. It has only static members.
+//
+// In most cases, the user can specify an option using either an
+// environment variable or a command line flag. E.g. you can set the
+// test filter using either GTEST_FILTER or --gtest_filter. If both
+// the variable and the flag are present, the latter overrides the
+// former.
+class GTEST_API_ UnitTestOptions {
+ public:
+ // Functions for processing the gtest_output flag.
+
+ // Returns the output format, or "" for normal printed output.
+ static std::string GetOutputFormat();
+
+ // Returns the absolute path of the requested output file, or the
+ // default (test_detail.xml in the original working directory) if
+ // none was explicitly specified.
+ static std::string GetAbsolutePathToOutputFile();
+
+ // Functions for processing the gtest_filter flag.
+
+ // Returns true iff the wildcard pattern matches the string. The
+ // first ':' or '\0' character in pattern marks the end of it.
+ //
+ // This recursive algorithm isn't very efficient, but is clear and
+ // works well enough for matching test names, which are short.
+ static bool PatternMatchesString(const char *pattern, const char *str);
+
+ // Returns true iff the user-specified filter matches the test case
+ // name and the test name.
+ static bool FilterMatchesTest(const std::string &test_case_name,
+ const std::string &test_name);
+
+#if GTEST_OS_WINDOWS
+ // Function for supporting the gtest_catch_exception flag.
+
+ // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
+ // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
+ // This function is useful as an __except condition.
+ static int GTestShouldProcessSEH(DWORD exception_code);
+#endif // GTEST_OS_WINDOWS
+
+ // Returns true if "name" matches the ':' separated list of glob-style
+ // filters in "filter".
+ static bool MatchesFilter(const std::string& name, const char* filter);
+};
+
+// Returns the current application's name, removing directory path if that
+// is present. Used by UnitTestOptions::GetOutputFile.
+GTEST_API_ FilePath GetCurrentExecutableName();
+
+// The role interface for getting the OS stack trace as a string.
+class OsStackTraceGetterInterface {
+ public:
+ OsStackTraceGetterInterface() {}
+ virtual ~OsStackTraceGetterInterface() {}
+
+ // Returns the current OS stack trace as an std::string. Parameters:
+ //
+ // max_depth - the maximum number of stack frames to be included
+ // in the trace.
+ // skip_count - the number of top frames to be skipped; doesn't count
+ // against max_depth.
+ virtual string CurrentStackTrace(int max_depth, int skip_count) = 0;
+
+ // UponLeavingGTest() should be called immediately before Google Test calls
+ // user code. It saves some information about the current stack that
+ // CurrentStackTrace() will use to find and hide Google Test stack frames.
+ virtual void UponLeavingGTest() = 0;
+
+ private:
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetterInterface);
+};
+
+// A working implementation of the OsStackTraceGetterInterface interface.
+class OsStackTraceGetter : public OsStackTraceGetterInterface {
+ public:
+ OsStackTraceGetter() : caller_frame_(NULL) {}
+
+ virtual string CurrentStackTrace(int max_depth, int skip_count)
+ GTEST_LOCK_EXCLUDED_(mutex_);
+
+ virtual void UponLeavingGTest() GTEST_LOCK_EXCLUDED_(mutex_);
+
+ // This string is inserted in place of stack frames that are part of
+ // Google Test's implementation.
+ static const char* const kElidedFramesMarker;
+
+ private:
+ Mutex mutex_; // protects all internal state
+
+ // We save the stack frame below the frame that calls user code.
+ // We do this because the address of the frame immediately below
+ // the user code changes between the call to UponLeavingGTest()
+ // and any calls to CurrentStackTrace() from within the user code.
+ void* caller_frame_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetter);
+};
+
+// Information about a Google Test trace point.
+struct TraceInfo {
+ const char* file;
+ int line;
+ std::string message;
+};
+
+// This is the default global test part result reporter used in UnitTestImpl.
+// This class should only be used by UnitTestImpl.
+class DefaultGlobalTestPartResultReporter
+ : public TestPartResultReporterInterface {
+ public:
+ explicit DefaultGlobalTestPartResultReporter(UnitTestImpl* unit_test);
+ // Implements the TestPartResultReporterInterface. Reports the test part
+ // result in the current test.
+ virtual void ReportTestPartResult(const TestPartResult& result);
+
+ private:
+ UnitTestImpl* const unit_test_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultGlobalTestPartResultReporter);
+};
+
+// This is the default per thread test part result reporter used in
+// UnitTestImpl. This class should only be used by UnitTestImpl.
+class DefaultPerThreadTestPartResultReporter
+ : public TestPartResultReporterInterface {
+ public:
+ explicit DefaultPerThreadTestPartResultReporter(UnitTestImpl* unit_test);
+ // Implements the TestPartResultReporterInterface. The implementation just
+ // delegates to the current global test part result reporter of *unit_test_.
+ virtual void ReportTestPartResult(const TestPartResult& result);
+
+ private:
+ UnitTestImpl* const unit_test_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultPerThreadTestPartResultReporter);
+};
+
+// The private implementation of the UnitTest class. We don't protect
+// the methods under a mutex, as this class is not accessible by a
+// user and the UnitTest class that delegates work to this class does
+// proper locking.
+class GTEST_API_ UnitTestImpl {
+ public:
+ explicit UnitTestImpl(UnitTest* parent);
+ virtual ~UnitTestImpl();
+
+ // There are two different ways to register your own TestPartResultReporter.
+ // You can register your own repoter to listen either only for test results
+ // from the current thread or for results from all threads.
+ // By default, each per-thread test result repoter just passes a new
+ // TestPartResult to the global test result reporter, which registers the
+ // test part result for the currently running test.
+
+ // Returns the global test part result reporter.
+ TestPartResultReporterInterface* GetGlobalTestPartResultReporter();
+
+ // Sets the global test part result reporter.
+ void SetGlobalTestPartResultReporter(
+ TestPartResultReporterInterface* reporter);
+
+ // Returns the test part result reporter for the current thread.
+ TestPartResultReporterInterface* GetTestPartResultReporterForCurrentThread();
+
+ // Sets the test part result reporter for the current thread.
+ void SetTestPartResultReporterForCurrentThread(
+ TestPartResultReporterInterface* reporter);
+
+ // Gets the number of successful test cases.
+ int successful_test_case_count() const;
+
+ // Gets the number of failed test cases.
+ int failed_test_case_count() const;
+
+ // Gets the number of all test cases.
+ int total_test_case_count() const;
+
+ // Gets the number of all test cases that contain at least one test
+ // that should run.
+ int test_case_to_run_count() const;
+
+ // Gets the number of successful tests.
+ int successful_test_count() const;
+
+ // Gets the number of failed tests.
+ int failed_test_count() const;
+
+ // Gets the number of disabled tests that will be reported in the XML report.
+ int reportable_disabled_test_count() const;
+
+ // Gets the number of disabled tests.
+ int disabled_test_count() const;
+
+ // Gets the number of tests to be printed in the XML report.
+ int reportable_test_count() const;
+
+ // Gets the number of all tests.
+ int total_test_count() const;
+
+ // Gets the number of tests that should run.
+ int test_to_run_count() const;
+
+ // Gets the time of the test program start, in ms from the start of the
+ // UNIX epoch.
+ TimeInMillis start_timestamp() const { return start_timestamp_; }
+
+ // Gets the elapsed time, in milliseconds.
+ TimeInMillis elapsed_time() const { return elapsed_time_; }
+
+ // Returns true iff the unit test passed (i.e. all test cases passed).
+ bool Passed() const { return !Failed(); }
+
+ // Returns true iff the unit test failed (i.e. some test case failed
+ // or something outside of all tests failed).
+ bool Failed() const {
+ return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed();
+ }
+
+ // Gets the i-th test case among all the test cases. i can range from 0 to
+ // total_test_case_count() - 1. If i is not in that range, returns NULL.
+ const TestCase* GetTestCase(int i) const {
+ const int index = GetElementOr(test_case_indices_, i, -1);
+ return index < 0 ? NULL : test_cases_[i];
+ }
+
+ // Gets the i-th test case among all the test cases. i can range from 0 to
+ // total_test_case_count() - 1. If i is not in that range, returns NULL.
+ TestCase* GetMutableTestCase(int i) {
+ const int index = GetElementOr(test_case_indices_, i, -1);
+ return index < 0 ? NULL : test_cases_[index];
+ }
+
+ // Provides access to the event listener list.
+ TestEventListeners* listeners() { return &listeners_; }
+
+ // Returns the TestResult for the test that's currently running, or
+ // the TestResult for the ad hoc test if no test is running.
+ TestResult* current_test_result();
+
+ // Returns the TestResult for the ad hoc test.
+ const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; }
+
+ // Sets the OS stack trace getter.
+ //
+ // Does nothing if the input and the current OS stack trace getter
+ // are the same; otherwise, deletes the old getter and makes the
+ // input the current getter.
+ void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter);
+
+ // Returns the current OS stack trace getter if it is not NULL;
+ // otherwise, creates an OsStackTraceGetter, makes it the current
+ // getter, and returns it.
+ OsStackTraceGetterInterface* os_stack_trace_getter();
+
+ // Returns the current OS stack trace as an std::string.
+ //
+ // The maximum number of stack frames to be included is specified by
+ // the gtest_stack_trace_depth flag. The skip_count parameter
+ // specifies the number of top frames to be skipped, which doesn't
+ // count against the number of frames to be included.
+ //
+ // For example, if Foo() calls Bar(), which in turn calls
+ // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
+ // trace but Bar() and CurrentOsStackTraceExceptTop() won't.
+ std::string CurrentOsStackTraceExceptTop(int skip_count) GTEST_NO_INLINE_;
+
+ // Finds and returns a TestCase with the given name. If one doesn't
+ // exist, creates one and returns it.
+ //
+ // Arguments:
+ //
+ // test_case_name: name of the test case
+ // type_param: the name of the test's type parameter, or NULL if
+ // this is not a typed or a type-parameterized test.
+ // set_up_tc: pointer to the function that sets up the test case
+ // tear_down_tc: pointer to the function that tears down the test case
+ TestCase* GetTestCase(const char* test_case_name,
+ const char* type_param,
+ Test::SetUpTestCaseFunc set_up_tc,
+ Test::TearDownTestCaseFunc tear_down_tc);
+
+ // Adds a TestInfo to the unit test.
+ //
+ // Arguments:
+ //
+ // set_up_tc: pointer to the function that sets up the test case
+ // tear_down_tc: pointer to the function that tears down the test case
+ // test_info: the TestInfo object
+ void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc,
+ Test::TearDownTestCaseFunc tear_down_tc,
+ TestInfo* test_info) {
+ // In order to support thread-safe death tests, we need to
+ // remember the original working directory when the test program
+ // was first invoked. We cannot do this in RUN_ALL_TESTS(), as
+ // the user may have changed the current directory before calling
+ // RUN_ALL_TESTS(). Therefore we capture the current directory in
+ // AddTestInfo(), which is called to register a TEST or TEST_F
+ // before main() is reached.
+ if (original_working_dir_.IsEmpty()) {
+ original_working_dir_.Set(FilePath::GetCurrentDir());
+ GTEST_CHECK_(!original_working_dir_.IsEmpty())
+ << "Failed to get the current working directory.";
+ }
+
+ GetTestCase(test_info->test_case_name(),
+ test_info->type_param(),
+ set_up_tc,
+ tear_down_tc)->AddTestInfo(test_info);
+ }
+
+#if GTEST_HAS_PARAM_TEST
+ // Returns ParameterizedTestCaseRegistry object used to keep track of
+ // value-parameterized tests and instantiate and register them.
+ internal::ParameterizedTestCaseRegistry& parameterized_test_registry() {
+ return parameterized_test_registry_;
+ }
+#endif // GTEST_HAS_PARAM_TEST
+
+ // Sets the TestCase object for the test that's currently running.
+ void set_current_test_case(TestCase* a_current_test_case) {
+ current_test_case_ = a_current_test_case;
+ }
+
+ // Sets the TestInfo object for the test that's currently running. If
+ // current_test_info is NULL, the assertion results will be stored in
+ // ad_hoc_test_result_.
+ void set_current_test_info(TestInfo* a_current_test_info) {
+ current_test_info_ = a_current_test_info;
+ }
+
+ // Registers all parameterized tests defined using TEST_P and
+ // INSTANTIATE_TEST_CASE_P, creating regular tests for each test/parameter
+ // combination. This method can be called more then once; it has guards
+ // protecting from registering the tests more then once. If
+ // value-parameterized tests are disabled, RegisterParameterizedTests is
+ // present but does nothing.
+ void RegisterParameterizedTests();
+
+ // Runs all tests in this UnitTest object, prints the result, and
+ // returns true if all tests are successful. If any exception is
+ // thrown during a test, this test is considered to be failed, but
+ // the rest of the tests will still be run.
+ bool RunAllTests();
+
+ // Clears the results of all tests, except the ad hoc tests.
+ void ClearNonAdHocTestResult() {
+ ForEach(test_cases_, TestCase::ClearTestCaseResult);
+ }
+
+ // Clears the results of ad-hoc test assertions.
+ void ClearAdHocTestResult() {
+ ad_hoc_test_result_.Clear();
+ }
+
+ // Adds a TestProperty to the current TestResult object when invoked in a
+ // context of a test or a test case, or to the global property set. If the
+ // result already contains a property with the same key, the value will be
+ // updated.
+ void RecordProperty(const TestProperty& test_property);
+
+ enum ReactionToSharding {
+ HONOR_SHARDING_PROTOCOL,
+ IGNORE_SHARDING_PROTOCOL
+ };
+
+ // Matches the full name of each test against the user-specified
+ // filter to decide whether the test should run, then records the
+ // result in each TestCase and TestInfo object.
+ // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests
+ // based on sharding variables in the environment.
+ // Returns the number of tests that should run.
+ int FilterTests(ReactionToSharding shard_tests);
+
+ // Prints the names of the tests matching the user-specified filter flag.
+ void ListTestsMatchingFilter();
+
+ const TestCase* current_test_case() const { return current_test_case_; }
+ TestInfo* current_test_info() { return current_test_info_; }
+ const TestInfo* current_test_info() const { return current_test_info_; }
+
+ // Returns the vector of environments that need to be set-up/torn-down
+ // before/after the tests are run.
+ std::vector<Environment*>& environments() { return environments_; }
+
+ // Getters for the per-thread Google Test trace stack.
+ std::vector<TraceInfo>& gtest_trace_stack() {
+ return *(gtest_trace_stack_.pointer());
+ }
+ const std::vector<TraceInfo>& gtest_trace_stack() const {
+ return gtest_trace_stack_.get();
+ }
+
+#if GTEST_HAS_DEATH_TEST
+ void InitDeathTestSubprocessControlInfo() {
+ internal_run_death_test_flag_.reset(ParseInternalRunDeathTestFlag());
+ }
+ // Returns a pointer to the parsed --gtest_internal_run_death_test
+ // flag, or NULL if that flag was not specified.
+ // This information is useful only in a death test child process.
+ // Must not be called before a call to InitGoogleTest.
+ const InternalRunDeathTestFlag* internal_run_death_test_flag() const {
+ return internal_run_death_test_flag_.get();
+ }
+
+ // Returns a pointer to the current death test factory.
+ internal::DeathTestFactory* death_test_factory() {
+ return death_test_factory_.get();
+ }
+
+ void SuppressTestEventsIfInSubprocess();
+
+ friend class ReplaceDeathTestFactory;
+#endif // GTEST_HAS_DEATH_TEST
+
+ // Initializes the event listener performing XML output as specified by
+ // UnitTestOptions. Must not be called before InitGoogleTest.
+ void ConfigureXmlOutput();
+
+#if GTEST_CAN_STREAM_RESULTS_
+ // Initializes the event listener for streaming test results to a socket.
+ // Must not be called before InitGoogleTest.
+ void ConfigureStreamingOutput();
+#endif
+
+ // Performs initialization dependent upon flag values obtained in
+ // ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to
+ // ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest
+ // this function is also called from RunAllTests. Since this function can be
+ // called more than once, it has to be idempotent.
+ void PostFlagParsingInit();
+
+ // Gets the random seed used at the start of the current test iteration.
+ int random_seed() const { return random_seed_; }
+
+ // Gets the random number generator.
+ internal::Random* random() { return &random_; }
+
+ // Shuffles all test cases, and the tests within each test case,
+ // making sure that death tests are still run first.
+ void ShuffleTests();
+
+ // Restores the test cases and tests to their order before the first shuffle.
+ void UnshuffleTests();
+
+ // Returns the value of GTEST_FLAG(catch_exceptions) at the moment
+ // UnitTest::Run() starts.
+ bool catch_exceptions() const { return catch_exceptions_; }
+
+ private:
+ friend class ::testing::UnitTest;
+
+ // Used by UnitTest::Run() to capture the state of
+ // GTEST_FLAG(catch_exceptions) at the moment it starts.
+ void set_catch_exceptions(bool value) { catch_exceptions_ = value; }
+
+ // The UnitTest object that owns this implementation object.
+ UnitTest* const parent_;
+
+ // The working directory when the first TEST() or TEST_F() was
+ // executed.
+ internal::FilePath original_working_dir_;
+
+ // The default test part result reporters.
+ DefaultGlobalTestPartResultReporter default_global_test_part_result_reporter_;
+ DefaultPerThreadTestPartResultReporter
+ default_per_thread_test_part_result_reporter_;
+
+ // Points to (but doesn't own) the global test part result reporter.
+ TestPartResultReporterInterface* global_test_part_result_repoter_;
+
+ // Protects read and write access to global_test_part_result_reporter_.
+ internal::Mutex global_test_part_result_reporter_mutex_;
+
+ // Points to (but doesn't own) the per-thread test part result reporter.
+ internal::ThreadLocal<TestPartResultReporterInterface*>
+ per_thread_test_part_result_reporter_;
+
+ // The vector of environments that need to be set-up/torn-down
+ // before/after the tests are run.
+ std::vector<Environment*> environments_;
+
+ // The vector of TestCases in their original order. It owns the
+ // elements in the vector.
+ std::vector<TestCase*> test_cases_;
+
+ // Provides a level of indirection for the test case list to allow
+ // easy shuffling and restoring the test case order. The i-th
+ // element of this vector is the index of the i-th test case in the
+ // shuffled order.
+ std::vector<int> test_case_indices_;
+
+#if GTEST_HAS_PARAM_TEST
+ // ParameterizedTestRegistry object used to register value-parameterized
+ // tests.
+ internal::ParameterizedTestCaseRegistry parameterized_test_registry_;
+
+ // Indicates whether RegisterParameterizedTests() has been called already.
+ bool parameterized_tests_registered_;
+#endif // GTEST_HAS_PARAM_TEST
+
+ // Index of the last death test case registered. Initially -1.
+ int last_death_test_case_;
+
+ // This points to the TestCase for the currently running test. It
+ // changes as Google Test goes through one test case after another.
+ // When no test is running, this is set to NULL and Google Test
+ // stores assertion results in ad_hoc_test_result_. Initially NULL.
+ TestCase* current_test_case_;
+
+ // This points to the TestInfo for the currently running test. It
+ // changes as Google Test goes through one test after another. When
+ // no test is running, this is set to NULL and Google Test stores
+ // assertion results in ad_hoc_test_result_. Initially NULL.
+ TestInfo* current_test_info_;
+
+ // Normally, a user only writes assertions inside a TEST or TEST_F,
+ // or inside a function called by a TEST or TEST_F. Since Google
+ // Test keeps track of which test is current running, it can
+ // associate such an assertion with the test it belongs to.
+ //
+ // If an assertion is encountered when no TEST or TEST_F is running,
+ // Google Test attributes the assertion result to an imaginary "ad hoc"
+ // test, and records the result in ad_hoc_test_result_.
+ TestResult ad_hoc_test_result_;
+
+ // The list of event listeners that can be used to track events inside
+ // Google Test.
+ TestEventListeners listeners_;
+
+ // The OS stack trace getter. Will be deleted when the UnitTest
+ // object is destructed. By default, an OsStackTraceGetter is used,
+ // but the user can set this field to use a custom getter if that is
+ // desired.
+ OsStackTraceGetterInterface* os_stack_trace_getter_;
+
+ // True iff PostFlagParsingInit() has been called.
+ bool post_flag_parse_init_performed_;
+
+ // The random number seed used at the beginning of the test run.
+ int random_seed_;
+
+ // Our random number generator.
+ internal::Random random_;
+
+ // The time of the test program start, in ms from the start of the
+ // UNIX epoch.
+ TimeInMillis start_timestamp_;
+
+ // How long the test took to run, in milliseconds.
+ TimeInMillis elapsed_time_;
+
+#if GTEST_HAS_DEATH_TEST
+ // The decomposed components of the gtest_internal_run_death_test flag,
+ // parsed when RUN_ALL_TESTS is called.
+ internal::scoped_ptr<InternalRunDeathTestFlag> internal_run_death_test_flag_;
+ internal::scoped_ptr<internal::DeathTestFactory> death_test_factory_;
+#endif // GTEST_HAS_DEATH_TEST
+
+ // A per-thread stack of traces created by the SCOPED_TRACE() macro.
+ internal::ThreadLocal<std::vector<TraceInfo> > gtest_trace_stack_;
+
+ // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests()
+ // starts.
+ bool catch_exceptions_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTestImpl);
+}; // class UnitTestImpl
+
+// Convenience function for accessing the global UnitTest
+// implementation object.
+inline UnitTestImpl* GetUnitTestImpl() {
+ return UnitTest::GetInstance()->impl();
+}
+
+#if GTEST_USES_SIMPLE_RE
+
+// Internal helper functions for implementing the simple regular
+// expression matcher.
+GTEST_API_ bool IsInSet(char ch, const char* str);
+GTEST_API_ bool IsAsciiDigit(char ch);
+GTEST_API_ bool IsAsciiPunct(char ch);
+GTEST_API_ bool IsRepeat(char ch);
+GTEST_API_ bool IsAsciiWhiteSpace(char ch);
+GTEST_API_ bool IsAsciiWordChar(char ch);
+GTEST_API_ bool IsValidEscape(char ch);
+GTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch);
+GTEST_API_ bool ValidateRegex(const char* regex);
+GTEST_API_ bool MatchRegexAtHead(const char* regex, const char* str);
+GTEST_API_ bool MatchRepetitionAndRegexAtHead(
+ bool escaped, char ch, char repeat, const char* regex, const char* str);
+GTEST_API_ bool MatchRegexAnywhere(const char* regex, const char* str);
+
+#endif // GTEST_USES_SIMPLE_RE
+
+// Parses the command line for Google Test flags, without initializing
+// other parts of Google Test.
+GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, char** argv);
+GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv);
+
+#if GTEST_HAS_DEATH_TEST
+
+// Returns the message describing the last system error, regardless of the
+// platform.
+GTEST_API_ std::string GetLastErrnoDescription();
+
+# if GTEST_OS_WINDOWS
+// Provides leak-safe Windows kernel handle ownership.
+class AutoHandle {
+ public:
+ AutoHandle() : handle_(INVALID_HANDLE_VALUE) {}
+ explicit AutoHandle(HANDLE handle) : handle_(handle) {}
+
+ ~AutoHandle() { Reset(); }
+
+ HANDLE Get() const { return handle_; }
+ void Reset() { Reset(INVALID_HANDLE_VALUE); }
+ void Reset(HANDLE handle) {
+ if (handle != handle_) {
+ if (handle_ != INVALID_HANDLE_VALUE)
+ ::CloseHandle(handle_);
+ handle_ = handle;
+ }
+ }
+
+ private:
+ HANDLE handle_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle);
+};
+# endif // GTEST_OS_WINDOWS
+
+// Attempts to parse a string into a positive integer pointed to by the
+// number parameter. Returns true if that is possible.
+// GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we can use
+// it here.
+template <typename Integer>
+bool ParseNaturalNumber(const ::std::string& str, Integer* number) {
+ // Fail fast if the given string does not begin with a digit;
+ // this bypasses strtoXXX's "optional leading whitespace and plus
+ // or minus sign" semantics, which are undesirable here.
+ if (str.empty() || !IsDigit(str[0])) {
+ return false;
+ }
+ errno = 0;
+
+ char* end;
+ // BiggestConvertible is the largest integer type that system-provided
+ // string-to-number conversion routines can return.
+
+# if GTEST_OS_WINDOWS && !defined(__GNUC__)
+
+ // MSVC and C++ Builder define __int64 instead of the standard long long.
+ typedef unsigned __int64 BiggestConvertible;
+ const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10);
+
+# else
+
+ typedef unsigned long long BiggestConvertible; // NOLINT
+ const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10);
+
+# endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
+
+ const bool parse_success = *end == '\0' && errno == 0;
+
+ // TODO(vladl@google.com): Convert this to compile time assertion when it is
+ // available.
+ GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed));
+
+ const Integer result = static_cast<Integer>(parsed);
+ if (parse_success && static_cast<BiggestConvertible>(result) == parsed) {
+ *number = result;
+ return true;
+ }
+ return false;
+}
+#endif // GTEST_HAS_DEATH_TEST
+
+// TestResult contains some private methods that should be hidden from
+// Google Test user but are required for testing. This class allow our tests
+// to access them.
+//
+// This class is supplied only for the purpose of testing Google Test's own
+// constructs. Do not use it in user tests, either directly or indirectly.
+class TestResultAccessor {
+ public:
+ static void RecordProperty(TestResult* test_result,
+ const std::string& xml_element,
+ const TestProperty& property) {
+ test_result->RecordProperty(xml_element, property);
+ }
+
+ static void ClearTestPartResults(TestResult* test_result) {
+ test_result->ClearTestPartResults();
+ }
+
+ static const std::vector<testing::TestPartResult>& test_part_results(
+ const TestResult& test_result) {
+ return test_result.test_part_results();
+ }
+};
+
+#if GTEST_CAN_STREAM_RESULTS_
+
+// Streams test results to the given port on the given host machine.
+class StreamingListener : public EmptyTestEventListener {
+ public:
+ // Abstract base class for writing strings to a socket.
+ class AbstractSocketWriter {
+ public:
+ virtual ~AbstractSocketWriter() {}
+
+ // Sends a string to the socket.
+ virtual void Send(const string& message) = 0;
+
+ // Closes the socket.
+ virtual void CloseConnection() {}
+
+ // Sends a string and a newline to the socket.
+ void SendLn(const string& message) {
+ Send(message + "\n");
+ }
+ };
+
+ // Concrete class for actually writing strings to a socket.
+ class SocketWriter : public AbstractSocketWriter {
+ public:
+ SocketWriter(const string& host, const string& port)
+ : sockfd_(-1), host_name_(host), port_num_(port) {
+ MakeConnection();
+ }
+
+ virtual ~SocketWriter() {
+ if (sockfd_ != -1)
+ CloseConnection();
+ }
+
+ // Sends a string to the socket.
+ virtual void Send(const string& message) {
+ GTEST_CHECK_(sockfd_ != -1)
+ << "Send() can be called only when there is a connection.";
+
+ const int len = static_cast<int>(message.length());
+ if (write(sockfd_, message.c_str(), len) != len) {
+ GTEST_LOG_(WARNING)
+ << "stream_result_to: failed to stream to "
+ << host_name_ << ":" << port_num_;
+ }
+ }
+
+ private:
+ // Creates a client socket and connects to the server.
+ void MakeConnection();
+
+ // Closes the socket.
+ void CloseConnection() {
+ GTEST_CHECK_(sockfd_ != -1)
+ << "CloseConnection() can be called only when there is a connection.";
+
+ close(sockfd_);
+ sockfd_ = -1;
+ }
+
+ int sockfd_; // socket file descriptor
+ const string host_name_;
+ const string port_num_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(SocketWriter);
+ }; // class SocketWriter
+
+ // Escapes '=', '&', '%', and '\n' characters in str as "%xx".
+ static string UrlEncode(const char* str);
+
+ StreamingListener(const string& host, const string& port)
+ : socket_writer_(new SocketWriter(host, port)) { Start(); }
+
+ explicit StreamingListener(AbstractSocketWriter* socket_writer)
+ : socket_writer_(socket_writer) { Start(); }
+
+ void OnTestProgramStart(const UnitTest& /* unit_test */) {
+ SendLn("event=TestProgramStart");
+ }
+
+ void OnTestProgramEnd(const UnitTest& unit_test) {
+ // Note that Google Test current only report elapsed time for each
+ // test iteration, not for the entire test program.
+ SendLn("event=TestProgramEnd&passed=" + FormatBool(unit_test.Passed()));
+
+ // Notify the streaming server to stop.
+ socket_writer_->CloseConnection();
+ }
+
+ void OnTestIterationStart(const UnitTest& /* unit_test */, int iteration) {
+ SendLn("event=TestIterationStart&iteration=" +
+ StreamableToString(iteration));
+ }
+
+ void OnTestIterationEnd(const UnitTest& unit_test, int /* iteration */) {
+ SendLn("event=TestIterationEnd&passed=" +
+ FormatBool(unit_test.Passed()) + "&elapsed_time=" +
+ StreamableToString(unit_test.elapsed_time()) + "ms");
+ }
+
+ void OnTestCaseStart(const TestCase& test_case) {
+ SendLn(std::string("event=TestCaseStart&name=") + test_case.name());
+ }
+
+ void OnTestCaseEnd(const TestCase& test_case) {
+ SendLn("event=TestCaseEnd&passed=" + FormatBool(test_case.Passed())
+ + "&elapsed_time=" + StreamableToString(test_case.elapsed_time())
+ + "ms");
+ }
+
+ void OnTestStart(const TestInfo& test_info) {
+ SendLn(std::string("event=TestStart&name=") + test_info.name());
+ }
+
+ void OnTestEnd(const TestInfo& test_info) {
+ SendLn("event=TestEnd&passed=" +
+ FormatBool((test_info.result())->Passed()) +
+ "&elapsed_time=" +
+ StreamableToString((test_info.result())->elapsed_time()) + "ms");
+ }
+
+ void OnTestPartResult(const TestPartResult& test_part_result) {
+ const char* file_name = test_part_result.file_name();
+ if (file_name == NULL)
+ file_name = "";
+ SendLn("event=TestPartResult&file=" + UrlEncode(file_name) +
+ "&line=" + StreamableToString(test_part_result.line_number()) +
+ "&message=" + UrlEncode(test_part_result.message()));
+ }
+
+ private:
+ // Sends the given message and a newline to the socket.
+ void SendLn(const string& message) { socket_writer_->SendLn(message); }
+
+ // Called at the start of streaming to notify the receiver what
+ // protocol we are using.
+ void Start() { SendLn("gtest_streaming_protocol_version=1.0"); }
+
+ string FormatBool(bool value) { return value ? "1" : "0"; }
+
+ const scoped_ptr<AbstractSocketWriter> socket_writer_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamingListener);
+}; // class StreamingListener
+
+#endif // GTEST_CAN_STREAM_RESULTS_
+
+} // namespace internal
+} // namespace testing
+
+#endif // GTEST_SRC_GTEST_INTERNAL_INL_H_
diff --git a/test/fmw/gtest/src/gtest-port.cc b/test/fmw/gtest/src/gtest-port.cc
new file mode 100644
index 0000000..0c4df5f
--- /dev/null
+++ b/test/fmw/gtest/src/gtest-port.cc
@@ -0,0 +1,805 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include "gtest/internal/gtest-port.h"
+
+#include <limits.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#if GTEST_OS_WINDOWS_MOBILE
+# include <windows.h> // For TerminateProcess()
+#elif GTEST_OS_WINDOWS
+# include <io.h>
+# include <sys/stat.h>
+#else
+# include <unistd.h>
+#endif // GTEST_OS_WINDOWS_MOBILE
+
+#if GTEST_OS_MAC
+# include <mach/mach_init.h>
+# include <mach/task.h>
+# include <mach/vm_map.h>
+#endif // GTEST_OS_MAC
+
+#if GTEST_OS_QNX
+# include <devctl.h>
+# include <sys/procfs.h>
+#endif // GTEST_OS_QNX
+
+#include "gtest/gtest-spi.h"
+#include "gtest/gtest-message.h"
+#include "gtest/internal/gtest-internal.h"
+#include "gtest/internal/gtest-string.h"
+
+// Indicates that this translation unit is part of Google Test's
+// implementation. It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error. This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+namespace testing {
+namespace internal {
+
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+// MSVC and C++Builder do not provide a definition of STDERR_FILENO.
+const int kStdOutFileno = 1;
+const int kStdErrFileno = 2;
+#else
+const int kStdOutFileno = STDOUT_FILENO;
+const int kStdErrFileno = STDERR_FILENO;
+#endif // _MSC_VER
+
+#if GTEST_OS_MAC
+
+// Returns the number of threads running in the process, or 0 to indicate that
+// we cannot detect it.
+size_t GetThreadCount() {
+ const task_t task = mach_task_self();
+ mach_msg_type_number_t thread_count;
+ thread_act_array_t thread_list;
+ const kern_return_t status = task_threads(task, &thread_list, &thread_count);
+ if (status == KERN_SUCCESS) {
+ // task_threads allocates resources in thread_list and we need to free them
+ // to avoid leaks.
+ vm_deallocate(task,
+ reinterpret_cast<vm_address_t>(thread_list),
+ sizeof(thread_t) * thread_count);
+ return static_cast<size_t>(thread_count);
+ } else {
+ return 0;
+ }
+}
+
+#elif GTEST_OS_QNX
+
+// Returns the number of threads running in the process, or 0 to indicate that
+// we cannot detect it.
+size_t GetThreadCount() {
+ const int fd = open("/proc/self/as", O_RDONLY);
+ if (fd < 0) {
+ return 0;
+ }
+ procfs_info process_info;
+ const int status =
+ devctl(fd, DCMD_PROC_INFO, &process_info, sizeof(process_info), NULL);
+ close(fd);
+ if (status == EOK) {
+ return static_cast<size_t>(process_info.num_threads);
+ } else {
+ return 0;
+ }
+}
+
+#else
+
+size_t GetThreadCount() {
+ // There's no portable way to detect the number of threads, so we just
+ // return 0 to indicate that we cannot detect it.
+ return 0;
+}
+
+#endif // GTEST_OS_MAC
+
+#if GTEST_USES_POSIX_RE
+
+// Implements RE. Currently only needed for death tests.
+
+RE::~RE() {
+ if (is_valid_) {
+ // regfree'ing an invalid regex might crash because the content
+ // of the regex is undefined. Since the regex's are essentially
+ // the same, one cannot be valid (or invalid) without the other
+ // being so too.
+ regfree(&partial_regex_);
+ regfree(&full_regex_);
+ }
+ free(const_cast<char*>(pattern_));
+}
+
+// Returns true iff regular expression re matches the entire str.
+bool RE::FullMatch(const char* str, const RE& re) {
+ if (!re.is_valid_) return false;
+
+ regmatch_t match;
+ return regexec(&re.full_regex_, str, 1, &match, 0) == 0;
+}
+
+// Returns true iff regular expression re matches a substring of str
+// (including str itself).
+bool RE::PartialMatch(const char* str, const RE& re) {
+ if (!re.is_valid_) return false;
+
+ regmatch_t match;
+ return regexec(&re.partial_regex_, str, 1, &match, 0) == 0;
+}
+
+// Initializes an RE from its string representation.
+void RE::Init(const char* regex) {
+ pattern_ = posix::StrDup(regex);
+
+ // Reserves enough bytes to hold the regular expression used for a
+ // full match.
+ const size_t full_regex_len = strlen(regex) + 10;
+ char* const full_pattern = new char[full_regex_len];
+
+ snprintf(full_pattern, full_regex_len, "^(%s)$", regex);
+ is_valid_ = regcomp(&full_regex_, full_pattern, REG_EXTENDED) == 0;
+ // We want to call regcomp(&partial_regex_, ...) even if the
+ // previous expression returns false. Otherwise partial_regex_ may
+ // not be properly initialized can may cause trouble when it's
+ // freed.
+ //
+ // Some implementation of POSIX regex (e.g. on at least some
+ // versions of Cygwin) doesn't accept the empty string as a valid
+ // regex. We change it to an equivalent form "()" to be safe.
+ if (is_valid_) {
+ const char* const partial_regex = (*regex == '\0') ? "()" : regex;
+ is_valid_ = regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0;
+ }
+ EXPECT_TRUE(is_valid_)
+ << "Regular expression \"" << regex
+ << "\" is not a valid POSIX Extended regular expression.";
+
+ delete[] full_pattern;
+}
+
+#elif GTEST_USES_SIMPLE_RE
+
+// Returns true iff ch appears anywhere in str (excluding the
+// terminating '\0' character).
+bool IsInSet(char ch, const char* str) {
+ return ch != '\0' && strchr(str, ch) != NULL;
+}
+
+// Returns true iff ch belongs to the given classification. Unlike
+// similar functions in <ctype.h>, these aren't affected by the
+// current locale.
+bool IsAsciiDigit(char ch) { return '0' <= ch && ch <= '9'; }
+bool IsAsciiPunct(char ch) {
+ return IsInSet(ch, "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~");
+}
+bool IsRepeat(char ch) { return IsInSet(ch, "?*+"); }
+bool IsAsciiWhiteSpace(char ch) { return IsInSet(ch, " \f\n\r\t\v"); }
+bool IsAsciiWordChar(char ch) {
+ return ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') ||
+ ('0' <= ch && ch <= '9') || ch == '_';
+}
+
+// Returns true iff "\\c" is a supported escape sequence.
+bool IsValidEscape(char c) {
+ return (IsAsciiPunct(c) || IsInSet(c, "dDfnrsStvwW"));
+}
+
+// Returns true iff the given atom (specified by escaped and pattern)
+// matches ch. The result is undefined if the atom is invalid.
+bool AtomMatchesChar(bool escaped, char pattern_char, char ch) {
+ if (escaped) { // "\\p" where p is pattern_char.
+ switch (pattern_char) {
+ case 'd': return IsAsciiDigit(ch);
+ case 'D': return !IsAsciiDigit(ch);
+ case 'f': return ch == '\f';
+ case 'n': return ch == '\n';
+ case 'r': return ch == '\r';
+ case 's': return IsAsciiWhiteSpace(ch);
+ case 'S': return !IsAsciiWhiteSpace(ch);
+ case 't': return ch == '\t';
+ case 'v': return ch == '\v';
+ case 'w': return IsAsciiWordChar(ch);
+ case 'W': return !IsAsciiWordChar(ch);
+ }
+ return IsAsciiPunct(pattern_char) && pattern_char == ch;
+ }
+
+ return (pattern_char == '.' && ch != '\n') || pattern_char == ch;
+}
+
+// Helper function used by ValidateRegex() to format error messages.
+std::string FormatRegexSyntaxError(const char* regex, int index) {
+ return (Message() << "Syntax error at index " << index
+ << " in simple regular expression \"" << regex << "\": ").GetString();
+}
+
+// Generates non-fatal failures and returns false if regex is invalid;
+// otherwise returns true.
+bool ValidateRegex(const char* regex) {
+ if (regex == NULL) {
+ // TODO(wan@google.com): fix the source file location in the
+ // assertion failures to match where the regex is used in user
+ // code.
+ ADD_FAILURE() << "NULL is not a valid simple regular expression.";
+ return false;
+ }
+
+ bool is_valid = true;
+
+ // True iff ?, *, or + can follow the previous atom.
+ bool prev_repeatable = false;
+ for (int i = 0; regex[i]; i++) {
+ if (regex[i] == '\\') { // An escape sequence
+ i++;
+ if (regex[i] == '\0') {
+ ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
+ << "'\\' cannot appear at the end.";
+ return false;
+ }
+
+ if (!IsValidEscape(regex[i])) {
+ ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
+ << "invalid escape sequence \"\\" << regex[i] << "\".";
+ is_valid = false;
+ }
+ prev_repeatable = true;
+ } else { // Not an escape sequence.
+ const char ch = regex[i];
+
+ if (ch == '^' && i > 0) {
+ ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
+ << "'^' can only appear at the beginning.";
+ is_valid = false;
+ } else if (ch == '$' && regex[i + 1] != '\0') {
+ ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
+ << "'$' can only appear at the end.";
+ is_valid = false;
+ } else if (IsInSet(ch, "()[]{}|")) {
+ ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
+ << "'" << ch << "' is unsupported.";
+ is_valid = false;
+ } else if (IsRepeat(ch) && !prev_repeatable) {
+ ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
+ << "'" << ch << "' can only follow a repeatable token.";
+ is_valid = false;
+ }
+
+ prev_repeatable = !IsInSet(ch, "^$?*+");
+ }
+ }
+
+ return is_valid;
+}
+
+// Matches a repeated regex atom followed by a valid simple regular
+// expression. The regex atom is defined as c if escaped is false,
+// or \c otherwise. repeat is the repetition meta character (?, *,
+// or +). The behavior is undefined if str contains too many
+// characters to be indexable by size_t, in which case the test will
+// probably time out anyway. We are fine with this limitation as
+// std::string has it too.
+bool MatchRepetitionAndRegexAtHead(
+ bool escaped, char c, char repeat, const char* regex,
+ const char* str) {
+ const size_t min_count = (repeat == '+') ? 1 : 0;
+ const size_t max_count = (repeat == '?') ? 1 :
+ static_cast<size_t>(-1) - 1;
+ // We cannot call numeric_limits::max() as it conflicts with the
+ // max() macro on Windows.
+
+ for (size_t i = 0; i <= max_count; ++i) {
+ // We know that the atom matches each of the first i characters in str.
+ if (i >= min_count && MatchRegexAtHead(regex, str + i)) {
+ // We have enough matches at the head, and the tail matches too.
+ // Since we only care about *whether* the pattern matches str
+ // (as opposed to *how* it matches), there is no need to find a
+ // greedy match.
+ return true;
+ }
+ if (str[i] == '\0' || !AtomMatchesChar(escaped, c, str[i]))
+ return false;
+ }
+ return false;
+}
+
+// Returns true iff regex matches a prefix of str. regex must be a
+// valid simple regular expression and not start with "^", or the
+// result is undefined.
+bool MatchRegexAtHead(const char* regex, const char* str) {
+ if (*regex == '\0') // An empty regex matches a prefix of anything.
+ return true;
+
+ // "$" only matches the end of a string. Note that regex being
+ // valid guarantees that there's nothing after "$" in it.
+ if (*regex == '$')
+ return *str == '\0';
+
+ // Is the first thing in regex an escape sequence?
+ const bool escaped = *regex == '\\';
+ if (escaped)
+ ++regex;
+ if (IsRepeat(regex[1])) {
+ // MatchRepetitionAndRegexAtHead() calls MatchRegexAtHead(), so
+ // here's an indirect recursion. It terminates as the regex gets
+ // shorter in each recursion.
+ return MatchRepetitionAndRegexAtHead(
+ escaped, regex[0], regex[1], regex + 2, str);
+ } else {
+ // regex isn't empty, isn't "$", and doesn't start with a
+ // repetition. We match the first atom of regex with the first
+ // character of str and recurse.
+ return (*str != '\0') && AtomMatchesChar(escaped, *regex, *str) &&
+ MatchRegexAtHead(regex + 1, str + 1);
+ }
+}
+
+// Returns true iff regex matches any substring of str. regex must be
+// a valid simple regular expression, or the result is undefined.
+//
+// The algorithm is recursive, but the recursion depth doesn't exceed
+// the regex length, so we won't need to worry about running out of
+// stack space normally. In rare cases the time complexity can be
+// exponential with respect to the regex length + the string length,
+// but usually it's must faster (often close to linear).
+bool MatchRegexAnywhere(const char* regex, const char* str) {
+ if (regex == NULL || str == NULL)
+ return false;
+
+ if (*regex == '^')
+ return MatchRegexAtHead(regex + 1, str);
+
+ // A successful match can be anywhere in str.
+ do {
+ if (MatchRegexAtHead(regex, str))
+ return true;
+ } while (*str++ != '\0');
+ return false;
+}
+
+// Implements the RE class.
+
+RE::~RE() {
+ free(const_cast<char*>(pattern_));
+ free(const_cast<char*>(full_pattern_));
+}
+
+// Returns true iff regular expression re matches the entire str.
+bool RE::FullMatch(const char* str, const RE& re) {
+ return re.is_valid_ && MatchRegexAnywhere(re.full_pattern_, str);
+}
+
+// Returns true iff regular expression re matches a substring of str
+// (including str itself).
+bool RE::PartialMatch(const char* str, const RE& re) {
+ return re.is_valid_ && MatchRegexAnywhere(re.pattern_, str);
+}
+
+// Initializes an RE from its string representation.
+void RE::Init(const char* regex) {
+ pattern_ = full_pattern_ = NULL;
+ if (regex != NULL) {
+ pattern_ = posix::StrDup(regex);
+ }
+
+ is_valid_ = ValidateRegex(regex);
+ if (!is_valid_) {
+ // No need to calculate the full pattern when the regex is invalid.
+ return;
+ }
+
+ const size_t len = strlen(regex);
+ // Reserves enough bytes to hold the regular expression used for a
+ // full match: we need space to prepend a '^', append a '$', and
+ // terminate the string with '\0'.
+ char* buffer = static_cast<char*>(malloc(len + 3));
+ full_pattern_ = buffer;
+
+ if (*regex != '^')
+ *buffer++ = '^'; // Makes sure full_pattern_ starts with '^'.
+
+ // We don't use snprintf or strncpy, as they trigger a warning when
+ // compiled with VC++ 8.0.
+ memcpy(buffer, regex, len);
+ buffer += len;
+
+ if (len == 0 || regex[len - 1] != '$')
+ *buffer++ = '$'; // Makes sure full_pattern_ ends with '$'.
+
+ *buffer = '\0';
+}
+
+#endif // GTEST_USES_POSIX_RE
+
+const char kUnknownFile[] = "unknown file";
+
+// Formats a source file path and a line number as they would appear
+// in an error message from the compiler used to compile this code.
+GTEST_API_ ::std::string FormatFileLocation(const char* file, int line) {
+ const std::string file_name(file == NULL ? kUnknownFile : file);
+
+ if (line < 0) {
+ return file_name + ":";
+ }
+#ifdef _MSC_VER
+ return file_name + "(" + StreamableToString(line) + "):";
+#else
+ return file_name + ":" + StreamableToString(line) + ":";
+#endif // _MSC_VER
+}
+
+// Formats a file location for compiler-independent XML output.
+// Although this function is not platform dependent, we put it next to
+// FormatFileLocation in order to contrast the two functions.
+// Note that FormatCompilerIndependentFileLocation() does NOT append colon
+// to the file location it produces, unlike FormatFileLocation().
+GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(
+ const char* file, int line) {
+ const std::string file_name(file == NULL ? kUnknownFile : file);
+
+ if (line < 0)
+ return file_name;
+ else
+ return file_name + ":" + StreamableToString(line);
+}
+
+
+GTestLog::GTestLog(GTestLogSeverity severity, const char* file, int line)
+ : severity_(severity) {
+ const char* const marker =
+ severity == GTEST_INFO ? "[ INFO ]" :
+ severity == GTEST_WARNING ? "[WARNING]" :
+ severity == GTEST_ERROR ? "[ ERROR ]" : "[ FATAL ]";
+ GetStream() << ::std::endl << marker << " "
+ << FormatFileLocation(file, line).c_str() << ": ";
+}
+
+// Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
+GTestLog::~GTestLog() {
+ GetStream() << ::std::endl;
+ if (severity_ == GTEST_FATAL) {
+ fflush(stderr);
+ posix::Abort();
+ }
+}
+// Disable Microsoft deprecation warnings for POSIX functions called from
+// this class (creat, dup, dup2, and close)
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable: 4996)
+#endif // _MSC_VER
+
+#if GTEST_HAS_STREAM_REDIRECTION
+
+// Object that captures an output stream (stdout/stderr).
+class CapturedStream {
+ public:
+ // The ctor redirects the stream to a temporary file.
+ explicit CapturedStream(int fd) : fd_(fd), uncaptured_fd_(dup(fd)) {
+# if GTEST_OS_WINDOWS
+ char temp_dir_path[MAX_PATH + 1] = { '\0' }; // NOLINT
+ char temp_file_path[MAX_PATH + 1] = { '\0' }; // NOLINT
+
+ ::GetTempPathA(sizeof(temp_dir_path), temp_dir_path);
+ const UINT success = ::GetTempFileNameA(temp_dir_path,
+ "gtest_redir",
+ 0, // Generate unique file name.
+ temp_file_path);
+ GTEST_CHECK_(success != 0)
+ << "Unable to create a temporary file in " << temp_dir_path;
+ const int captured_fd = creat(temp_file_path, _S_IREAD | _S_IWRITE);
+ GTEST_CHECK_(captured_fd != -1) << "Unable to open temporary file "
+ << temp_file_path;
+ filename_ = temp_file_path;
+# else
+ // There's no guarantee that a test has write access to the current
+ // directory, so we create the temporary file in the /tmp directory
+ // instead. We use /tmp on most systems, and /sdcard on Android.
+ // That's because Android doesn't have /tmp.
+# if GTEST_OS_LINUX_ANDROID
+ // Note: Android applications are expected to call the framework's
+ // Context.getExternalStorageDirectory() method through JNI to get
+ // the location of the world-writable SD Card directory. However,
+ // this requires a Context handle, which cannot be retrieved
+ // globally from native code. Doing so also precludes running the
+ // code as part of a regular standalone executable, which doesn't
+ // run in a Dalvik process (e.g. when running it through 'adb shell').
+ //
+ // The location /sdcard is directly accessible from native code
+ // and is the only location (unofficially) supported by the Android
+ // team. It's generally a symlink to the real SD Card mount point
+ // which can be /mnt/sdcard, /mnt/sdcard0, /system/media/sdcard, or
+ // other OEM-customized locations. Never rely on these, and always
+ // use /sdcard.
+ char name_template[] = "/sdcard/gtest_captured_stream.XXXXXX";
+# else
+ char name_template[] = "/tmp/captured_stream.XXXXXX";
+# endif // GTEST_OS_LINUX_ANDROID
+ const int captured_fd = mkstemp(name_template);
+ filename_ = name_template;
+# endif // GTEST_OS_WINDOWS
+ fflush(NULL);
+ dup2(captured_fd, fd_);
+ close(captured_fd);
+ }
+
+ ~CapturedStream() {
+ remove(filename_.c_str());
+ }
+
+ std::string GetCapturedString() {
+ if (uncaptured_fd_ != -1) {
+ // Restores the original stream.
+ fflush(NULL);
+ dup2(uncaptured_fd_, fd_);
+ close(uncaptured_fd_);
+ uncaptured_fd_ = -1;
+ }
+
+ FILE* const file = posix::FOpen(filename_.c_str(), "r");
+ const std::string content = ReadEntireFile(file);
+ posix::FClose(file);
+ return content;
+ }
+
+ private:
+ // Reads the entire content of a file as an std::string.
+ static std::string ReadEntireFile(FILE* file);
+
+ // Returns the size (in bytes) of a file.
+ static size_t GetFileSize(FILE* file);
+
+ const int fd_; // A stream to capture.
+ int uncaptured_fd_;
+ // Name of the temporary file holding the stderr output.
+ ::std::string filename_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream);
+};
+
+// Returns the size (in bytes) of a file.
+size_t CapturedStream::GetFileSize(FILE* file) {
+ fseek(file, 0, SEEK_END);
+ return static_cast<size_t>(ftell(file));
+}
+
+// Reads the entire content of a file as a string.
+std::string CapturedStream::ReadEntireFile(FILE* file) {
+ const size_t file_size = GetFileSize(file);
+ char* const buffer = new char[file_size];
+
+ size_t bytes_last_read = 0; // # of bytes read in the last fread()
+ size_t bytes_read = 0; // # of bytes read so far
+
+ fseek(file, 0, SEEK_SET);
+
+ // Keeps reading the file until we cannot read further or the
+ // pre-determined file size is reached.
+ do {
+ bytes_last_read = fread(buffer+bytes_read, 1, file_size-bytes_read, file);
+ bytes_read += bytes_last_read;
+ } while (bytes_last_read > 0 && bytes_read < file_size);
+
+ const std::string content(buffer, bytes_read);
+ delete[] buffer;
+
+ return content;
+}
+
+# ifdef _MSC_VER
+# pragma warning(pop)
+# endif // _MSC_VER
+
+static CapturedStream* g_captured_stderr = NULL;
+static CapturedStream* g_captured_stdout = NULL;
+
+// Starts capturing an output stream (stdout/stderr).
+void CaptureStream(int fd, const char* stream_name, CapturedStream** stream) {
+ if (*stream != NULL) {
+ GTEST_LOG_(FATAL) << "Only one " << stream_name
+ << " capturer can exist at a time.";
+ }
+ *stream = new CapturedStream(fd);
+}
+
+// Stops capturing the output stream and returns the captured string.
+std::string GetCapturedStream(CapturedStream** captured_stream) {
+ const std::string content = (*captured_stream)->GetCapturedString();
+
+ delete *captured_stream;
+ *captured_stream = NULL;
+
+ return content;
+}
+
+// Starts capturing stdout.
+void CaptureStdout() {
+ CaptureStream(kStdOutFileno, "stdout", &g_captured_stdout);
+}
+
+// Starts capturing stderr.
+void CaptureStderr() {
+ CaptureStream(kStdErrFileno, "stderr", &g_captured_stderr);
+}
+
+// Stops capturing stdout and returns the captured string.
+std::string GetCapturedStdout() {
+ return GetCapturedStream(&g_captured_stdout);
+}
+
+// Stops capturing stderr and returns the captured string.
+std::string GetCapturedStderr() {
+ return GetCapturedStream(&g_captured_stderr);
+}
+
+#endif // GTEST_HAS_STREAM_REDIRECTION
+
+#if GTEST_HAS_DEATH_TEST
+
+// A copy of all command line arguments. Set by InitGoogleTest().
+::std::vector<testing::internal::string> g_argvs;
+
+static const ::std::vector<testing::internal::string>* g_injected_test_argvs =
+ NULL; // Owned.
+
+void SetInjectableArgvs(const ::std::vector<testing::internal::string>* argvs) {
+ if (g_injected_test_argvs != argvs)
+ delete g_injected_test_argvs;
+ g_injected_test_argvs = argvs;
+}
+
+const ::std::vector<testing::internal::string>& GetInjectableArgvs() {
+ if (g_injected_test_argvs != NULL) {
+ return *g_injected_test_argvs;
+ }
+ return g_argvs;
+}
+#endif // GTEST_HAS_DEATH_TEST
+
+#if GTEST_OS_WINDOWS_MOBILE
+namespace posix {
+void Abort() {
+ DebugBreak();
+ TerminateProcess(GetCurrentProcess(), 1);
+}
+} // namespace posix
+#endif // GTEST_OS_WINDOWS_MOBILE
+
+// Returns the name of the environment variable corresponding to the
+// given flag. For example, FlagToEnvVar("foo") will return
+// "GTEST_FOO" in the open-source version.
+static std::string FlagToEnvVar(const char* flag) {
+ const std::string full_flag =
+ (Message() << GTEST_FLAG_PREFIX_ << flag).GetString();
+
+ Message env_var;
+ for (size_t i = 0; i != full_flag.length(); i++) {
+ env_var << ToUpper(full_flag.c_str()[i]);
+ }
+
+ return env_var.GetString();
+}
+
+// Parses 'str' for a 32-bit signed integer. If successful, writes
+// the result to *value and returns true; otherwise leaves *value
+// unchanged and returns false.
+bool ParseInt32(const Message& src_text, const char* str, Int32* value) {
+ // Parses the environment variable as a decimal integer.
+ char* end = NULL;
+ const long long_value = strtol(str, &end, 10); // NOLINT
+
+ // Has strtol() consumed all characters in the string?
+ if (*end != '\0') {
+ // No - an invalid character was encountered.
+ Message msg;
+ msg << "WARNING: " << src_text
+ << " is expected to be a 32-bit integer, but actually"
+ << " has value \"" << str << "\".\n";
+ printf("%s", msg.GetString().c_str());
+ fflush(stdout);
+ return false;
+ }
+
+ // Is the parsed value in the range of an Int32?
+ const Int32 result = static_cast<Int32>(long_value);
+ if (long_value == LONG_MAX || long_value == LONG_MIN ||
+ // The parsed value overflows as a long. (strtol() returns
+ // LONG_MAX or LONG_MIN when the input overflows.)
+ result != long_value
+ // The parsed value overflows as an Int32.
+ ) {
+ Message msg;
+ msg << "WARNING: " << src_text
+ << " is expected to be a 32-bit integer, but actually"
+ << " has value " << str << ", which overflows.\n";
+ printf("%s", msg.GetString().c_str());
+ fflush(stdout);
+ return false;
+ }
+
+ *value = result;
+ return true;
+}
+
+// Reads and returns the Boolean environment variable corresponding to
+// the given flag; if it's not set, returns default_value.
+//
+// The value is considered true iff it's not "0".
+bool BoolFromGTestEnv(const char* flag, bool default_value) {
+ const std::string env_var = FlagToEnvVar(flag);
+ const char* const string_value = posix::GetEnv(env_var.c_str());
+ return string_value == NULL ?
+ default_value : strcmp(string_value, "0") != 0;
+}
+
+// Reads and returns a 32-bit integer stored in the environment
+// variable corresponding to the given flag; if it isn't set or
+// doesn't represent a valid 32-bit integer, returns default_value.
+Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) {
+ const std::string env_var = FlagToEnvVar(flag);
+ const char* const string_value = posix::GetEnv(env_var.c_str());
+ if (string_value == NULL) {
+ // The environment variable is not set.
+ return default_value;
+ }
+
+ Int32 result = default_value;
+ if (!ParseInt32(Message() << "Environment variable " << env_var,
+ string_value, &result)) {
+ printf("The default value %s is used.\n",
+ (Message() << default_value).GetString().c_str());
+ fflush(stdout);
+ return default_value;
+ }
+
+ return result;
+}
+
+// Reads and returns the string environment variable corresponding to
+// the given flag; if it's not set, returns default_value.
+const char* StringFromGTestEnv(const char* flag, const char* default_value) {
+ const std::string env_var = FlagToEnvVar(flag);
+ const char* const value = posix::GetEnv(env_var.c_str());
+ return value == NULL ? default_value : value;
+}
+
+} // namespace internal
+} // namespace testing
diff --git a/test/fmw/gtest/src/gtest-printers.cc b/test/fmw/gtest/src/gtest-printers.cc
new file mode 100644
index 0000000..75fa408
--- /dev/null
+++ b/test/fmw/gtest/src/gtest-printers.cc
@@ -0,0 +1,363 @@
+// Copyright 2007, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+// Google Test - The Google C++ Testing Framework
+//
+// This file implements a universal value printer that can print a
+// value of any type T:
+//
+// void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
+//
+// It uses the << operator when possible, and prints the bytes in the
+// object otherwise. A user can override its behavior for a class
+// type Foo by defining either operator<<(::std::ostream&, const Foo&)
+// or void PrintTo(const Foo&, ::std::ostream*) in the namespace that
+// defines Foo.
+
+#include "gtest/gtest-printers.h"
+#include <ctype.h>
+#include <stdio.h>
+#include <ostream> // NOLINT
+#include <string>
+#include "gtest/internal/gtest-port.h"
+
+namespace testing {
+
+namespace {
+
+using ::std::ostream;
+
+// Prints a segment of bytes in the given object.
+void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start,
+ size_t count, ostream* os) {
+ char text[5] = "";
+ for (size_t i = 0; i != count; i++) {
+ const size_t j = start + i;
+ if (i != 0) {
+ // Organizes the bytes into groups of 2 for easy parsing by
+ // human.
+ if ((j % 2) == 0)
+ *os << ' ';
+ else
+ *os << '-';
+ }
+ GTEST_SNPRINTF_(text, sizeof(text), "%02X", obj_bytes[j]);
+ *os << text;
+ }
+}
+
+// Prints the bytes in the given value to the given ostream.
+void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count,
+ ostream* os) {
+ // Tells the user how big the object is.
+ *os << count << "-byte object <";
+
+ const size_t kThreshold = 132;
+ const size_t kChunkSize = 64;
+ // If the object size is bigger than kThreshold, we'll have to omit
+ // some details by printing only the first and the last kChunkSize
+ // bytes.
+ // TODO(wan): let the user control the threshold using a flag.
+ if (count < kThreshold) {
+ PrintByteSegmentInObjectTo(obj_bytes, 0, count, os);
+ } else {
+ PrintByteSegmentInObjectTo(obj_bytes, 0, kChunkSize, os);
+ *os << " ... ";
+ // Rounds up to 2-byte boundary.
+ const size_t resume_pos = (count - kChunkSize + 1)/2*2;
+ PrintByteSegmentInObjectTo(obj_bytes, resume_pos, count - resume_pos, os);
+ }
+ *os << ">";
+}
+
+} // namespace
+
+namespace internal2 {
+
+// Delegates to PrintBytesInObjectToImpl() to print the bytes in the
+// given object. The delegation simplifies the implementation, which
+// uses the << operator and thus is easier done outside of the
+// ::testing::internal namespace, which contains a << operator that
+// sometimes conflicts with the one in STL.
+void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count,
+ ostream* os) {
+ PrintBytesInObjectToImpl(obj_bytes, count, os);
+}
+
+} // namespace internal2
+
+namespace internal {
+
+// Depending on the value of a char (or wchar_t), we print it in one
+// of three formats:
+// - as is if it's a printable ASCII (e.g. 'a', '2', ' '),
+// - as a hexidecimal escape sequence (e.g. '\x7F'), or
+// - as a special escape sequence (e.g. '\r', '\n').
+enum CharFormat {
+ kAsIs,
+ kHexEscape,
+ kSpecialEscape
+};
+
+// Returns true if c is a printable ASCII character. We test the
+// value of c directly instead of calling isprint(), which is buggy on
+// Windows Mobile.
+inline bool IsPrintableAscii(wchar_t c) {
+ return 0x20 <= c && c <= 0x7E;
+}
+
+// Prints a wide or narrow char c as a character literal without the
+// quotes, escaping it when necessary; returns how c was formatted.
+// The template argument UnsignedChar is the unsigned version of Char,
+// which is the type of c.
+template <typename UnsignedChar, typename Char>
+static CharFormat PrintAsCharLiteralTo(Char c, ostream* os) {
+ switch (static_cast<wchar_t>(c)) {
+ case L'\0':
+ *os << "\\0";
+ break;
+ case L'\'':
+ *os << "\\'";
+ break;
+ case L'\\':
+ *os << "\\\\";
+ break;
+ case L'\a':
+ *os << "\\a";
+ break;
+ case L'\b':
+ *os << "\\b";
+ break;
+ case L'\f':
+ *os << "\\f";
+ break;
+ case L'\n':
+ *os << "\\n";
+ break;
+ case L'\r':
+ *os << "\\r";
+ break;
+ case L'\t':
+ *os << "\\t";
+ break;
+ case L'\v':
+ *os << "\\v";
+ break;
+ default:
+ if (IsPrintableAscii(c)) {
+ *os << static_cast<char>(c);
+ return kAsIs;
+ } else {
+ *os << "\\x" + String::FormatHexInt(static_cast<UnsignedChar>(c));
+ return kHexEscape;
+ }
+ }
+ return kSpecialEscape;
+}
+
+// Prints a wchar_t c as if it's part of a string literal, escaping it when
+// necessary; returns how c was formatted.
+static CharFormat PrintAsStringLiteralTo(wchar_t c, ostream* os) {
+ switch (c) {
+ case L'\'':
+ *os << "'";
+ return kAsIs;
+ case L'"':
+ *os << "\\\"";
+ return kSpecialEscape;
+ default:
+ return PrintAsCharLiteralTo<wchar_t>(c, os);
+ }
+}
+
+// Prints a char c as if it's part of a string literal, escaping it when
+// necessary; returns how c was formatted.
+static CharFormat PrintAsStringLiteralTo(char c, ostream* os) {
+ return PrintAsStringLiteralTo(
+ static_cast<wchar_t>(static_cast<unsigned char>(c)), os);
+}
+
+// Prints a wide or narrow character c and its code. '\0' is printed
+// as "'\\0'", other unprintable characters are also properly escaped
+// using the standard C++ escape sequence. The template argument
+// UnsignedChar is the unsigned version of Char, which is the type of c.
+template <typename UnsignedChar, typename Char>
+void PrintCharAndCodeTo(Char c, ostream* os) {
+ // First, print c as a literal in the most readable form we can find.
+ *os << ((sizeof(c) > 1) ? "L'" : "'");
+ const CharFormat format = PrintAsCharLiteralTo<UnsignedChar>(c, os);
+ *os << "'";
+
+ // To aid user debugging, we also print c's code in decimal, unless
+ // it's 0 (in which case c was printed as '\\0', making the code
+ // obvious).
+ if (c == 0)
+ return;
+ *os << " (" << static_cast<int>(c);
+
+ // For more convenience, we print c's code again in hexidecimal,
+ // unless c was already printed in the form '\x##' or the code is in
+ // [1, 9].
+ if (format == kHexEscape || (1 <= c && c <= 9)) {
+ // Do nothing.
+ } else {
+ *os << ", 0x" << String::FormatHexInt(static_cast<UnsignedChar>(c));
+ }
+ *os << ")";
+}
+
+void PrintTo(unsigned char c, ::std::ostream* os) {
+ PrintCharAndCodeTo<unsigned char>(c, os);
+}
+void PrintTo(signed char c, ::std::ostream* os) {
+ PrintCharAndCodeTo<unsigned char>(c, os);
+}
+
+// Prints a wchar_t as a symbol if it is printable or as its internal
+// code otherwise and also as its code. L'\0' is printed as "L'\\0'".
+void PrintTo(wchar_t wc, ostream* os) {
+ PrintCharAndCodeTo<wchar_t>(wc, os);
+}
+
+// Prints the given array of characters to the ostream. CharType must be either
+// char or wchar_t.
+// The array starts at begin, the length is len, it may include '\0' characters
+// and may not be NUL-terminated.
+template <typename CharType>
+static void PrintCharsAsStringTo(
+ const CharType* begin, size_t len, ostream* os) {
+ const char* const kQuoteBegin = sizeof(CharType) == 1 ? "\"" : "L\"";
+ *os << kQuoteBegin;
+ bool is_previous_hex = false;
+ for (size_t index = 0; index < len; ++index) {
+ const CharType cur = begin[index];
+ if (is_previous_hex && IsXDigit(cur)) {
+ // Previous character is of '\x..' form and this character can be
+ // interpreted as another hexadecimal digit in its number. Break string to
+ // disambiguate.
+ *os << "\" " << kQuoteBegin;
+ }
+ is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape;
+ }
+ *os << "\"";
+}
+
+// Prints a (const) char/wchar_t array of 'len' elements, starting at address
+// 'begin'. CharType must be either char or wchar_t.
+template <typename CharType>
+static void UniversalPrintCharArray(
+ const CharType* begin, size_t len, ostream* os) {
+ // The code
+ // const char kFoo[] = "foo";
+ // generates an array of 4, not 3, elements, with the last one being '\0'.
+ //
+ // Therefore when printing a char array, we don't print the last element if
+ // it's '\0', such that the output matches the string literal as it's
+ // written in the source code.
+ if (len > 0 && begin[len - 1] == '\0') {
+ PrintCharsAsStringTo(begin, len - 1, os);
+ return;
+ }
+
+ // If, however, the last element in the array is not '\0', e.g.
+ // const char kFoo[] = { 'f', 'o', 'o' };
+ // we must print the entire array. We also print a message to indicate
+ // that the array is not NUL-terminated.
+ PrintCharsAsStringTo(begin, len, os);
+ *os << " (no terminating NUL)";
+}
+
+// Prints a (const) char array of 'len' elements, starting at address 'begin'.
+void UniversalPrintArray(const char* begin, size_t len, ostream* os) {
+ UniversalPrintCharArray(begin, len, os);
+}
+
+// Prints a (const) wchar_t array of 'len' elements, starting at address
+// 'begin'.
+void UniversalPrintArray(const wchar_t* begin, size_t len, ostream* os) {
+ UniversalPrintCharArray(begin, len, os);
+}
+
+// Prints the given C string to the ostream.
+void PrintTo(const char* s, ostream* os) {
+ if (s == NULL) {
+ *os << "NULL";
+ } else {
+ *os << ImplicitCast_<const void*>(s) << " pointing to ";
+ PrintCharsAsStringTo(s, strlen(s), os);
+ }
+}
+
+// MSVC compiler can be configured to define whar_t as a typedef
+// of unsigned short. Defining an overload for const wchar_t* in that case
+// would cause pointers to unsigned shorts be printed as wide strings,
+// possibly accessing more memory than intended and causing invalid
+// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when
+// wchar_t is implemented as a native type.
+#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
+// Prints the given wide C string to the ostream.
+void PrintTo(const wchar_t* s, ostream* os) {
+ if (s == NULL) {
+ *os << "NULL";
+ } else {
+ *os << ImplicitCast_<const void*>(s) << " pointing to ";
+ PrintCharsAsStringTo(s, wcslen(s), os);
+ }
+}
+#endif // wchar_t is native
+
+// Prints a ::string object.
+#if GTEST_HAS_GLOBAL_STRING
+void PrintStringTo(const ::string& s, ostream* os) {
+ PrintCharsAsStringTo(s.data(), s.size(), os);
+}
+#endif // GTEST_HAS_GLOBAL_STRING
+
+void PrintStringTo(const ::std::string& s, ostream* os) {
+ PrintCharsAsStringTo(s.data(), s.size(), os);
+}
+
+// Prints a ::wstring object.
+#if GTEST_HAS_GLOBAL_WSTRING
+void PrintWideStringTo(const ::wstring& s, ostream* os) {
+ PrintCharsAsStringTo(s.data(), s.size(), os);
+}
+#endif // GTEST_HAS_GLOBAL_WSTRING
+
+#if GTEST_HAS_STD_WSTRING
+void PrintWideStringTo(const ::std::wstring& s, ostream* os) {
+ PrintCharsAsStringTo(s.data(), s.size(), os);
+}
+#endif // GTEST_HAS_STD_WSTRING
+
+} // namespace internal
+
+} // namespace testing
diff --git a/test/fmw/gtest/src/gtest-test-part.cc b/test/fmw/gtest/src/gtest-test-part.cc
new file mode 100644
index 0000000..c60eef3
--- /dev/null
+++ b/test/fmw/gtest/src/gtest-test-part.cc
@@ -0,0 +1,110 @@
+// Copyright 2008, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: mheule@google.com (Markus Heule)
+//
+// The Google C++ Testing Framework (Google Test)
+
+#include "gtest/gtest-test-part.h"
+
+// Indicates that this translation unit is part of Google Test's
+// implementation. It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error. This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+namespace testing {
+
+using internal::GetUnitTestImpl;
+
+// Gets the summary of the failure message by omitting the stack trace
+// in it.
+std::string TestPartResult::ExtractSummary(const char* message) {
+ const char* const stack_trace = strstr(message, internal::kStackTraceMarker);
+ return stack_trace == NULL ? message :
+ std::string(message, stack_trace);
+}
+
+// Prints a TestPartResult object.
+std::ostream& operator<<(std::ostream& os, const TestPartResult& result) {
+ return os
+ << result.file_name() << ":" << result.line_number() << ": "
+ << (result.type() == TestPartResult::kSuccess ? "Success" :
+ result.type() == TestPartResult::kFatalFailure ? "Fatal failure" :
+ "Non-fatal failure") << ":\n"
+ << result.message() << std::endl;
+}
+
+// Appends a TestPartResult to the array.
+void TestPartResultArray::Append(const TestPartResult& result) {
+ array_.push_back(result);
+}
+
+// Returns the TestPartResult at the given index (0-based).
+const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const {
+ if (index < 0 || index >= size()) {
+ printf("\nInvalid index (%d) into TestPartResultArray.\n", index);
+ internal::posix::Abort();
+ }
+
+ return array_[index];
+}
+
+// Returns the number of TestPartResult objects in the array.
+int TestPartResultArray::size() const {
+ return static_cast<int>(array_.size());
+}
+
+namespace internal {
+
+HasNewFatalFailureHelper::HasNewFatalFailureHelper()
+ : has_new_fatal_failure_(false),
+ original_reporter_(GetUnitTestImpl()->
+ GetTestPartResultReporterForCurrentThread()) {
+ GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(this);
+}
+
+HasNewFatalFailureHelper::~HasNewFatalFailureHelper() {
+ GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(
+ original_reporter_);
+}
+
+void HasNewFatalFailureHelper::ReportTestPartResult(
+ const TestPartResult& result) {
+ if (result.fatally_failed())
+ has_new_fatal_failure_ = true;
+ original_reporter_->ReportTestPartResult(result);
+}
+
+} // namespace internal
+
+} // namespace testing
diff --git a/test/fmw/gtest/src/gtest-typed-test.cc b/test/fmw/gtest/src/gtest-typed-test.cc
new file mode 100644
index 0000000..f0079f4
--- /dev/null
+++ b/test/fmw/gtest/src/gtest-typed-test.cc
@@ -0,0 +1,110 @@
+// Copyright 2008 Google Inc.
+// All Rights Reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+
+#include "gtest/gtest-typed-test.h"
+#include "gtest/gtest.h"
+
+namespace testing {
+namespace internal {
+
+#if GTEST_HAS_TYPED_TEST_P
+
+// Skips to the first non-space char in str. Returns an empty string if str
+// contains only whitespace characters.
+static const char* SkipSpaces(const char* str) {
+ while (IsSpace(*str))
+ str++;
+ return str;
+}
+
+// Verifies that registered_tests match the test names in
+// defined_test_names_; returns registered_tests if successful, or
+// aborts the program otherwise.
+const char* TypedTestCasePState::VerifyRegisteredTestNames(
+ const char* file, int line, const char* registered_tests) {
+ typedef ::std::set<const char*>::const_iterator DefinedTestIter;
+ registered_ = true;
+
+ // Skip initial whitespace in registered_tests since some
+ // preprocessors prefix stringizied literals with whitespace.
+ registered_tests = SkipSpaces(registered_tests);
+
+ Message errors;
+ ::std::set<std::string> tests;
+ for (const char* names = registered_tests; names != NULL;
+ names = SkipComma(names)) {
+ const std::string name = GetPrefixUntilComma(names);
+ if (tests.count(name) != 0) {
+ errors << "Test " << name << " is listed more than once.\n";
+ continue;
+ }
+
+ bool found = false;
+ for (DefinedTestIter it = defined_test_names_.begin();
+ it != defined_test_names_.end();
+ ++it) {
+ if (name == *it) {
+ found = true;
+ break;
+ }
+ }
+
+ if (found) {
+ tests.insert(name);
+ } else {
+ errors << "No test named " << name
+ << " can be found in this test case.\n";
+ }
+ }
+
+ for (DefinedTestIter it = defined_test_names_.begin();
+ it != defined_test_names_.end();
+ ++it) {
+ if (tests.count(*it) == 0) {
+ errors << "You forgot to list test " << *it << ".\n";
+ }
+ }
+
+ const std::string& errors_str = errors.GetString();
+ if (errors_str != "") {
+ fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(),
+ errors_str.c_str());
+ fflush(stderr);
+ posix::Abort();
+ }
+
+ return registered_tests;
+}
+
+#endif // GTEST_HAS_TYPED_TEST_P
+
+} // namespace internal
+} // namespace testing
diff --git a/test/fmw/gtest/src/gtest.cc b/test/fmw/gtest/src/gtest.cc
new file mode 100644
index 0000000..6de53dd
--- /dev/null
+++ b/test/fmw/gtest/src/gtest.cc
@@ -0,0 +1,5015 @@
+// Copyright 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// Author: wan@google.com (Zhanyong Wan)
+//
+// The Google C++ Testing Framework (Google Test)
+
+#include "gtest/gtest.h"
+#include "gtest/gtest-spi.h"
+
+#include <ctype.h>
+#include <math.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <wchar.h>
+#include <wctype.h>
+
+#include <algorithm>
+#include <iomanip>
+#include <limits>
+#include <ostream> // NOLINT
+#include <sstream>
+#include <vector>
+
+#if GTEST_OS_LINUX
+
+// TODO(kenton@google.com): Use autoconf to detect availability of
+// gettimeofday().
+# define GTEST_HAS_GETTIMEOFDAY_ 1
+
+# include <fcntl.h> // NOLINT
+# include <limits.h> // NOLINT
+# include <sched.h> // NOLINT
+// Declares vsnprintf(). This header is not available on Windows.
+# include <strings.h> // NOLINT
+# include <sys/mman.h> // NOLINT
+# include <sys/time.h> // NOLINT
+# include <unistd.h> // NOLINT
+# include <string>
+
+#elif GTEST_OS_SYMBIAN
+# define GTEST_HAS_GETTIMEOFDAY_ 1
+# include <sys/time.h> // NOLINT
+
+#elif GTEST_OS_ZOS
+# define GTEST_HAS_GETTIMEOFDAY_ 1
+# include <sys/time.h> // NOLINT
+
+// On z/OS we additionally need strings.h for strcasecmp.
+# include <strings.h> // NOLINT
+
+#elif GTEST_OS_WINDOWS_MOBILE // We are on Windows CE.
+
+# include <windows.h> // NOLINT
+
+#elif GTEST_OS_WINDOWS // We are on Windows proper.
+
+# include <io.h> // NOLINT
+# include <sys/timeb.h> // NOLINT
+# include <sys/types.h> // NOLINT
+# include <sys/stat.h> // NOLINT
+
+# if GTEST_OS_WINDOWS_MINGW
+// MinGW has gettimeofday() but not _ftime64().
+// TODO(kenton@google.com): Use autoconf to detect availability of
+// gettimeofday().
+// TODO(kenton@google.com): There are other ways to get the time on
+// Windows, like GetTickCount() or GetSystemTimeAsFileTime(). MinGW
+// supports these. consider using them instead.
+# define GTEST_HAS_GETTIMEOFDAY_ 1
+# include <sys/time.h> // NOLINT
+# endif // GTEST_OS_WINDOWS_MINGW
+
+// cpplint thinks that the header is already included, so we want to
+// silence it.
+# include <windows.h> // NOLINT
+
+#else
+
+// Assume other platforms have gettimeofday().
+// TODO(kenton@google.com): Use autoconf to detect availability of
+// gettimeofday().
+# define GTEST_HAS_GETTIMEOFDAY_ 1
+
+// cpplint thinks that the header is already included, so we want to
+// silence it.
+# include <sys/time.h> // NOLINT
+# include <unistd.h> // NOLINT
+
+#endif // GTEST_OS_LINUX
+
+#if GTEST_HAS_EXCEPTIONS
+# include <stdexcept>
+#endif
+
+#if GTEST_CAN_STREAM_RESULTS_
+# include <arpa/inet.h> // NOLINT
+# include <netdb.h> // NOLINT
+#endif
+
+// Indicates that this translation unit is part of Google Test's
+// implementation. It must come before gtest-internal-inl.h is
+// included, or there will be a compiler error. This trick is to
+// prevent a user from accidentally including gtest-internal-inl.h in
+// his code.
+#define GTEST_IMPLEMENTATION_ 1
+#include "src/gtest-internal-inl.h"
+#undef GTEST_IMPLEMENTATION_
+
+#if GTEST_OS_WINDOWS
+# define vsnprintf _vsnprintf
+#endif // GTEST_OS_WINDOWS
+
+namespace testing {
+
+using internal::CountIf;
+using internal::ForEach;
+using internal::GetElementOr;
+using internal::Shuffle;
+
+// Constants.
+
+// A test whose test case name or test name matches this filter is
+// disabled and not run.
+static const char kDisableTestFilter[] = "DISABLED_*:*/DISABLED_*";
+
+// A test case whose name matches this filter is considered a death
+// test case and will be run before test cases whose name doesn't
+// match this filter.
+static const char kDeathTestCaseFilter[] = "*DeathTest:*DeathTest/*";
+
+// A test filter that matches everything.
+static const char kUniversalFilter[] = "*";
+
+// The default output file for XML output.
+static const char kDefaultOutputFile[] = "test_detail.xml";
+
+// The environment variable name for the test shard index.
+static const char kTestShardIndex[] = "GTEST_SHARD_INDEX";
+// The environment variable name for the total number of test shards.
+static const char kTestTotalShards[] = "GTEST_TOTAL_SHARDS";
+// The environment variable name for the test shard status file.
+static const char kTestShardStatusFile[] = "GTEST_SHARD_STATUS_FILE";
+
+namespace internal {
+
+// The text used in failure messages to indicate the start of the
+// stack trace.
+const char kStackTraceMarker[] = "\nStack trace:\n";
+
+// g_help_flag is true iff the --help flag or an equivalent form is
+// specified on the command line.
+bool g_help_flag = false;
+
+} // namespace internal
+
+static const char* GetDefaultFilter() {
+ return kUniversalFilter;
+}
+
+GTEST_DEFINE_bool_(
+ also_run_disabled_tests,
+ internal::BoolFromGTestEnv("also_run_disabled_tests", false),
+ "Run disabled tests too, in addition to the tests normally being run.");
+
+GTEST_DEFINE_bool_(
+ break_on_failure,
+ internal::BoolFromGTestEnv("break_on_failure", false),
+ "True iff a failed assertion should be a debugger break-point.");
+
+GTEST_DEFINE_bool_(
+ catch_exceptions,
+ internal::BoolFromGTestEnv("catch_exceptions", true),
+ "True iff " GTEST_NAME_
+ " should catch exceptions and treat them as test failures.");
+
+GTEST_DEFINE_string_(
+ color,
+ internal::StringFromGTestEnv("color", "auto"),
+ "Whether to use colors in the output. Valid values: yes, no, "
+ "and auto. 'auto' means to use colors if the output is "
+ "being sent to a terminal and the TERM environment variable "
+ "is set to a terminal type that supports colors.");
+
+GTEST_DEFINE_string_(
+ filter,
+ internal::StringFromGTestEnv("filter", GetDefaultFilter()),
+ "A colon-separated list of glob (not regex) patterns "
+ "for filtering the tests to run, optionally followed by a "
+ "'-' and a : separated list of negative patterns (tests to "
+ "exclude). A test is run if it matches one of the positive "
+ "patterns and does not match any of the negative patterns.");
+
+GTEST_DEFINE_bool_(list_tests, false,
+ "List all tests without running them.");
+
+GTEST_DEFINE_string_(
+ output,
+ internal::StringFromGTestEnv("output", ""),
+ "A format (currently must be \"xml\"), optionally followed "
+ "by a colon and an output file name or directory. A directory "
+ "is indicated by a trailing pathname separator. "
+ "Examples: \"xml:filename.xml\", \"xml::directoryname/\". "
+ "If a directory is specified, output files will be created "
+ "within that directory, with file-names based on the test "
+ "executable's name and, if necessary, made unique by adding "
+ "digits.");
+
+GTEST_DEFINE_bool_(
+ print_time,
+ internal::BoolFromGTestEnv("print_time", true),
+ "True iff " GTEST_NAME_
+ " should display elapsed time in text output.");
+
+GTEST_DEFINE_int32_(
+ random_seed,
+ internal::Int32FromGTestEnv("random_seed", 0),
+ "Random number seed to use when shuffling test orders. Must be in range "
+ "[1, 99999], or 0 to use a seed based on the current time.");
+
+GTEST_DEFINE_int32_(
+ repeat,
+ internal::Int32FromGTestEnv("repeat", 1),
+ "How many times to repeat each test. Specify a negative number "
+ "for repeating forever. Useful for shaking out flaky tests.");
+
+GTEST_DEFINE_bool_(
+ show_internal_stack_frames, false,
+ "True iff " GTEST_NAME_ " should include internal stack frames when "
+ "printing test failure stack traces.");
+
+GTEST_DEFINE_bool_(
+ shuffle,
+ internal::BoolFromGTestEnv("shuffle", false),
+ "True iff " GTEST_NAME_
+ " should randomize tests' order on every run.");
+
+GTEST_DEFINE_int32_(
+ stack_trace_depth,
+ internal::Int32FromGTestEnv("stack_trace_depth", kMaxStackTraceDepth),
+ "The maximum number of stack frames to print when an "
+ "assertion fails. The valid range is 0 through 100, inclusive.");
+
+GTEST_DEFINE_string_(
+ stream_result_to,
+ internal::StringFromGTestEnv("stream_result_to", ""),
+ "This flag specifies the host name and the port number on which to stream "
+ "test results. Example: \"localhost:555\". The flag is effective only on "
+ "Linux.");
+
+GTEST_DEFINE_bool_(
+ throw_on_failure,
+ internal::BoolFromGTestEnv("throw_on_failure", false),
+ "When this flag is specified, a failed assertion will throw an exception "
+ "if exceptions are enabled or exit the program with a non-zero code "
+ "otherwise.");
+
+namespace internal {
+
+// Generates a random number from [0, range), using a Linear
+// Congruential Generator (LCG). Crashes if 'range' is 0 or greater
+// than kMaxRange.
+UInt32 Random::Generate(UInt32 range) {
+ // These constants are the same as are used in glibc's rand(3).
+ state_ = (1103515245U*state_ + 12345U) % kMaxRange;
+
+ GTEST_CHECK_(range > 0)
+ << "Cannot generate a number in the range [0, 0).";
+ GTEST_CHECK_(range <= kMaxRange)
+ << "Generation of a number in [0, " << range << ") was requested, "
+ << "but this can only generate numbers in [0, " << kMaxRange << ").";
+
+ // Converting via modulus introduces a bit of downward bias, but
+ // it's simple, and a linear congruential generator isn't too good
+ // to begin with.
+ return state_ % range;
+}
+
+// GTestIsInitialized() returns true iff the user has initialized
+// Google Test. Useful for catching the user mistake of not initializing
+// Google Test before calling RUN_ALL_TESTS().
+//
+// A user must call testing::InitGoogleTest() to initialize Google
+// Test. g_init_gtest_count is set to the number of times
+// InitGoogleTest() has been called. We don't protect this variable
+// under a mutex as it is only accessed in the main thread.
+GTEST_API_ int g_init_gtest_count = 0;
+static bool GTestIsInitialized() { return g_init_gtest_count != 0; }
+
+// Iterates over a vector of TestCases, keeping a running sum of the
+// results of calling a given int-returning method on each.
+// Returns the sum.
+static int SumOverTestCaseList(const std::vector<TestCase*>& case_list,
+ int (TestCase::*method)() const) {
+ int sum = 0;
+ for (size_t i = 0; i < case_list.size(); i++) {
+ sum += (case_list[i]->*method)();
+ }
+ return sum;
+}
+
+// Returns true iff the test case passed.
+static bool TestCasePassed(const TestCase* test_case) {
+ return test_case->should_run() && test_case->Passed();
+}
+
+// Returns true iff the test case failed.
+static bool TestCaseFailed(const TestCase* test_case) {
+ return test_case->should_run() && test_case->Failed();
+}
+
+// Returns true iff test_case contains at least one test that should
+// run.
+static bool ShouldRunTestCase(const TestCase* test_case) {
+ return test_case->should_run();
+}
+
+// AssertHelper constructor.
+AssertHelper::AssertHelper(TestPartResult::Type type,
+ const char* file,
+ int line,
+ const char* message)
+ : data_(new AssertHelperData(type, file, line, message)) {
+}
+
+AssertHelper::~AssertHelper() {
+ delete data_;
+}
+
+// Message assignment, for assertion streaming support.
+void AssertHelper::operator=(const Message& message) const {
+ UnitTest::GetInstance()->
+ AddTestPartResult(data_->type, data_->file, data_->line,
+ AppendUserMessage(data_->message, message),
+ UnitTest::GetInstance()->impl()
+ ->CurrentOsStackTraceExceptTop(1)
+ // Skips the stack frame for this function itself.
+ ); // NOLINT
+}
+
+// Mutex for linked pointers.
+GTEST_API_ GTEST_DEFINE_STATIC_MUTEX_(g_linked_ptr_mutex);
+
+// Application pathname gotten in InitGoogleTest.
+std::string g_executable_path;
+
+// Returns the current application's name, removing directory path if that
+// is present.
+FilePath GetCurrentExecutableName() {
+ FilePath result;
+
+#if GTEST_OS_WINDOWS
+ result.Set(FilePath(g_executable_path).RemoveExtension("exe"));
+#else
+ result.Set(FilePath(g_executable_path));
+#endif // GTEST_OS_WINDOWS
+
+ return result.RemoveDirectoryName();
+}
+
+// Functions for processing the gtest_output flag.
+
+// Returns the output format, or "" for normal printed output.
+std::string UnitTestOptions::GetOutputFormat() {
+ const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
+ if (gtest_output_flag == NULL) return std::string("");
+
+ const char* const colon = strchr(gtest_output_flag, ':');
+ return (colon == NULL) ?
+ std::string(gtest_output_flag) :
+ std::string(gtest_output_flag, colon - gtest_output_flag);
+}
+
+// Returns the name of the requested output file, or the default if none
+// was explicitly specified.
+std::string UnitTestOptions::GetAbsolutePathToOutputFile() {
+ const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
+ if (gtest_output_flag == NULL)
+ return "";
+
+ const char* const colon = strchr(gtest_output_flag, ':');
+ if (colon == NULL)
+ return internal::FilePath::ConcatPaths(
+ internal::FilePath(
+ UnitTest::GetInstance()->original_working_dir()),
+ internal::FilePath(kDefaultOutputFile)).string();
+
+ internal::FilePath output_name(colon + 1);
+ if (!output_name.IsAbsolutePath())
+ // TODO(wan@google.com): on Windows \some\path is not an absolute
+ // path (as its meaning depends on the current drive), yet the
+ // following logic for turning it into an absolute path is wrong.
+ // Fix it.
+ output_name = internal::FilePath::ConcatPaths(
+ internal::FilePath(UnitTest::GetInstance()->original_working_dir()),
+ internal::FilePath(colon + 1));
+
+ if (!output_name.IsDirectory())
+ return output_name.string();
+
+ internal::FilePath result(internal::FilePath::GenerateUniqueFileName(
+ output_name, internal::GetCurrentExecutableName(),
+ GetOutputFormat().c_str()));
+ return result.string();
+}
+
+// Returns true iff the wildcard pattern matches the string. The
+// first ':' or '\0' character in pattern marks the end of it.
+//
+// This recursive algorithm isn't very efficient, but is clear and
+// works well enough for matching test names, which are short.
+bool UnitTestOptions::PatternMatchesString(const char *pattern,
+ const char *str) {
+ switch (*pattern) {
+ case '\0':
+ case ':': // Either ':' or '\0' marks the end of the pattern.
+ return *str == '\0';
+ case '?': // Matches any single character.
+ return *str != '\0' && PatternMatchesString(pattern + 1, str + 1);
+ case '*': // Matches any string (possibly empty) of characters.
+ return (*str != '\0' && PatternMatchesString(pattern, str + 1)) ||
+ PatternMatchesString(pattern + 1, str);
+ default: // Non-special character. Matches itself.
+ return *pattern == *str &&
+ PatternMatchesString(pattern + 1, str + 1);
+ }
+}
+
+bool UnitTestOptions::MatchesFilter(
+ const std::string& name, const char* filter) {
+ const char *cur_pattern = filter;
+ for (;;) {
+ if (PatternMatchesString(cur_pattern, name.c_str())) {
+ return true;
+ }
+
+ // Finds the next pattern in the filter.
+ cur_pattern = strchr(cur_pattern, ':');
+
+ // Returns if no more pattern can be found.
+ if (cur_pattern == NULL) {
+ return false;
+ }
+
+ // Skips the pattern separater (the ':' character).
+ cur_pattern++;
+ }
+}
+
+// Returns true iff the user-specified filter matches the test case
+// name and the test name.
+bool UnitTestOptions::FilterMatchesTest(const std::string &test_case_name,
+ const std::string &test_name) {
+ const std::string& full_name = test_case_name + "." + test_name.c_str();
+
+ // Split --gtest_filter at '-', if there is one, to separate into
+ // positive filter and negative filter portions
+ const char* const p = GTEST_FLAG(filter).c_str();
+ const char* const dash = strchr(p, '-');
+ std::string positive;
+ std::string negative;
+ if (dash == NULL) {
+ positive = GTEST_FLAG(filter).c_str(); // Whole string is a positive filter
+ negative = "";
+ } else {
+ positive = std::string(p, dash); // Everything up to the dash
+ negative = std::string(dash + 1); // Everything after the dash
+ if (positive.empty()) {
+ // Treat '-test1' as the same as '*-test1'
+ positive = kUniversalFilter;
+ }
+ }
+
+ // A filter is a colon-separated list of patterns. It matches a
+ // test if any pattern in it matches the test.
+ return (MatchesFilter(full_name, positive.c_str()) &&
+ !MatchesFilter(full_name, negative.c_str()));
+}
+
+#if GTEST_HAS_SEH
+// Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
+// given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
+// This function is useful as an __except condition.
+int UnitTestOptions::GTestShouldProcessSEH(DWORD exception_code) {
+ // Google Test should handle a SEH exception if:
+ // 1. the user wants it to, AND
+ // 2. this is not a breakpoint exception, AND
+ // 3. this is not a C++ exception (VC++ implements them via SEH,
+ // apparently).
+ //
+ // SEH exception code for C++ exceptions.
+ // (see http://support.microsoft.com/kb/185294 for more information).
+ const DWORD kCxxExceptionCode = 0xe06d7363;
+
+ bool should_handle = true;
+
+ if (!GTEST_FLAG(catch_exceptions))
+ should_handle = false;
+ else if (exception_code == EXCEPTION_BREAKPOINT)
+ should_handle = false;
+ else if (exception_code == kCxxExceptionCode)
+ should_handle = false;
+
+ return should_handle ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH;
+}
+#endif // GTEST_HAS_SEH
+
+} // namespace internal
+
+// The c'tor sets this object as the test part result reporter used by
+// Google Test. The 'result' parameter specifies where to report the
+// results. Intercepts only failures from the current thread.
+ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
+ TestPartResultArray* result)
+ : intercept_mode_(INTERCEPT_ONLY_CURRENT_THREAD),
+ result_(result) {
+ Init();
+}
+
+// The c'tor sets this object as the test part result reporter used by
+// Google Test. The 'result' parameter specifies where to report the
+// results.
+ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
+ InterceptMode intercept_mode, TestPartResultArray* result)
+ : intercept_mode_(intercept_mode),
+ result_(result) {
+ Init();
+}
+
+void ScopedFakeTestPartResultReporter::Init() {
+ internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+ if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
+ old_reporter_ = impl->GetGlobalTestPartResultReporter();
+ impl->SetGlobalTestPartResultReporter(this);
+ } else {
+ old_reporter_ = impl->GetTestPartResultReporterForCurrentThread();
+ impl->SetTestPartResultReporterForCurrentThread(this);
+ }
+}
+
+// The d'tor restores the test part result reporter used by Google Test
+// before.
+ScopedFakeTestPartResultReporter::~ScopedFakeTestPartResultReporter() {
+ internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+ if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
+ impl->SetGlobalTestPartResultReporter(old_reporter_);
+ } else {
+ impl->SetTestPartResultReporterForCurrentThread(old_reporter_);
+ }
+}
+
+// Increments the test part result count and remembers the result.
+// This method is from the TestPartResultReporterInterface interface.
+void ScopedFakeTestPartResultReporter::ReportTestPartResult(
+ const TestPartResult& result) {
+ result_->Append(result);
+}
+
+namespace internal {
+
+// Returns the type ID of ::testing::Test. We should always call this
+// instead of GetTypeId< ::testing::Test>() to get the type ID of
+// testing::Test. This is to work around a suspected linker bug when
+// using Google Test as a framework on Mac OS X. The bug causes
+// GetTypeId< ::testing::Test>() to return different values depending
+// on whether the call is from the Google Test framework itself or
+// from user test code. GetTestTypeId() is guaranteed to always
+// return the same value, as it always calls GetTypeId<>() from the
+// gtest.cc, which is within the Google Test framework.
+TypeId GetTestTypeId() {
+ return GetTypeId<Test>();
+}
+
+// The value of GetTestTypeId() as seen from within the Google Test
+// library. This is solely for testing GetTestTypeId().
+extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId();
+
+// This predicate-formatter checks that 'results' contains a test part
+// failure of the given type and that the failure message contains the
+// given substring.
+AssertionResult HasOneFailure(const char* /* results_expr */,
+ const char* /* type_expr */,
+ const char* /* substr_expr */,
+ const TestPartResultArray& results,
+ TestPartResult::Type type,
+ const string& substr) {
+ const std::string expected(type == TestPartResult::kFatalFailure ?
+ "1 fatal failure" :
+ "1 non-fatal failure");
+ Message msg;
+ if (results.size() != 1) {
+ msg << "Expected: " << expected << "\n"
+ << " Actual: " << results.size() << " failures";
+ for (int i = 0; i < results.size(); i++) {
+ msg << "\n" << results.GetTestPartResult(i);
+ }
+ return AssertionFailure() << msg;
+ }
+
+ const TestPartResult& r = results.GetTestPartResult(0);
+ if (r.type() != type) {
+ return AssertionFailure() << "Expected: " << expected << "\n"
+ << " Actual:\n"
+ << r;
+ }
+
+ if (strstr(r.message(), substr.c_str()) == NULL) {
+ return AssertionFailure() << "Expected: " << expected << " containing \""
+ << substr << "\"\n"
+ << " Actual:\n"
+ << r;
+ }
+
+ return AssertionSuccess();
+}
+
+// The constructor of SingleFailureChecker remembers where to look up
+// test part results, what type of failure we expect, and what
+// substring the failure message should contain.
+SingleFailureChecker:: SingleFailureChecker(
+ const TestPartResultArray* results,
+ TestPartResult::Type type,
+ const string& substr)
+ : results_(results),
+ type_(type),
+ substr_(substr) {}
+
+// The destructor of SingleFailureChecker verifies that the given
+// TestPartResultArray contains exactly one failure that has the given
+// type and contains the given substring. If that's not the case, a
+// non-fatal failure will be generated.
+SingleFailureChecker::~SingleFailureChecker() {
+ EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_);
+}
+
+DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter(
+ UnitTestImpl* unit_test) : unit_test_(unit_test) {}
+
+void DefaultGlobalTestPartResultReporter::ReportTestPartResult(
+ const TestPartResult& result) {
+ unit_test_->current_test_result()->AddTestPartResult(result);
+ unit_test_->listeners()->repeater()->OnTestPartResult(result);
+}
+
+DefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter(
+ UnitTestImpl* unit_test) : unit_test_(unit_test) {}
+
+void DefaultPerThreadTestPartResultReporter::ReportTestPartResult(
+ const TestPartResult& result) {
+ unit_test_->GetGlobalTestPartResultReporter()->ReportTestPartResult(result);
+}
+
+// Returns the global test part result reporter.
+TestPartResultReporterInterface*
+UnitTestImpl::GetGlobalTestPartResultReporter() {
+ internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
+ return global_test_part_result_repoter_;
+}
+
+// Sets the global test part result reporter.
+void UnitTestImpl::SetGlobalTestPartResultReporter(
+ TestPartResultReporterInterface* reporter) {
+ internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
+ global_test_part_result_repoter_ = reporter;
+}
+
+// Returns the test part result reporter for the current thread.
+TestPartResultReporterInterface*
+UnitTestImpl::GetTestPartResultReporterForCurrentThread() {
+ return per_thread_test_part_result_reporter_.get();
+}
+
+// Sets the test part result reporter for the current thread.
+void UnitTestImpl::SetTestPartResultReporterForCurrentThread(
+ TestPartResultReporterInterface* reporter) {
+ per_thread_test_part_result_reporter_.set(reporter);
+}
+
+// Gets the number of successful test cases.
+int UnitTestImpl::successful_test_case_count() const {
+ return CountIf(test_cases_, TestCasePassed);
+}
+
+// Gets the number of failed test cases.
+int UnitTestImpl::failed_test_case_count() const {
+ return CountIf(test_cases_, TestCaseFailed);
+}
+
+// Gets the number of all test cases.
+int UnitTestImpl::total_test_case_count() const {
+ return static_cast<int>(test_cases_.size());
+}
+
+// Gets the number of all test cases that contain at least one test
+// that should run.
+int UnitTestImpl::test_case_to_run_count() const {
+ return CountIf(test_cases_, ShouldRunTestCase);
+}
+
+// Gets the number of successful tests.
+int UnitTestImpl::successful_test_count() const {
+ return SumOverTestCaseList(test_cases_, &TestCase::successful_test_count);
+}
+
+// Gets the number of failed tests.
+int UnitTestImpl::failed_test_count() const {
+ return SumOverTestCaseList(test_cases_, &TestCase::failed_test_count);
+}
+
+// Gets the number of disabled tests that will be reported in the XML report.
+int UnitTestImpl::reportable_disabled_test_count() const {
+ return SumOverTestCaseList(test_cases_,
+ &TestCase::reportable_disabled_test_count);
+}
+
+// Gets the number of disabled tests.
+int UnitTestImpl::disabled_test_count() const {
+ return SumOverTestCaseList(test_cases_, &TestCase::disabled_test_count);
+}
+
+// Gets the number of tests to be printed in the XML report.
+int UnitTestImpl::reportable_test_count() const {
+ return SumOverTestCaseList(test_cases_, &TestCase::reportable_test_count);
+}
+
+// Gets the number of all tests.
+int UnitTestImpl::total_test_count() const {
+ return SumOverTestCaseList(test_cases_, &TestCase::total_test_count);
+}
+
+// Gets the number of tests that should run.
+int UnitTestImpl::test_to_run_count() const {
+ return SumOverTestCaseList(test_cases_, &TestCase::test_to_run_count);
+}
+
+// Returns the current OS stack trace as an std::string.
+//
+// The maximum number of stack frames to be included is specified by
+// the gtest_stack_trace_depth flag. The skip_count parameter
+// specifies the number of top frames to be skipped, which doesn't
+// count against the number of frames to be included.
+//
+// For example, if Foo() calls Bar(), which in turn calls
+// CurrentOsStackTraceExceptTop(1), Foo() will be included in the
+// trace but Bar() and CurrentOsStackTraceExceptTop() won't.
+std::string UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) {
+ (void)skip_count;
+ return "";
+}
+
+// Returns the current time in milliseconds.
+TimeInMillis GetTimeInMillis() {
+#if GTEST_OS_WINDOWS_MOBILE || defined(__BORLANDC__)
+ // Difference between 1970-01-01 and 1601-01-01 in milliseconds.
+ // http://analogous.blogspot.com/2005/04/epoch.html
+ const TimeInMillis kJavaEpochToWinFileTimeDelta =
+ static_cast<TimeInMillis>(116444736UL) * 100000UL;
+ const DWORD kTenthMicrosInMilliSecond = 10000;
+
+ SYSTEMTIME now_systime;
+ FILETIME now_filetime;
+ ULARGE_INTEGER now_int64;
+ // TODO(kenton@google.com): Shouldn't this just use
+ // GetSystemTimeAsFileTime()?
+ GetSystemTime(&now_systime);
+ if (SystemTimeToFileTime(&now_systime, &now_filetime)) {
+ now_int64.LowPart = now_filetime.dwLowDateTime;
+ now_int64.HighPart = now_filetime.dwHighDateTime;
+ now_int64.QuadPart = (now_int64.QuadPart / kTenthMicrosInMilliSecond) -
+ kJavaEpochToWinFileTimeDelta;
+ return now_int64.QuadPart;
+ }
+ return 0;
+#elif GTEST_OS_WINDOWS && !GTEST_HAS_GETTIMEOFDAY_
+ __timeb64 now;
+
+# ifdef _MSC_VER
+
+ // MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996
+ // (deprecated function) there.
+ // TODO(kenton@google.com): Use GetTickCount()? Or use
+ // SystemTimeToFileTime()
+# pragma warning(push) // Saves the current warning state.
+# pragma warning(disable:4996) // Temporarily disables warning 4996.
+ _ftime64(&now);
+# pragma warning(pop) // Restores the warning state.
+# else
+
+ _ftime64(&now);
+
+# endif // _MSC_VER
+
+ return static_cast<TimeInMillis>(now.time) * 1000 + now.millitm;
+#elif GTEST_HAS_GETTIMEOFDAY_
+ struct timeval now;
+ gettimeofday(&now, NULL);
+ return static_cast<TimeInMillis>(now.tv_sec) * 1000 + now.tv_usec / 1000;
+#else
+# error "Don't know how to get the current time on your system."
+#endif
+}
+
+// Utilities
+
+// class String.
+
+#if GTEST_OS_WINDOWS_MOBILE
+// Creates a UTF-16 wide string from the given ANSI string, allocating
+// memory using new. The caller is responsible for deleting the return
+// value using delete[]. Returns the wide string, or NULL if the
+// input is NULL.
+LPCWSTR String::AnsiToUtf16(const char* ansi) {
+ if (!ansi) return NULL;
+ const int length = strlen(ansi);
+ const int unicode_length =
+ MultiByteToWideChar(CP_ACP, 0, ansi, length,
+ NULL, 0);
+ WCHAR* unicode = new WCHAR[unicode_length + 1];
+ MultiByteToWideChar(CP_ACP, 0, ansi, length,
+ unicode, unicode_length);
+ unicode[unicode_length] = 0;
+ return unicode;
+}
+
+// Creates an ANSI string from the given wide string, allocating
+// memory using new. The caller is responsible for deleting the return
+// value using delete[]. Returns the ANSI string, or NULL if the
+// input is NULL.
+const char* String::Utf16ToAnsi(LPCWSTR utf16_str) {
+ if (!utf16_str) return NULL;
+ const int ansi_length =
+ WideCharToMultiByte(CP_ACP, 0, utf16_str, -1,
+ NULL, 0, NULL, NULL);
+ char* ansi = new char[ansi_length + 1];
+ WideCharToMultiByte(CP_ACP, 0, utf16_str, -1,
+ ansi, ansi_length, NULL, NULL);
+ ansi[ansi_length] = 0;
+ return ansi;
+}
+
+#endif // GTEST_OS_WINDOWS_MOBILE
+
+// Compares two C strings. Returns true iff they have the same content.
+//
+// Unlike strcmp(), this function can handle NULL argument(s). A NULL
+// C string is considered different to any non-NULL C string,
+// including the empty string.
+bool String::CStringEquals(const char * lhs, const char * rhs) {
+ if ( lhs == NULL ) return rhs == NULL;
+
+ if ( rhs == NULL ) return false;
+
+ return strcmp(lhs, rhs) == 0;
+}
+
+#if GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING
+
+// Converts an array of wide chars to a narrow string using the UTF-8
+// encoding, and streams the result to the given Message object.
+static void StreamWideCharsToMessage(const wchar_t* wstr, size_t length,
+ Message* msg) {
+ for (size_t i = 0; i != length; ) { // NOLINT
+ if (wstr[i] != L'\0') {
+ *msg << WideStringToUtf8(wstr + i, static_cast<int>(length - i));
+ while (i != length && wstr[i] != L'\0')
+ i++;
+ } else {
+ *msg << '\0';
+ i++;
+ }
+ }
+}
+
+#endif // GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING
+
+} // namespace internal
+
+// Constructs an empty Message.
+// We allocate the stringstream separately because otherwise each use of
+// ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's
+// stack frame leading to huge stack frames in some cases; gcc does not reuse
+// the stack space.
+Message::Message() : ss_(new ::std::stringstream) {
+ // By default, we want there to be enough precision when printing
+ // a double to a Message.
+ *ss_ << std::setprecision(std::numeric_limits<double>::digits10 + 2);
+}
+
+// These two overloads allow streaming a wide C string to a Message
+// using the UTF-8 encoding.
+Message& Message::operator <<(const wchar_t* wide_c_str) {
+ return *this << internal::String::ShowWideCString(wide_c_str);
+}
+Message& Message::operator <<(wchar_t* wide_c_str) {
+ return *this << internal::String::ShowWideCString(wide_c_str);
+}
+
+#if GTEST_HAS_STD_WSTRING
+// Converts the given wide string to a narrow string using the UTF-8
+// encoding, and streams the result to this Message object.
+Message& Message::operator <<(const ::std::wstring& wstr) {
+ internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this);
+ return *this;
+}
+#endif // GTEST_HAS_STD_WSTRING
+
+#if GTEST_HAS_GLOBAL_WSTRING
+// Converts the given wide string to a narrow string using the UTF-8
+// encoding, and streams the result to this Message object.
+Message& Message::operator <<(const ::wstring& wstr) {
+ internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this);
+ return *this;
+}
+#endif // GTEST_HAS_GLOBAL_WSTRING
+
+// Gets the text streamed to this object so far as an std::string.
+// Each '\0' character in the buffer is replaced with "\\0".
+std::string Message::GetString() const {
+ return internal::StringStreamToString(ss_.get());
+}
+
+// AssertionResult constructors.
+// Used in EXPECT_TRUE/FALSE(assertion_result).
+AssertionResult::AssertionResult(const AssertionResult& other)
+ : success_(other.success_),
+ message_(other.message_.get() != NULL ?
+ new ::std::string(*other.message_) :
+ static_cast< ::std::string*>(NULL)) {
+}
+
+// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
+AssertionResult AssertionResult::operator!() const {
+ AssertionResult negation(!success_);
+ if (message_.get() != NULL)
+ negation << *message_;
+ return negation;
+}
+
+// Makes a successful assertion result.
+AssertionResult AssertionSuccess() {
+ return AssertionResult(true);
+}
+
+// Makes a failed assertion result.
+AssertionResult AssertionFailure() {
+ return AssertionResult(false);
+}
+
+// Makes a failed assertion result with the given failure message.
+// Deprecated; use AssertionFailure() << message.
+AssertionResult AssertionFailure(const Message& message) {
+ return AssertionFailure() << message;
+}
+
+namespace internal {
+
+// Constructs and returns the message for an equality assertion
+// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
+//
+// The first four parameters are the expressions used in the assertion
+// and their values, as strings. For example, for ASSERT_EQ(foo, bar)
+// where foo is 5 and bar is 6, we have:
+//
+// expected_expression: "foo"
+// actual_expression: "bar"
+// expected_value: "5"
+// actual_value: "6"
+//
+// The ignoring_case parameter is true iff the assertion is a
+// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will
+// be inserted into the message.
+AssertionResult EqFailure(const char* expected_expression,
+ const char* actual_expression,
+ const std::string& expected_value,
+ const std::string& actual_value,
+ bool ignoring_case) {
+ Message msg;
+ msg << "Value of: " << actual_expression;
+ if (actual_value != actual_expression) {
+ msg << "\n Actual: " << actual_value;
+ }
+
+ msg << "\nExpected: " << expected_expression;
+ if (ignoring_case) {
+ msg << " (ignoring case)";
+ }
+ if (expected_value != expected_expression) {
+ msg << "\nWhich is: " << expected_value;
+ }
+
+ return AssertionFailure() << msg;
+}
+
+// Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
+std::string GetBoolAssertionFailureMessage(
+ const AssertionResult& assertion_result,
+ const char* expression_text,
+ const char* actual_predicate_value,
+ const char* expected_predicate_value) {
+ const char* actual_message = assertion_result.message();
+ Message msg;
+ msg << "Value of: " << expression_text
+ << "\n Actual: " << actual_predicate_value;
+ if (actual_message[0] != '\0')
+ msg << " (" << actual_message << ")";
+ msg << "\nExpected: " << expected_predicate_value;
+ return msg.GetString();
+}
+
+// Helper function for implementing ASSERT_NEAR.
+AssertionResult DoubleNearPredFormat(const char* expr1,
+ const char* expr2,
+ const char* abs_error_expr,
+ double val1,
+ double val2,
+ double abs_error) {
+ const double diff = fabs(val1 - val2);
+ if (diff <= abs_error) return AssertionSuccess();
+
+ // TODO(wan): do not print the value of an expression if it's
+ // already a literal.
+ return AssertionFailure()
+ << "The difference between " << expr1 << " and " << expr2
+ << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n"
+ << expr1 << " evaluates to " << val1 << ",\n"
+ << expr2 << " evaluates to " << val2 << ", and\n"
+ << abs_error_expr << " evaluates to " << abs_error << ".";
+}
+
+
+// Helper template for implementing FloatLE() and DoubleLE().
+template <typename RawType>
+AssertionResult FloatingPointLE(const char* expr1,
+ const char* expr2,
+ RawType val1,
+ RawType val2) {
+ // Returns success if val1 is less than val2,
+ if (val1 < val2) {
+ return AssertionSuccess();
+ }
+
+ // or if val1 is almost equal to val2.
+ const FloatingPoint<RawType> lhs(val1), rhs(val2);
+ if (lhs.AlmostEquals(rhs)) {
+ return AssertionSuccess();
+ }
+
+ // Note that the above two checks will both fail if either val1 or
+ // val2 is NaN, as the IEEE floating-point standard requires that
+ // any predicate involving a NaN must return false.
+
+ ::std::stringstream val1_ss;
+ val1_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
+ << val1;
+
+ ::std::stringstream val2_ss;
+ val2_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
+ << val2;
+
+ return AssertionFailure()
+ << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n"
+ << " Actual: " << StringStreamToString(&val1_ss) << " vs "
+ << StringStreamToString(&val2_ss);
+}
+
+} // namespace internal
+
+// Asserts that val1 is less than, or almost equal to, val2. Fails
+// otherwise. In particular, it fails if either val1 or val2 is NaN.
+AssertionResult FloatLE(const char* expr1, const char* expr2,
+ float val1, float val2) {
+ return internal::FloatingPointLE<float>(expr1, expr2, val1, val2);
+}
+
+// Asserts that val1 is less than, or almost equal to, val2. Fails
+// otherwise. In particular, it fails if either val1 or val2 is NaN.
+AssertionResult DoubleLE(const char* expr1, const char* expr2,
+ double val1, double val2) {
+ return internal::FloatingPointLE<double>(expr1, expr2, val1, val2);
+}
+
+namespace internal {
+
+// The helper function for {ASSERT|EXPECT}_EQ with int or enum
+// arguments.
+AssertionResult CmpHelperEQ(const char* expected_expression,
+ const char* actual_expression,
+ BiggestInt expected,
+ BiggestInt actual) {
+ if (expected == actual) {
+ return AssertionSuccess();
+ }
+
+ return EqFailure(expected_expression,
+ actual_expression,
+ FormatForComparisonFailureMessage(expected, actual),
+ FormatForComparisonFailureMessage(actual, expected),
+ false);
+}
+
+// A macro for implementing the helper functions needed to implement
+// ASSERT_?? and EXPECT_?? with integer or enum arguments. It is here
+// just to avoid copy-and-paste of similar code.
+#define GTEST_IMPL_CMP_HELPER_(op_name, op)\
+AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
+ BiggestInt val1, BiggestInt val2) {\
+ if (val1 op val2) {\
+ return AssertionSuccess();\
+ } else {\
+ return AssertionFailure() \
+ << "Expected: (" << expr1 << ") " #op " (" << expr2\
+ << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\
+ << " vs " << FormatForComparisonFailureMessage(val2, val1);\
+ }\
+}
+
+// Implements the helper function for {ASSERT|EXPECT}_NE with int or
+// enum arguments.
+GTEST_IMPL_CMP_HELPER_(NE, !=)
+// Implements the helper function for {ASSERT|EXPECT}_LE with int or
+// enum arguments.
+GTEST_IMPL_CMP_HELPER_(LE, <=)
+// Implements the helper function for {ASSERT|EXPECT}_LT with int or
+// enum arguments.
+GTEST_IMPL_CMP_HELPER_(LT, < )
+// Implements the helper function for {ASSERT|EXPECT}_GE with int or
+// enum arguments.
+GTEST_IMPL_CMP_HELPER_(GE, >=)
+// Implements the helper function for {ASSERT|EXPECT}_GT with int or
+// enum arguments.
+GTEST_IMPL_CMP_HELPER_(GT, > )
+
+#undef GTEST_IMPL_CMP_HELPER_
+
+// The helper function for {ASSERT|EXPECT}_STREQ.
+AssertionResult CmpHelperSTREQ(const char* expected_expression,
+ const char* actual_expression,
+ const char* expected,
+ const char* actual) {
+ if (String::CStringEquals(expected, actual)) {
+ return AssertionSuccess();
+ }
+
+ return EqFailure(expected_expression,
+ actual_expression,
+ PrintToString(expected),
+ PrintToString(actual),
+ false);
+}
+
+// The helper function for {ASSERT|EXPECT}_STRCASEEQ.
+AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression,
+ const char* actual_expression,
+ const char* expected,
+ const char* actual) {
+ if (String::CaseInsensitiveCStringEquals(expected, actual)) {
+ return AssertionSuccess();
+ }
+
+ return EqFailure(expected_expression,
+ actual_expression,
+ PrintToString(expected),
+ PrintToString(actual),
+ true);
+}
+
+// The helper function for {ASSERT|EXPECT}_STRNE.
+AssertionResult CmpHelperSTRNE(const char* s1_expression,
+ const char* s2_expression,
+ const char* s1,
+ const char* s2) {
+ if (!String::CStringEquals(s1, s2)) {
+ return AssertionSuccess();
+ } else {
+ return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
+ << s2_expression << "), actual: \""
+ << s1 << "\" vs \"" << s2 << "\"";
+ }
+}
+
+// The helper function for {ASSERT|EXPECT}_STRCASENE.
+AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
+ const char* s2_expression,
+ const char* s1,
+ const char* s2) {
+ if (!String::CaseInsensitiveCStringEquals(s1, s2)) {
+ return AssertionSuccess();
+ } else {
+ return AssertionFailure()
+ << "Expected: (" << s1_expression << ") != ("
+ << s2_expression << ") (ignoring case), actual: \""
+ << s1 << "\" vs \"" << s2 << "\"";
+ }
+}
+
+} // namespace internal
+
+namespace {
+
+// Helper functions for implementing IsSubString() and IsNotSubstring().
+
+// This group of overloaded functions return true iff needle is a
+// substring of haystack. NULL is considered a substring of itself
+// only.
+
+bool IsSubstringPred(const char* needle, const char* haystack) {
+ if (needle == NULL || haystack == NULL)
+ return needle == haystack;
+
+ return strstr(haystack, needle) != NULL;
+}
+
+bool IsSubstringPred(const wchar_t* needle, const wchar_t* haystack) {
+ if (needle == NULL || haystack == NULL)
+ return needle == haystack;
+
+ return wcsstr(haystack, needle) != NULL;
+}
+
+// StringType here can be either ::std::string or ::std::wstring.
+template <typename StringType>
+bool IsSubstringPred(const StringType& needle,
+ const StringType& haystack) {
+ return haystack.find(needle) != StringType::npos;
+}
+
+// This function implements either IsSubstring() or IsNotSubstring(),
+// depending on the value of the expected_to_be_substring parameter.
+// StringType here can be const char*, const wchar_t*, ::std::string,
+// or ::std::wstring.
+template <typename StringType>
+AssertionResult IsSubstringImpl(
+ bool expected_to_be_substring,
+ const char* needle_expr, const char* haystack_expr,
+ const StringType& needle, const StringType& haystack) {
+ if (IsSubstringPred(needle, haystack) == expected_to_be_substring)
+ return AssertionSuccess();
+
+ const bool is_wide_string = sizeof(needle[0]) > 1;
+ const char* const begin_string_quote = is_wide_string ? "L\"" : "\"";
+ return AssertionFailure()
+ << "Value of: " << needle_expr << "\n"
+ << " Actual: " << begin_string_quote << needle << "\"\n"
+ << "Expected: " << (expected_to_be_substring ? "" : "not ")
+ << "a substring of " << haystack_expr << "\n"
+ << "Which is: " << begin_string_quote << haystack << "\"";
+}
+
+} // namespace
+
+// IsSubstring() and IsNotSubstring() check whether needle is a
+// substring of haystack (NULL is considered a substring of itself
+// only), and return an appropriate error message when they fail.
+
+AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const char* needle, const char* haystack) {
+ return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const wchar_t* needle, const wchar_t* haystack) {
+ return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const char* needle, const char* haystack) {
+ return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const wchar_t* needle, const wchar_t* haystack) {
+ return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::string& needle, const ::std::string& haystack) {
+ return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::string& needle, const ::std::string& haystack) {
+ return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
+}
+
+#if GTEST_HAS_STD_WSTRING
+AssertionResult IsSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::wstring& needle, const ::std::wstring& haystack) {
+ return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
+}
+
+AssertionResult IsNotSubstring(
+ const char* needle_expr, const char* haystack_expr,
+ const ::std::wstring& needle, const ::std::wstring& haystack) {
+ return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
+}
+#endif // GTEST_HAS_STD_WSTRING
+
+namespace internal {
+
+#if GTEST_OS_WINDOWS
+
+namespace {
+
+// Helper function for IsHRESULT{SuccessFailure} predicates
+AssertionResult HRESULTFailureHelper(const char* expr,
+ const char* expected,
+ long hr) { // NOLINT
+# if GTEST_OS_WINDOWS_MOBILE
+
+ // Windows CE doesn't support FormatMessage.
+ const char error_text[] = "";
+
+# else
+
+ // Looks up the human-readable system message for the HRESULT code
+ // and since we're not passing any params to FormatMessage, we don't
+ // want inserts expanded.
+ const DWORD kFlags = FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS;
+ const DWORD kBufSize = 4096;
+ // Gets the system's human readable message string for this HRESULT.
+ char error_text[kBufSize] = { '\0' };
+ DWORD message_length = ::FormatMessageA(kFlags,
+ 0, // no source, we're asking system
+ hr, // the error
+ 0, // no line width restrictions
+ error_text, // output buffer
+ kBufSize, // buf size
+ NULL); // no arguments for inserts
+ // Trims tailing white space (FormatMessage leaves a trailing CR-LF)
+ for (; message_length && IsSpace(error_text[message_length - 1]);
+ --message_length) {
+ error_text[message_length - 1] = '\0';
+ }
+
+# endif // GTEST_OS_WINDOWS_MOBILE
+
+ const std::string error_hex("0x" + String::FormatHexInt(hr));
+ return ::testing::AssertionFailure()
+ << "Expected: " << expr << " " << expected << ".\n"
+ << " Actual: " << error_hex << " " << error_text << "\n";
+}
+
+} // namespace
+
+AssertionResult IsHRESULTSuccess(const char* expr, long hr) { // NOLINT
+ if (SUCCEEDED(hr)) {
+ return AssertionSuccess();
+ }
+ return HRESULTFailureHelper(expr, "succeeds", hr);
+}
+
+AssertionResult IsHRESULTFailure(const char* expr, long hr) { // NOLINT
+ if (FAILED(hr)) {
+ return AssertionSuccess();
+ }
+ return HRESULTFailureHelper(expr, "fails", hr);
+}
+
+#endif // GTEST_OS_WINDOWS
+
+// Utility functions for encoding Unicode text (wide strings) in
+// UTF-8.
+
+// A Unicode code-point can have upto 21 bits, and is encoded in UTF-8
+// like this:
+//
+// Code-point length Encoding
+// 0 - 7 bits 0xxxxxxx
+// 8 - 11 bits 110xxxxx 10xxxxxx
+// 12 - 16 bits 1110xxxx 10xxxxxx 10xxxxxx
+// 17 - 21 bits 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+
+// The maximum code-point a one-byte UTF-8 sequence can represent.
+const UInt32 kMaxCodePoint1 = (static_cast<UInt32>(1) << 7) - 1;
+
+// The maximum code-point a two-byte UTF-8 sequence can represent.
+const UInt32 kMaxCodePoint2 = (static_cast<UInt32>(1) << (5 + 6)) - 1;
+
+// The maximum code-point a three-byte UTF-8 sequence can represent.
+const UInt32 kMaxCodePoint3 = (static_cast<UInt32>(1) << (4 + 2*6)) - 1;
+
+// The maximum code-point a four-byte UTF-8 sequence can represent.
+const UInt32 kMaxCodePoint4 = (static_cast<UInt32>(1) << (3 + 3*6)) - 1;
+
+// Chops off the n lowest bits from a bit pattern. Returns the n
+// lowest bits. As a side effect, the original bit pattern will be
+// shifted to the right by n bits.
+inline UInt32 ChopLowBits(UInt32* bits, int n) {
+ const UInt32 low_bits = *bits & ((static_cast<UInt32>(1) << n) - 1);
+ *bits >>= n;
+ return low_bits;
+}
+
+// Converts a Unicode code point to a narrow string in UTF-8 encoding.
+// code_point parameter is of type UInt32 because wchar_t may not be
+// wide enough to contain a code point.
+// If the code_point is not a valid Unicode code point
+// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
+// to "(Invalid Unicode 0xXXXXXXXX)".
+std::string CodePointToUtf8(UInt32 code_point) {
+ if (code_point > kMaxCodePoint4) {
+ return "(Invalid Unicode 0x" + String::FormatHexInt(code_point) + ")";
+ }
+
+ char str[5]; // Big enough for the largest valid code point.
+ if (code_point <= kMaxCodePoint1) {
+ str[1] = '\0';
+ str[0] = static_cast<char>(code_point); // 0xxxxxxx
+ } else if (code_point <= kMaxCodePoint2) {
+ str[2] = '\0';
+ str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
+ str[0] = static_cast<char>(0xC0 | code_point); // 110xxxxx
+ } else if (code_point <= kMaxCodePoint3) {
+ str[3] = '\0';
+ str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
+ str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
+ str[0] = static_cast<char>(0xE0 | code_point); // 1110xxxx
+ } else { // code_point <= kMaxCodePoint4
+ str[4] = '\0';
+ str[3] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
+ str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
+ str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
+ str[0] = static_cast<char>(0xF0 | code_point); // 11110xxx
+ }
+ return str;
+}
+
+// The following two functions only make sense if the the system
+// uses UTF-16 for wide string encoding. All supported systems
+// with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16.
+
+// Determines if the arguments constitute UTF-16 surrogate pair
+// and thus should be combined into a single Unicode code point
+// using CreateCodePointFromUtf16SurrogatePair.
+inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
+ return sizeof(wchar_t) == 2 &&
+ (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00;
+}
+
+// Creates a Unicode code point from UTF16 surrogate pair.
+inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first,
+ wchar_t second) {
+ const UInt32 mask = (1 << 10) - 1;
+ return (sizeof(wchar_t) == 2) ?
+ (((first & mask) << 10) | (second & mask)) + 0x10000 :
+ // This function should not be called when the condition is
+ // false, but we provide a sensible default in case it is.
+ static_cast<UInt32>(first);
+}
+
+// Converts a wide string to a narrow string in UTF-8 encoding.
+// The wide string is assumed to have the following encoding:
+// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS)
+// UTF-32 if sizeof(wchar_t) == 4 (on Linux)
+// Parameter str points to a null-terminated wide string.
+// Parameter num_chars may additionally limit the number
+// of wchar_t characters processed. -1 is used when the entire string
+// should be processed.
+// If the string contains code points that are not valid Unicode code points
+// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
+// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
+// and contains invalid UTF-16 surrogate pairs, values in those pairs
+// will be encoded as individual Unicode characters from Basic Normal Plane.
+std::string WideStringToUtf8(const wchar_t* str, int num_chars) {
+ if (num_chars == -1)
+ num_chars = static_cast<int>(wcslen(str));
+
+ ::std::stringstream stream;
+ for (int i = 0; i < num_chars; ++i) {
+ UInt32 unicode_code_point;
+
+ if (str[i] == L'\0') {
+ break;
+ } else if (i + 1 < num_chars && IsUtf16SurrogatePair(str[i], str[i + 1])) {
+ unicode_code_point = CreateCodePointFromUtf16SurrogatePair(str[i],
+ str[i + 1]);
+ i++;
+ } else {
+ unicode_code_point = static_cast<UInt32>(str[i]);
+ }
+
+ stream << CodePointToUtf8(unicode_code_point);
+ }
+ return StringStreamToString(&stream);
+}
+
+// Converts a wide C string to an std::string using the UTF-8 encoding.
+// NULL will be converted to "(null)".
+std::string String::ShowWideCString(const wchar_t * wide_c_str) {
+ if (wide_c_str == NULL) return "(null)";
+
+ return internal::WideStringToUtf8(wide_c_str, -1);
+}
+
+// Compares two wide C strings. Returns true iff they have the same
+// content.
+//
+// Unlike wcscmp(), this function can handle NULL argument(s). A NULL
+// C string is considered different to any non-NULL C string,
+// including the empty string.
+bool String::WideCStringEquals(const wchar_t * lhs, const wchar_t * rhs) {
+ if (lhs == NULL) return rhs == NULL;
+
+ if (rhs == NULL) return false;
+
+ return wcscmp(lhs, rhs) == 0;
+}
+
+// Helper function for *_STREQ on wide strings.
+AssertionResult CmpHelperSTREQ(const char* expected_expression,
+ const char* actual_expression,
+ const wchar_t* expected,
+ const wchar_t* actual) {
+ if (String::WideCStringEquals(expected, actual)) {
+ return AssertionSuccess();
+ }
+
+ return EqFailure(expected_expression,
+ actual_expression,
+ PrintToString(expected),
+ PrintToString(actual),
+ false);
+}
+
+// Helper function for *_STRNE on wide strings.
+AssertionResult CmpHelperSTRNE(const char* s1_expression,
+ const char* s2_expression,
+ const wchar_t* s1,
+ const wchar_t* s2) {
+ if (!String::WideCStringEquals(s1, s2)) {
+ return AssertionSuccess();
+ }
+
+ return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
+ << s2_expression << "), actual: "
+ << PrintToString(s1)
+ << " vs " << PrintToString(s2);
+}
+
+// Compares two C strings, ignoring case. Returns true iff they have
+// the same content.
+//
+// Unlike strcasecmp(), this function can handle NULL argument(s). A
+// NULL C string is considered different to any non-NULL C string,
+// including the empty string.
+bool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) {
+ if (lhs == NULL)
+ return rhs == NULL;
+ if (rhs == NULL)
+ return false;
+ return posix::StrCaseCmp(lhs, rhs) == 0;
+}
+
+ // Compares two wide C strings, ignoring case. Returns true iff they
+ // have the same content.
+ //
+ // Unlike wcscasecmp(), this function can handle NULL argument(s).
+ // A NULL C string is considered different to any non-NULL wide C string,
+ // including the empty string.
+ // NB: The implementations on different platforms slightly differ.
+ // On windows, this method uses _wcsicmp which compares according to LC_CTYPE
+ // environment variable. On GNU platform this method uses wcscasecmp
+ // which compares according to LC_CTYPE category of the current locale.
+ // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
+ // current locale.
+bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
+ const wchar_t* rhs) {
+ if (lhs == NULL) return rhs == NULL;
+
+ if (rhs == NULL) return false;
+
+#if GTEST_OS_WINDOWS
+ return _wcsicmp(lhs, rhs) == 0;
+#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID
+ return wcscasecmp(lhs, rhs) == 0;
+#else
+ // Android, Mac OS X and Cygwin don't define wcscasecmp.
+ // Other unknown OSes may not define it either.
+ wint_t left, right;
+ do {
+ left = towlower(*lhs++);
+ right = towlower(*rhs++);
+ } while (left && left == right);
+ return left == right;
+#endif // OS selector
+}
+
+// Returns true iff str ends with the given suffix, ignoring case.
+// Any string is considered to end with an empty suffix.
+bool String::EndsWithCaseInsensitive(
+ const std::string& str, const std::string& suffix) {
+ const size_t str_len = str.length();
+ const size_t suffix_len = suffix.length();
+ return (str_len >= suffix_len) &&
+ CaseInsensitiveCStringEquals(str.c_str() + str_len - suffix_len,
+ suffix.c_str());
+}
+
+// Formats an int value as "%02d".
+std::string String::FormatIntWidth2(int value) {
+ std::stringstream ss;
+ ss << std::setfill('0') << std::setw(2) << value;
+ return ss.str();
+}
+
+// Formats an int value as "%X".
+std::string String::FormatHexInt(int value) {
+ std::stringstream ss;
+ ss << std::hex << std::uppercase << value;
+ return ss.str();
+}
+
+// Formats a byte as "%02X".
+std::string String::FormatByte(unsigned char value) {
+ std::stringstream ss;
+ ss << std::setfill('0') << std::setw(2) << std::hex << std::uppercase
+ << static_cast<unsigned int>(value);
+ return ss.str();
+}
+
+// Converts the buffer in a stringstream to an std::string, converting NUL
+// bytes to "\\0" along the way.
+std::string StringStreamToString(::std::stringstream* ss) {
+ const ::std::string& str = ss->str();
+ const char* const start = str.c_str();
+ const char* const end = start + str.length();
+
+ std::string result;
+ result.reserve(2 * (end - start));
+ for (const char* ch = start; ch != end; ++ch) {
+ if (*ch == '\0') {
+ result += "\\0"; // Replaces NUL with "\\0";
+ } else {
+ result += *ch;
+ }
+ }
+
+ return result;
+}
+
+// Appends the user-supplied message to the Google-Test-generated message.
+std::string AppendUserMessage(const std::string& gtest_msg,
+ const Message& user_msg) {
+ // Appends the user message if it's non-empty.
+ const std::string user_msg_string = user_msg.GetString();
+ if (user_msg_string.empty()) {
+ return gtest_msg;
+ }
+
+ return gtest_msg + "\n" + user_msg_string;
+}
+
+} // namespace internal
+
+// class TestResult
+
+// Creates an empty TestResult.
+TestResult::TestResult()
+ : death_test_count_(0),
+ elapsed_time_(0) {
+}
+
+// D'tor.
+TestResult::~TestResult() {
+}
+
+// Returns the i-th test part result among all the results. i can
+// range from 0 to total_part_count() - 1. If i is not in that range,
+// aborts the program.
+const TestPartResult& TestResult::GetTestPartResult(int i) const {
+ if (i < 0 || i >= total_part_count())
+ internal::posix::Abort();
+ return test_part_results_.at(i);
+}
+
+// Returns the i-th test property. i can range from 0 to
+// test_property_count() - 1. If i is not in that range, aborts the
+// program.
+const TestProperty& TestResult::GetTestProperty(int i) const {
+ if (i < 0 || i >= test_property_count())
+ internal::posix::Abort();
+ return test_properties_.at(i);
+}
+
+// Clears the test part results.
+void TestResult::ClearTestPartResults() {
+ test_part_results_.clear();
+}
+
+// Adds a test part result to the list.
+void TestResult::AddTestPartResult(const TestPartResult& test_part_result) {
+ test_part_results_.push_back(test_part_result);
+}
+
+// Adds a test property to the list. If a property with the same key as the
+// supplied property is already represented, the value of this test_property
+// replaces the old value for that key.
+void TestResult::RecordProperty(const std::string& xml_element,
+ const TestProperty& test_property) {
+ if (!ValidateTestProperty(xml_element, test_property)) {
+ return;
+ }
+ internal::MutexLock lock(&test_properites_mutex_);
+ const std::vector<TestProperty>::iterator property_with_matching_key =
+ std::find_if(test_properties_.begin(), test_properties_.end(),
+ internal::TestPropertyKeyIs(test_property.key()));
+ if (property_with_matching_key == test_properties_.end()) {
+ test_properties_.push_back(test_property);
+ return;
+ }
+ property_with_matching_key->SetValue(test_property.value());
+}
+
+// The list of reserved attributes used in the <testsuites> element of XML
+// output.
+static const char* const kReservedTestSuitesAttributes[] = {
+ "disabled",
+ "errors",
+ "failures",
+ "name",
+ "random_seed",
+ "tests",
+ "time",
+ "timestamp"
+};
+
+// The list of reserved attributes used in the <testsuite> element of XML
+// output.
+static const char* const kReservedTestSuiteAttributes[] = {
+ "disabled",
+ "errors",
+ "failures",
+ "name",
+ "tests",
+ "time"
+};
+
+// The list of reserved attributes used in the <testcase> element of XML output.
+static const char* const kReservedTestCaseAttributes[] = {
+ "classname",
+ "name",
+ "status",
+ "time",
+ "type_param",
+ "value_param"
+};
+
+template <int kSize>
+std::vector<std::string> ArrayAsVector(const char* const (&array)[kSize]) {
+ return std::vector<std::string>(array, array + kSize);
+}
+
+static std::vector<std::string> GetReservedAttributesForElement(
+ const std::string& xml_element) {
+ if (xml_element == "testsuites") {
+ return ArrayAsVector(kReservedTestSuitesAttributes);
+ } else if (xml_element == "testsuite") {
+ return ArrayAsVector(kReservedTestSuiteAttributes);
+ } else if (xml_element == "testcase") {
+ return ArrayAsVector(kReservedTestCaseAttributes);
+ } else {
+ GTEST_CHECK_(false) << "Unrecognized xml_element provided: " << xml_element;
+ }
+ // This code is unreachable but some compilers may not realizes that.
+ return std::vector<std::string>();
+}
+
+static std::string FormatWordList(const std::vector<std::string>& words) {
+ Message word_list;
+ for (size_t i = 0; i < words.size(); ++i) {
+ if (i > 0 && words.size() > 2) {
+ word_list << ", ";
+ }
+ if (i == words.size() - 1) {
+ word_list << "and ";
+ }
+ word_list << "'" << words[i] << "'";
+ }
+ return word_list.GetString();
+}
+
+bool ValidateTestPropertyName(const std::string& property_name,
+ const std::vector<std::string>& reserved_names) {
+ if (std::find(reserved_names.begin(), reserved_names.end(), property_name) !=
+ reserved_names.end()) {
+ ADD_FAILURE() << "Reserved key used in RecordProperty(): " << property_name
+ << " (" << FormatWordList(reserved_names)
+ << " are reserved by " << GTEST_NAME_ << ")";
+ return false;
+ }
+ return true;
+}
+
+// Adds a failure if the key is a reserved attribute of the element named
+// xml_element. Returns true if the property is valid.
+bool TestResult::ValidateTestProperty(const std::string& xml_element,
+ const TestProperty& test_property) {
+ return ValidateTestPropertyName(test_property.key(),
+ GetReservedAttributesForElement(xml_element));
+}
+
+// Clears the object.
+void TestResult::Clear() {
+ test_part_results_.clear();
+ test_properties_.clear();
+ death_test_count_ = 0;
+ elapsed_time_ = 0;
+}
+
+// Returns true iff the test failed.
+bool TestResult::Failed() const {
+ for (int i = 0; i < total_part_count(); ++i) {
+ if (GetTestPartResult(i).failed())
+ return true;
+ }
+ return false;
+}
+
+// Returns true iff the test part fatally failed.
+static bool TestPartFatallyFailed(const TestPartResult& result) {
+ return result.fatally_failed();
+}
+
+// Returns true iff the test fatally failed.
+bool TestResult::HasFatalFailure() const {
+ return CountIf(test_part_results_, TestPartFatallyFailed) > 0;
+}
+
+// Returns true iff the test part non-fatally failed.
+static bool TestPartNonfatallyFailed(const TestPartResult& result) {
+ return result.nonfatally_failed();
+}
+
+// Returns true iff the test has a non-fatal failure.
+bool TestResult::HasNonfatalFailure() const {
+ return CountIf(test_part_results_, TestPartNonfatallyFailed) > 0;
+}
+
+// Gets the number of all test parts. This is the sum of the number
+// of successful test parts and the number of failed test parts.
+int TestResult::total_part_count() const {
+ return static_cast<int>(test_part_results_.size());
+}
+
+// Returns the number of the test properties.
+int TestResult::test_property_count() const {
+ return static_cast<int>(test_properties_.size());
+}
+
+// class Test
+
+// Creates a Test object.
+
+// The c'tor saves the values of all Google Test flags.
+Test::Test()
+ : gtest_flag_saver_(new internal::GTestFlagSaver) {
+}
+
+// The d'tor restores the values of all Google Test flags.
+Test::~Test() {
+ delete gtest_flag_saver_;
+}
+
+// Sets up the test fixture.
+//
+// A sub-class may override this.
+void Test::SetUp() {
+}
+
+// Tears down the test fixture.
+//
+// A sub-class may override this.
+void Test::TearDown() {
+}
+
+// Allows user supplied key value pairs to be recorded for later output.
+void Test::RecordProperty(const std::string& key, const std::string& value) {
+ UnitTest::GetInstance()->RecordProperty(key, value);
+}
+
+// Allows user supplied key value pairs to be recorded for later output.
+void Test::RecordProperty(const std::string& key, int value) {
+ Message value_message;
+ value_message << value;
+ RecordProperty(key, value_message.GetString().c_str());
+}
+
+namespace internal {
+
+void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
+ const std::string& message) {
+ // This function is a friend of UnitTest and as such has access to
+ // AddTestPartResult.
+ UnitTest::GetInstance()->AddTestPartResult(
+ result_type,
+ NULL, // No info about the source file where the exception occurred.
+ -1, // We have no info on which line caused the exception.
+ message,
+ ""); // No stack trace, either.
+}
+
+} // namespace internal
+
+// Google Test requires all tests in the same test case to use the same test
+// fixture class. This function checks if the current test has the
+// same fixture class as the first test in the current test case. If
+// yes, it returns true; otherwise it generates a Google Test failure and
+// returns false.
+bool Test::HasSameFixtureClass() {
+ internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+ const TestCase* const test_case = impl->current_test_case();
+
+ // Info about the first test in the current test case.
+ const TestInfo* const first_test_info = test_case->test_info_list()[0];
+ const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_;
+ const char* const first_test_name = first_test_info->name();
+
+ // Info about the current test.
+ const TestInfo* const this_test_info = impl->current_test_info();
+ const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_;
+ const char* const this_test_name = this_test_info->name();
+
+ if (this_fixture_id != first_fixture_id) {
+ // Is the first test defined using TEST?
+ const bool first_is_TEST = first_fixture_id == internal::GetTestTypeId();
+ // Is this test defined using TEST?
+ const bool this_is_TEST = this_fixture_id == internal::GetTestTypeId();
+
+ if (first_is_TEST || this_is_TEST) {
+ // The user mixed TEST and TEST_F in this test case - we'll tell
+ // him/her how to fix it.
+
+ // Gets the name of the TEST and the name of the TEST_F. Note
+ // that first_is_TEST and this_is_TEST cannot both be true, as
+ // the fixture IDs are different for the two tests.
+ const char* const TEST_name =
+ first_is_TEST ? first_test_name : this_test_name;
+ const char* const TEST_F_name =
+ first_is_TEST ? this_test_name : first_test_name;
+
+ ADD_FAILURE()
+ << "All tests in the same test case must use the same test fixture\n"
+ << "class, so mixing TEST_F and TEST in the same test case is\n"
+ << "illegal. In test case " << this_test_info->test_case_name()
+ << ",\n"
+ << "test " << TEST_F_name << " is defined using TEST_F but\n"
+ << "test " << TEST_name << " is defined using TEST. You probably\n"
+ << "want to change the TEST to TEST_F or move it to another test\n"
+ << "case.";
+ } else {
+ // The user defined two fixture classes with the same name in
+ // two namespaces - we'll tell him/her how to fix it.
+ ADD_FAILURE()
+ << "All tests in the same test case must use the same test fixture\n"
+ << "class. However, in test case "
+ << this_test_info->test_case_name() << ",\n"
+ << "you defined test " << first_test_name
+ << " and test " << this_test_name << "\n"
+ << "using two different test fixture classes. This can happen if\n"
+ << "the two classes are from different namespaces or translation\n"
+ << "units and have the same name. You should probably rename one\n"
+ << "of the classes to put the tests into different test cases.";
+ }
+ return false;
+ }
+
+ return true;
+}
+
+#if GTEST_HAS_SEH
+
+// Adds an "exception thrown" fatal failure to the current test. This
+// function returns its result via an output parameter pointer because VC++
+// prohibits creation of objects with destructors on stack in functions
+// using __try (see error C2712).
+static std::string* FormatSehExceptionMessage(DWORD exception_code,
+ const char* location) {
+ Message message;
+ message << "SEH exception with code 0x" << std::setbase(16) <<
+ exception_code << std::setbase(10) << " thrown in " << location << ".";
+
+ return new std::string(message.GetString());
+}
+
+#endif // GTEST_HAS_SEH
+
+namespace internal {
+
+#if GTEST_HAS_EXCEPTIONS
+
+// Adds an "exception thrown" fatal failure to the current test.
+static std::string FormatCxxExceptionMessage(const char* description,
+ const char* location) {
+ Message message;
+ if (description != NULL) {
+ message << "C++ exception with description \"" << description << "\"";
+ } else {
+ message << "Unknown C++ exception";
+ }
+ message << " thrown in " << location << ".";
+
+ return message.GetString();
+}
+
+static std::string PrintTestPartResultToString(
+ const TestPartResult& test_part_result);
+
+GoogleTestFailureException::GoogleTestFailureException(
+ const TestPartResult& failure)
+ : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {}
+
+#endif // GTEST_HAS_EXCEPTIONS
+
+// We put these helper functions in the internal namespace as IBM's xlC
+// compiler rejects the code if they were declared static.
+
+// Runs the given method and handles SEH exceptions it throws, when
+// SEH is supported; returns the 0-value for type Result in case of an
+// SEH exception. (Microsoft compilers cannot handle SEH and C++
+// exceptions in the same function. Therefore, we provide a separate
+// wrapper function for handling SEH exceptions.)
+template <class T, typename Result>
+Result HandleSehExceptionsInMethodIfSupported(
+ T* object, Result (T::*method)(), const char* location) {
+#if GTEST_HAS_SEH
+ __try {
+ return (object->*method)();
+ } __except (internal::UnitTestOptions::GTestShouldProcessSEH( // NOLINT
+ GetExceptionCode())) {
+ // We create the exception message on the heap because VC++ prohibits
+ // creation of objects with destructors on stack in functions using __try
+ // (see error C2712).
+ std::string* exception_message = FormatSehExceptionMessage(
+ GetExceptionCode(), location);
+ internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure,
+ *exception_message);
+ delete exception_message;
+ return static_cast<Result>(0);
+ }
+#else
+ (void)location;
+ return (object->*method)();
+#endif // GTEST_HAS_SEH
+}
+
+// Runs the given method and catches and reports C++ and/or SEH-style
+// exceptions, if they are supported; returns the 0-value for type
+// Result in case of an SEH exception.
+template <class T, typename Result>
+Result HandleExceptionsInMethodIfSupported(
+ T* object, Result (T::*method)(), const char* location) {
+ // NOTE: The user code can affect the way in which Google Test handles
+ // exceptions by setting GTEST_FLAG(catch_exceptions), but only before
+ // RUN_ALL_TESTS() starts. It is technically possible to check the flag
+ // after the exception is caught and either report or re-throw the
+ // exception based on the flag's value:
+ //
+ // try {
+ // // Perform the test method.
+ // } catch (...) {
+ // if (GTEST_FLAG(catch_exceptions))
+ // // Report the exception as failure.
+ // else
+ // throw; // Re-throws the original exception.
+ // }
+ //
+ // However, the purpose of this flag is to allow the program to drop into
+ // the debugger when the exception is thrown. On most platforms, once the
+ // control enters the catch block, the exception origin information is
+ // lost and the debugger will stop the program at the point of the
+ // re-throw in this function -- instead of at the point of the original
+ // throw statement in the code under test. For this reason, we perform
+ // the check early, sacrificing the ability to affect Google Test's
+ // exception handling in the method where the exception is thrown.
+ if (internal::GetUnitTestImpl()->catch_exceptions()) {
+#if GTEST_HAS_EXCEPTIONS
+ try {
+ return HandleSehExceptionsInMethodIfSupported(object, method, location);
+ } catch (const internal::GoogleTestFailureException&) { // NOLINT
+ // This exception type can only be thrown by a failed Google
+ // Test assertion with the intention of letting another testing
+ // framework catch it. Therefore we just re-throw it.
+ throw;
+ } catch (const std::exception& e) { // NOLINT
+ internal::ReportFailureInUnknownLocation(
+ TestPartResult::kFatalFailure,
+ FormatCxxExceptionMessage(e.what(), location));
+ } catch (...) { // NOLINT
+ internal::ReportFailureInUnknownLocation(
+ TestPartResult::kFatalFailure,
+ FormatCxxExceptionMessage(NULL, location));
+ }
+ return static_cast<Result>(0);
+#else
+ return HandleSehExceptionsInMethodIfSupported(object, method, location);
+#endif // GTEST_HAS_EXCEPTIONS
+ } else {
+ return (object->*method)();
+ }
+}
+
+} // namespace internal
+
+// Runs the test and updates the test result.
+void Test::Run() {
+ if (!HasSameFixtureClass()) return;
+
+ internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+ impl->os_stack_trace_getter()->UponLeavingGTest();
+ internal::HandleExceptionsInMethodIfSupported(this, &Test::SetUp, "SetUp()");
+ // We will run the test only if SetUp() was successful.
+ if (!HasFatalFailure()) {
+ impl->os_stack_trace_getter()->UponLeavingGTest();
+ internal::HandleExceptionsInMethodIfSupported(
+ this, &Test::TestBody, "the test body");
+ }
+
+ // However, we want to clean up as much as possible. Hence we will
+ // always call TearDown(), even if SetUp() or the test body has
+ // failed.
+ impl->os_stack_trace_getter()->UponLeavingGTest();
+ internal::HandleExceptionsInMethodIfSupported(
+ this, &Test::TearDown, "TearDown()");
+}
+
+// Returns true iff the current test has a fatal failure.
+bool Test::HasFatalFailure() {
+ return internal::GetUnitTestImpl()->current_test_result()->HasFatalFailure();
+}
+
+// Returns true iff the current test has a non-fatal failure.
+bool Test::HasNonfatalFailure() {
+ return internal::GetUnitTestImpl()->current_test_result()->
+ HasNonfatalFailure();
+}
+
+// class TestInfo
+
+// Constructs a TestInfo object. It assumes ownership of the test factory
+// object.
+TestInfo::TestInfo(const std::string& a_test_case_name,
+ const std::string& a_name,
+ const char* a_type_param,
+ const char* a_value_param,
+ internal::TypeId fixture_class_id,
+ internal::TestFactoryBase* factory)
+ : test_case_name_(a_test_case_name),
+ name_(a_name),
+ type_param_(a_type_param ? new std::string(a_type_param) : NULL),
+ value_param_(a_value_param ? new std::string(a_value_param) : NULL),
+ fixture_class_id_(fixture_class_id),
+ should_run_(false),
+ is_disabled_(false),
+ matches_filter_(false),
+ factory_(factory),
+ result_() {}
+
+// Destructs a TestInfo object.
+TestInfo::~TestInfo() { delete factory_; }
+
+namespace internal {
+
+// Creates a new TestInfo object and registers it with Google Test;
+// returns the created object.
+//
+// Arguments:
+//
+// test_case_name: name of the test case
+// name: name of the test
+// type_param: the name of the test's type parameter, or NULL if
+// this is not a typed or a type-parameterized test.
+// value_param: text representation of the test's value parameter,
+// or NULL if this is not a value-parameterized test.
+// fixture_class_id: ID of the test fixture class
+// set_up_tc: pointer to the function that sets up the test case
+// tear_down_tc: pointer to the function that tears down the test case
+// factory: pointer to the factory that creates a test object.
+// The newly created TestInfo instance will assume
+// ownership of the factory object.
+TestInfo* MakeAndRegisterTestInfo(
+ const char* test_case_name,
+ const char* name,
+ const char* type_param,
+ const char* value_param,
+ TypeId fixture_class_id,
+ SetUpTestCaseFunc set_up_tc,
+ TearDownTestCaseFunc tear_down_tc,
+ TestFactoryBase* factory) {
+ TestInfo* const test_info =
+ new TestInfo(test_case_name, name, type_param, value_param,
+ fixture_class_id, factory);
+ GetUnitTestImpl()->AddTestInfo(set_up_tc, tear_down_tc, test_info);
+ return test_info;
+}
+
+#if GTEST_HAS_PARAM_TEST
+void ReportInvalidTestCaseType(const char* test_case_name,
+ const char* file, int line) {
+ Message errors;
+ errors
+ << "Attempted redefinition of test case " << test_case_name << ".\n"
+ << "All tests in the same test case must use the same test fixture\n"
+ << "class. However, in test case " << test_case_name << ", you tried\n"
+ << "to define a test using a fixture class different from the one\n"
+ << "used earlier. This can happen if the two fixture classes are\n"
+ << "from different namespaces and have the same name. You should\n"
+ << "probably rename one of the classes to put the tests into different\n"
+ << "test cases.";
+
+ fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(),
+ errors.GetString().c_str());
+}
+#endif // GTEST_HAS_PARAM_TEST
+
+} // namespace internal
+
+namespace {
+
+// A predicate that checks the test name of a TestInfo against a known
+// value.
+//
+// This is used for implementation of the TestCase class only. We put
+// it in the anonymous namespace to prevent polluting the outer
+// namespace.
+//
+// TestNameIs is copyable.
+class TestNameIs {
+ public:
+ // Constructor.
+ //
+ // TestNameIs has NO default constructor.
+ explicit TestNameIs(const char* name)
+ : name_(name) {}
+
+ // Returns true iff the test name of test_info matches name_.
+ bool operator()(const TestInfo * test_info) const {
+ return test_info && test_info->name() == name_;
+ }
+
+ private:
+ std::string name_;
+};
+
+} // namespace
+
+namespace internal {
+
+// This method expands all parameterized tests registered with macros TEST_P
+// and INSTANTIATE_TEST_CASE_P into regular tests and registers those.
+// This will be done just once during the program runtime.
+void UnitTestImpl::RegisterParameterizedTests() {
+#if GTEST_HAS_PARAM_TEST
+ if (!parameterized_tests_registered_) {
+ parameterized_test_registry_.RegisterTests();
+ parameterized_tests_registered_ = true;
+ }
+#endif
+}
+
+} // namespace internal
+
+// Creates the test object, runs it, records its result, and then
+// deletes it.
+void TestInfo::Run() {
+ if (!should_run_) return;
+
+ // Tells UnitTest where to store test result.
+ internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+ impl->set_current_test_info(this);
+
+ TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
+
+ // Notifies the unit test event listeners that a test is about to start.
+ repeater->OnTestStart(*this);
+
+ const TimeInMillis start = internal::GetTimeInMillis();
+
+ impl->os_stack_trace_getter()->UponLeavingGTest();
+
+ // Creates the test object.
+ Test* const test = internal::HandleExceptionsInMethodIfSupported(
+ factory_, &internal::TestFactoryBase::CreateTest,
+ "the test fixture's constructor");
+
+ // Runs the test only if the test object was created and its
+ // constructor didn't generate a fatal failure.
+ if ((test != NULL) && !Test::HasFatalFailure()) {
+ // This doesn't throw as all user code that can throw are wrapped into
+ // exception handling code.
+ test->Run();
+ }
+
+ // Deletes the test object.
+ impl->os_stack_trace_getter()->UponLeavingGTest();
+ internal::HandleExceptionsInMethodIfSupported(
+ test, &Test::DeleteSelf_, "the test fixture's destructor");
+
+ result_.set_elapsed_time(internal::GetTimeInMillis() - start);
+
+ // Notifies the unit test event listener that a test has just finished.
+ repeater->OnTestEnd(*this);
+
+ // Tells UnitTest to stop associating assertion results to this
+ // test.
+ impl->set_current_test_info(NULL);
+}
+
+// class TestCase
+
+// Gets the number of successful tests in this test case.
+int TestCase::successful_test_count() const {
+ return CountIf(test_info_list_, TestPassed);
+}
+
+// Gets the number of failed tests in this test case.
+int TestCase::failed_test_count() const {
+ return CountIf(test_info_list_, TestFailed);
+}
+
+// Gets the number of disabled tests that will be reported in the XML report.
+int TestCase::reportable_disabled_test_count() const {
+ return CountIf(test_info_list_, TestReportableDisabled);
+}
+
+// Gets the number of disabled tests in this test case.
+int TestCase::disabled_test_count() const {
+ return CountIf(test_info_list_, TestDisabled);
+}
+
+// Gets the number of tests to be printed in the XML report.
+int TestCase::reportable_test_count() const {
+ return CountIf(test_info_list_, TestReportable);
+}
+
+// Get the number of tests in this test case that should run.
+int TestCase::test_to_run_count() const {
+ return CountIf(test_info_list_, ShouldRunTest);
+}
+
+// Gets the number of all tests.
+int TestCase::total_test_count() const {
+ return static_cast<int>(test_info_list_.size());
+}
+
+// Creates a TestCase with the given name.
+//
+// Arguments:
+//
+// name: name of the test case
+// a_type_param: the name of the test case's type parameter, or NULL if
+// this is not a typed or a type-parameterized test case.
+// set_up_tc: pointer to the function that sets up the test case
+// tear_down_tc: pointer to the function that tears down the test case
+TestCase::TestCase(const char* a_name, const char* a_type_param,
+ Test::SetUpTestCaseFunc set_up_tc,
+ Test::TearDownTestCaseFunc tear_down_tc)
+ : name_(a_name),
+ type_param_(a_type_param ? new std::string(a_type_param) : NULL),
+ set_up_tc_(set_up_tc),
+ tear_down_tc_(tear_down_tc),
+ should_run_(false),
+ elapsed_time_(0) {
+}
+
+// Destructor of TestCase.
+TestCase::~TestCase() {
+ // Deletes every Test in the collection.
+ ForEach(test_info_list_, internal::Delete<TestInfo>);
+}
+
+// Returns the i-th test among all the tests. i can range from 0 to
+// total_test_count() - 1. If i is not in that range, returns NULL.
+const TestInfo* TestCase::GetTestInfo(int i) const {
+ const int index = GetElementOr(test_indices_, i, -1);
+ return index < 0 ? NULL : test_info_list_[index];
+}
+
+// Returns the i-th test among all the tests. i can range from 0 to
+// total_test_count() - 1. If i is not in that range, returns NULL.
+TestInfo* TestCase::GetMutableTestInfo(int i) {
+ const int index = GetElementOr(test_indices_, i, -1);
+ return index < 0 ? NULL : test_info_list_[index];
+}
+
+// Adds a test to this test case. Will delete the test upon
+// destruction of the TestCase object.
+void TestCase::AddTestInfo(TestInfo * test_info) {
+ test_info_list_.push_back(test_info);
+ test_indices_.push_back(static_cast<int>(test_indices_.size()));
+}
+
+// Runs every test in this TestCase.
+void TestCase::Run() {
+ if (!should_run_) return;
+
+ internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
+ impl->set_current_test_case(this);
+
+ TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
+
+ repeater->OnTestCaseStart(*this);
+ impl->os_stack_trace_getter()->UponLeavingGTest();
+ internal::HandleExceptionsInMethodIfSupported(
+ this, &TestCase::RunSetUpTestCase, "SetUpTestCase()");
+
+ const internal::TimeInMillis start = internal::GetTimeInMillis();
+ for (int i = 0; i < total_test_count(); i++) {
+ GetMutableTestInfo(i)->Run();
+ }
+ elapsed_time_ = internal::GetTimeInMillis() - start;
+
+ impl->os_stack_trace_getter()->UponLeavingGTest();
+ internal::HandleExceptionsInMethodIfSupported(
+ this, &TestCase::RunTearDownTestCase, "TearDownTestCase()");
+
+ repeater->OnTestCaseEnd(*this);
+ impl->set_current_test_case(NULL);
+}
+
+// Clears the results of all tests in this test case.
+void TestCase::ClearResult() {
+ ad_hoc_test_result_.Clear();
+ ForEach(test_info_list_, TestInfo::ClearTestResult);
+}
+
+// Shuffles the tests in this test case.
+void TestCase::ShuffleTests(internal::Random* random) {
+ Shuffle(random, &test_indices_);
+}
+
+// Restores the test order to before the first shuffle.
+void TestCase::UnshuffleTests() {
+ for (size_t i = 0; i < test_indices_.size(); i++) {
+ test_indices_[i] = static_cast<int>(i);
+ }
+}
+
+// Formats a countable noun. Depending on its quantity, either the
+// singular form or the plural form is used. e.g.
+//
+// FormatCountableNoun(1, "formula", "formuli") returns "1 formula".
+// FormatCountableNoun(5, "book", "books") returns "5 books".
+static std::string FormatCountableNoun(int count,
+ const char * singular_form,
+ const char * plural_form) {
+ return internal::StreamableToString(count) + " " +
+ (count == 1 ? singular_form : plural_form);
+}
+
+// Formats the count of tests.
+static std::string FormatTestCount(int test_count) {
+ return FormatCountableNoun(test_count, "test", "tests");
+}
+
+// Formats the count of test cases.
+static std::string FormatTestCaseCount(int test_case_count) {
+ return FormatCountableNoun(test_case_count, "test case", "test cases");
+}
+
+// Converts a TestPartResult::Type enum to human-friendly string
+// representation. Both kNonFatalFailure and kFatalFailure are translated
+// to "Failure", as the user usually doesn't care about the difference
+// between the two when viewing the test result.
+static const char * TestPartResultTypeToString(TestPartResult::Type type) {
+ switch (type) {
+ case TestPartResult::kSuccess:
+ return "Success";
+
+ case TestPartResult::kNonFatalFailure:
+ case TestPartResult::kFatalFailure:
+#ifdef _MSC_VER
+ return "error: ";
+#else
+ return "Failure\n";
+#endif
+ default:
+ return "Unknown result type";
+ }
+}
+
+namespace internal {
+
+// Prints a TestPartResult to an std::string.
+static std::string PrintTestPartResultToString(
+ const TestPartResult& test_part_result) {
+ return (Message()
+ << internal::FormatFileLocation(test_part_result.file_name(),
+ test_part_result.line_number())
+ << " " << TestPartResultTypeToString(test_part_result.type())
+ << test_part_result.message()).GetString();
+}
+
+// Prints a TestPartResult.
+static void PrintTestPartResult(const TestPartResult& test_part_result) {
+ const std::string& result =
+ PrintTestPartResultToString(test_part_result);
+ printf("%s\n", result.c_str());
+ fflush(stdout);
+ // If the test program runs in Visual Studio or a debugger, the
+ // following statements add the test part result message to the Output
+ // window such that the user can double-click on it to jump to the
+ // corresponding source code location; otherwise they do nothing.
+#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
+ // We don't call OutputDebugString*() on Windows Mobile, as printing
+ // to stdout is done by OutputDebugString() there already - we don't
+ // want the same message printed twice.
+ ::OutputDebugStringA(result.c_str());
+ ::OutputDebugStringA("\n");
+#endif
+}
+
+// class PrettyUnitTestResultPrinter
+
+enum GTestColor {
+ COLOR_DEFAULT,
+ COLOR_RED,
+ COLOR_GREEN,
+ COLOR_YELLOW
+};
+
+#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
+
+// Returns the character attribute for the given color.
+WORD GetColorAttribute(GTestColor color) {
+ switch (color) {
+ case COLOR_RED: return FOREGROUND_RED;
+ case COLOR_GREEN: return FOREGROUND_GREEN;
+ case COLOR_YELLOW: return FOREGROUND_RED | FOREGROUND_GREEN;
+ default: return 0;
+ }
+}
+
+#else
+
+// Returns the ANSI color code for the given color. COLOR_DEFAULT is
+// an invalid input.
+const char* GetAnsiColorCode(GTestColor color) {
+ switch (color) {
+ case COLOR_RED: return "1";
+ case COLOR_GREEN: return "2";
+ case COLOR_YELLOW: return "3";
+ default: return NULL;
+ };
+}
+
+#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
+
+// Returns true iff Google Test should use colors in the output.
+bool ShouldUseColor(bool stdout_is_tty) {
+ const char* const gtest_color = GTEST_FLAG(color).c_str();
+
+ if (String::CaseInsensitiveCStringEquals(gtest_color, "auto")) {
+#if GTEST_OS_WINDOWS
+ // On Windows the TERM variable is usually not set, but the
+ // console there does support colors.
+ return stdout_is_tty;
+#else
+ // On non-Windows platforms, we rely on the TERM variable.
+ const char* const term = posix::GetEnv("TERM");
+ const bool term_supports_color =
+ String::CStringEquals(term, "xterm") ||
+ String::CStringEquals(term, "xterm-color") ||
+ String::CStringEquals(term, "xterm-256color") ||
+ String::CStringEquals(term, "screen") ||
+ String::CStringEquals(term, "screen-256color") ||
+ String::CStringEquals(term, "linux") ||
+ String::CStringEquals(term, "cygwin");
+ return stdout_is_tty && term_supports_color;
+#endif // GTEST_OS_WINDOWS
+ }
+
+ return String::CaseInsensitiveCStringEquals(gtest_color, "yes") ||
+ String::CaseInsensitiveCStringEquals(gtest_color, "true") ||
+ String::CaseInsensitiveCStringEquals(gtest_color, "t") ||
+ String::CStringEquals(gtest_color, "1");
+ // We take "yes", "true", "t", and "1" as meaning "yes". If the
+ // value is neither one of these nor "auto", we treat it as "no" to
+ // be conservative.
+}
+
+// Helpers for printing colored strings to stdout. Note that on Windows, we
+// cannot simply emit special characters and have the terminal change colors.
+// This routine must actually emit the characters rather than return a string
+// that would be colored when printed, as can be done on Linux.
+void ColoredPrintf(GTestColor color, const char* fmt, ...) {
+ va_list args;
+ va_start(args, fmt);
+
+#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS || GTEST_OS_IOS
+ const bool use_color = false;
+#else
+ static const bool in_color_mode =
+ ShouldUseColor(posix::IsATTY(posix::FileNo(stdout)) != 0);
+ const bool use_color = in_color_mode && (color != COLOR_DEFAULT);
+#endif // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS
+ // The '!= 0' comparison is necessary to satisfy MSVC 7.1.
+
+ if (!use_color) {
+ vprintf(fmt, args);
+ va_end(args);
+ return;
+ }
+
+#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
+ const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE);
+
+ // Gets the current text color.
+ CONSOLE_SCREEN_BUFFER_INFO buffer_info;
+ GetConsoleScreenBufferInfo(stdout_handle, &buffer_info);
+ const WORD old_color_attrs = buffer_info.wAttributes;
+
+ // We need to flush the stream buffers into the console before each
+ // SetConsoleTextAttribute call lest it affect the text that is already
+ // printed but has not yet reached the console.
+ fflush(stdout);
+ SetConsoleTextAttribute(stdout_handle,
+ GetColorAttribute(color) | FOREGROUND_INTENSITY);
+ vprintf(fmt, args);
+
+ fflush(stdout);
+ // Restores the text color.
+ SetConsoleTextAttribute(stdout_handle, old_color_attrs);
+#else
+ printf("\033[0;3%sm", GetAnsiColorCode(color));
+ vprintf(fmt, args);
+ printf("\033[m"); // Resets the terminal to default.
+#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
+ va_end(args);
+}
+
+// Text printed in Google Test's text output and --gunit_list_tests
+// output to label the type parameter and value parameter for a test.
+static const char kTypeParamLabel[] = "TypeParam";
+static const char kValueParamLabel[] = "GetParam()";
+
+void PrintFullTestCommentIfPresent(const TestInfo& test_info) {
+ const char* const type_param = test_info.type_param();
+ const char* const value_param = test_info.value_param();
+
+ if (type_param != NULL || value_param != NULL) {
+ printf(", where ");
+ if (type_param != NULL) {
+ printf("%s = %s", kTypeParamLabel, type_param);
+ if (value_param != NULL)
+ printf(" and ");
+ }
+ if (value_param != NULL) {
+ printf("%s = %s", kValueParamLabel, value_param);
+ }
+ }
+}
+
+// This class implements the TestEventListener interface.
+//
+// Class PrettyUnitTestResultPrinter is copyable.
+class PrettyUnitTestResultPrinter : public TestEventListener {
+ public:
+ PrettyUnitTestResultPrinter() {}
+ static void PrintTestName(const char * test_case, const char * test) {
+ printf("%s.%s", test_case, test);
+ }
+
+ // The following methods override what's in the TestEventListener class.
+ virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {}
+ virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration);
+ virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test);
+ virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {}
+ virtual void OnTestCaseStart(const TestCase& test_case);
+ virtual void OnTestStart(const TestInfo& test_info);
+ virtual void OnTestPartResult(const TestPartResult& result);
+ virtual void OnTestEnd(const TestInfo& test_info);
+ virtual void OnTestCaseEnd(const TestCase& test_case);
+ virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test);
+ virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {}
+ virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration);
+ virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {}
+
+ private:
+ static void PrintFailedTests(const UnitTest& unit_test);
+};
+
+ // Fired before each iteration of tests starts.
+void PrettyUnitTestResultPrinter::OnTestIterationStart(
+ const UnitTest& unit_test, int iteration) {
+ if (GTEST_FLAG(repeat) != 1)
+ printf("\nRepeating all tests (iteration %d) . . .\n\n", iteration + 1);
+
+ const char* const filter = GTEST_FLAG(filter).c_str();
+
+ // Prints the filter if it's not *. This reminds the user that some
+ // tests may be skipped.
+ if (!String::CStringEquals(filter, kUniversalFilter)) {
+ ColoredPrintf(COLOR_YELLOW,
+ "Note: %s filter = %s\n", GTEST_NAME_, filter);
+ }
+
+ if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) {
+ const Int32 shard_index = Int32FromEnvOrDie(kTestShardIndex, -1);
+ ColoredPrintf(COLOR_YELLOW,
+ "Note: This is test shard %d of %s.\n",
+ static_cast<int>(shard_index) + 1,
+ internal::posix::GetEnv(kTestTotalShards));
+ }
+
+ if (GTEST_FLAG(shuffle)) {
+ ColoredPrintf(COLOR_YELLOW,
+ "Note: Randomizing tests' orders with a seed of %d .\n",
+ unit_test.random_seed());
+ }
+
+ ColoredPrintf(COLOR_GREEN, "[==========] ");
+ printf("Running %s from %s.\n",
+ FormatTestCount(unit_test.test_to_run_count()).c_str(),
+ FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str());
+ fflush(stdout);
+}
+
+void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart(
+ const UnitTest& /*unit_test*/) {
+ ColoredPrintf(COLOR_GREEN, "[----------] ");
+ printf("Global test environment set-up.\n");
+ fflush(stdout);
+}
+
+void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) {
+ const std::string counts =
+ FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
+ ColoredPrintf(COLOR_GREEN, "[----------] ");
+ printf("%s from %s", counts.c_str(), test_case.name());
+ if (test_case.type_param() == NULL) {
+ printf("\n");
+ } else {
+ printf(", where %s = %s\n", kTypeParamLabel, test_case.type_param());
+ }
+ fflush(stdout);
+}
+
+void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) {
+ ColoredPrintf(COLOR_GREEN, "[ RUN ] ");
+ PrintTestName(test_info.test_case_name(), test_info.name());
+ printf("\n");
+ fflush(stdout);
+}
+
+// Called after an assertion failure.
+void PrettyUnitTestResultPrinter::OnTestPartResult(
+ const TestPartResult& result) {
+ // If the test part succeeded, we don't need to do anything.
+ if (result.type() == TestPartResult::kSuccess)
+ return;
+
+ // Print failure message from the assertion (e.g. expected this and got that).
+ PrintTestPartResult(result);
+ fflush(stdout);
+}
+
+void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) {
+ if (test_info.result()->Passed()) {
+ ColoredPrintf(COLOR_GREEN, "[ OK ] ");
+ } else {
+ ColoredPrintf(COLOR_RED, "[ FAILED ] ");
+ }
+ PrintTestName(test_info.test_case_name(), test_info.name());
+ if (test_info.result()->Failed())
+ PrintFullTestCommentIfPresent(test_info);
+
+ if (GTEST_FLAG(print_time)) {
+ printf(" (%s ms)\n", internal::StreamableToString(
+ test_info.result()->elapsed_time()).c_str());
+ } else {
+ printf("\n");
+ }
+ fflush(stdout);
+}
+
+void PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestCase& test_case) {
+ if (!GTEST_FLAG(print_time)) return;
+
+ const std::string counts =
+ FormatCountableNoun(test_case.test_to_run_count(), "test", "tests");
+ ColoredPrintf(COLOR_GREEN, "[----------] ");
+ printf("%s from %s (%s ms total)\n\n",
+ counts.c_str(), test_case.name(),
+ internal::StreamableToString(test_case.elapsed_time()).c_str());
+ fflush(stdout);
+}
+
+void PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart(
+ const UnitTest& /*unit_test*/) {
+ ColoredPrintf(COLOR_GREEN, "[----------] ");
+ printf("Global test environment tear-down\n");
+ fflush(stdout);
+}
+
+// Internal helper for printing the list of failed tests.
+void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) {
+ const int failed_test_count = unit_test.failed_test_count();
+ if (failed_test_count == 0) {
+ return;
+ }
+
+ for (int i = 0; i < unit_test.total_test_case_count(); ++i) {
+ const TestCase& test_case = *unit_test.GetTestCase(i);
+ if (!test_case.should_run() || (test_case.failed_test_count() == 0)) {
+ continue;
+ }
+ for (int j = 0; j < test_case.total_test_count(); ++j) {
+ const TestInfo& test_info = *test_case.GetTestInfo(j);
+ if (!test_info.should_run() || test_info.result()->Passed()) {
+ continue;
+ }
+ ColoredPrintf(COLOR_RED, "[ FAILED ] ");
+ printf("%s.%s", test_case.name(), test_info.name());
+ PrintFullTestCommentIfPresent(test_info);
+ printf("\n");
+ }
+ }
+}
+
+void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
+ int /*iteration*/) {
+ ColoredPrintf(COLOR_GREEN, "[==========] ");
+ printf("%s from %s ran.",
+ FormatTestCount(unit_test.test_to_run_count()).c_str(),
+ FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str());
+ if (GTEST_FLAG(print_time)) {
+ printf(" (%s ms total)",
+ internal::StreamableToString(unit_test.elapsed_time()).c_str());
+ }
+ printf("\n");
+ ColoredPrintf(COLOR_GREEN, "[ PASSED ] ");
+ printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str());
+
+ int num_failures = unit_test.failed_test_count();
+ if (!unit_test.Passed()) {
+ const int failed_test_count = unit_test.failed_test_count();
+ ColoredPrintf(COLOR_RED, "[ FAILED ] ");
+ printf("%s, listed below:\n", FormatTestCount(failed_test_count).c_str());
+ PrintFailedTests(unit_test);
+ printf("\n%2d FAILED %s\n", num_failures,
+ num_failures == 1 ? "TEST" : "TESTS");
+ }
+
+ int num_disabled = unit_test.reportable_disabled_test_count();
+ if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) {
+ if (!num_failures) {
+ printf("\n"); // Add a spacer if no FAILURE banner is displayed.
+ }
+ ColoredPrintf(COLOR_YELLOW,
+ " YOU HAVE %d DISABLED %s\n\n",
+ num_disabled,
+ num_disabled == 1 ? "TEST" : "TESTS");
+ }
+ // Ensure that Google Test output is printed before, e.g., heapchecker output.
+ fflush(stdout);
+}
+
+// End PrettyUnitTestResultPrinter
+
+// class TestEventRepeater
+//
+// This class forwards events to other event listeners.
+class TestEventRepeater : public TestEventListener {
+ public:
+ TestEventRepeater() : forwarding_enabled_(true) {}
+ virtual ~TestEventRepeater();
+ void Append(TestEventListener *listener);
+ TestEventListener* Release(TestEventListener* listener);
+
+ // Controls whether events will be forwarded to listeners_. Set to false
+ // in death test child processes.
+ bool forwarding_enabled() const { return forwarding_enabled_; }
+ void set_forwarding_enabled(bool enable) { forwarding_enabled_ = enable; }
+
+ virtual void OnTestProgramStart(const UnitTest& unit_test);
+ virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration);
+ virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test);
+ virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test);
+ virtual void OnTestCaseStart(const TestCase& test_case);
+ virtual void OnTestStart(const TestInfo& test_info);
+ virtual void OnTestPartResult(const TestPartResult& result);
+ virtual void OnTestEnd(const TestInfo& test_info);
+ virtual void OnTestCaseEnd(const TestCase& test_case);
+ virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test);
+ virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test);
+ virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration);
+ virtual void OnTestProgramEnd(const UnitTest& unit_test);
+
+ private:
+ // Controls whether events will be forwarded to listeners_. Set to false
+ // in death test child processes.
+ bool forwarding_enabled_;
+ // The list of listeners that receive events.
+ std::vector<TestEventListener*> listeners_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventRepeater);
+};
+
+TestEventRepeater::~TestEventRepeater() {
+ ForEach(listeners_, Delete<TestEventListener>);
+}
+
+void TestEventRepeater::Append(TestEventListener *listener) {
+ listeners_.push_back(listener);
+}
+
+// TODO(vladl@google.com): Factor the search functionality into Vector::Find.
+TestEventListener* TestEventRepeater::Release(TestEventListener *listener) {
+ for (size_t i = 0; i < listeners_.size(); ++i) {
+ if (listeners_[i] == listener) {
+ listeners_.erase(listeners_.begin() + i);
+ return listener;
+ }
+ }
+
+ return NULL;
+}
+
+// Since most methods are very similar, use macros to reduce boilerplate.
+// This defines a member that forwards the call to all listeners.
+#define GTEST_REPEATER_METHOD_(Name, Type) \
+void TestEventRepeater::Name(const Type& parameter) { \
+ if (forwarding_enabled_) { \
+ for (size_t i = 0; i < listeners_.size(); i++) { \
+ listeners_[i]->Name(parameter); \
+ } \
+ } \
+}
+// This defines a member that forwards the call to all listeners in reverse
+// order.
+#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type) \
+void TestEventRepeater::Name(const Type& parameter) { \
+ if (forwarding_enabled_) { \
+ for (int i = static_cast<int>(listeners_.size()) - 1; i >= 0; i--) { \
+ listeners_[i]->Name(parameter); \
+ } \
+ } \
+}
+
+GTEST_REPEATER_METHOD_(OnTestProgramStart, UnitTest)
+GTEST_REPEATER_METHOD_(OnEnvironmentsSetUpStart, UnitTest)
+GTEST_REPEATER_METHOD_(OnTestCaseStart, TestCase)
+GTEST_REPEATER_METHOD_(OnTestStart, TestInfo)
+GTEST_REPEATER_METHOD_(OnTestPartResult, TestPartResult)
+GTEST_REPEATER_METHOD_(OnEnvironmentsTearDownStart, UnitTest)
+GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsSetUpEnd, UnitTest)
+GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsTearDownEnd, UnitTest)
+GTEST_REVERSE_REPEATER_METHOD_(OnTestEnd, TestInfo)
+GTEST_REVERSE_REPEATER_METHOD_(OnTestCaseEnd, TestCase)
+GTEST_REVERSE_REPEATER_METHOD_(OnTestProgramEnd, UnitTest)
+
+#undef GTEST_REPEATER_METHOD_
+#undef GTEST_REVERSE_REPEATER_METHOD_
+
+void TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test,
+ int iteration) {
+ if (forwarding_enabled_) {
+ for (size_t i = 0; i < listeners_.size(); i++) {
+ listeners_[i]->OnTestIterationStart(unit_test, iteration);
+ }
+ }
+}
+
+void TestEventRepeater::OnTestIterationEnd(const UnitTest& unit_test,
+ int iteration) {
+ if (forwarding_enabled_) {
+ for (int i = static_cast<int>(listeners_.size()) - 1; i >= 0; i--) {
+ listeners_[i]->OnTestIterationEnd(unit_test, iteration);
+ }
+ }
+}
+
+// End TestEventRepeater
+
+// This class generates an XML output file.
+class XmlUnitTestResultPrinter : public EmptyTestEventListener {
+ public:
+ explicit XmlUnitTestResultPrinter(const char* output_file);
+
+ virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration);
+
+ private:
+ // Is c a whitespace character that is normalized to a space character
+ // when it appears in an XML attribute value?
+ static bool IsNormalizableWhitespace(char c) {
+ return c == 0x9 || c == 0xA || c == 0xD;
+ }
+
+ // May c appear in a well-formed XML document?
+ static bool IsValidXmlCharacter(char c) {
+ return IsNormalizableWhitespace(c) || c >= 0x20;
+ }
+
+ // Returns an XML-escaped copy of the input string str. If
+ // is_attribute is true, the text is meant to appear as an attribute
+ // value, and normalizable whitespace is preserved by replacing it
+ // with character references.
+ static std::string EscapeXml(const std::string& str, bool is_attribute);
+
+ // Returns the given string with all characters invalid in XML removed.
+ static std::string RemoveInvalidXmlCharacters(const std::string& str);
+
+ // Convenience wrapper around EscapeXml when str is an attribute value.
+ static std::string EscapeXmlAttribute(const std::string& str) {
+ return EscapeXml(str, true);
+ }
+
+ // Convenience wrapper around EscapeXml when str is not an attribute value.
+ static std::string EscapeXmlText(const char* str) {
+ return EscapeXml(str, false);
+ }
+
+ // Verifies that the given attribute belongs to the given element and
+ // streams the attribute as XML.
+ static void OutputXmlAttribute(std::ostream* stream,
+ const std::string& element_name,
+ const std::string& name,
+ const std::string& value);
+
+ // Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
+ static void OutputXmlCDataSection(::std::ostream* stream, const char* data);
+
+ // Streams an XML representation of a TestInfo object.
+ static void OutputXmlTestInfo(::std::ostream* stream,
+ const char* test_case_name,
+ const TestInfo& test_info);
+
+ // Prints an XML representation of a TestCase object
+ static void PrintXmlTestCase(::std::ostream* stream,
+ const TestCase& test_case);
+
+ // Prints an XML summary of unit_test to output stream out.
+ static void PrintXmlUnitTest(::std::ostream* stream,
+ const UnitTest& unit_test);
+
+ // Produces a string representing the test properties in a result as space
+ // delimited XML attributes based on the property key="value" pairs.
+ // When the std::string is not empty, it includes a space at the beginning,
+ // to delimit this attribute from prior attributes.
+ static std::string TestPropertiesAsXmlAttributes(const TestResult& result);
+
+ // The output file.
+ const std::string output_file_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(XmlUnitTestResultPrinter);
+};
+
+// Creates a new XmlUnitTestResultPrinter.
+XmlUnitTestResultPrinter::XmlUnitTestResultPrinter(const char* output_file)
+ : output_file_(output_file) {
+ if (output_file_.c_str() == NULL || output_file_.empty()) {
+ fprintf(stderr, "XML output file may not be null\n");
+ fflush(stderr);
+ exit(EXIT_FAILURE);
+ }
+}
+
+// Called after the unit test ends.
+void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
+ int /*iteration*/) {
+ FILE* xmlout = NULL;
+ FilePath output_file(output_file_);
+ FilePath output_dir(output_file.RemoveFileName());
+
+ if (output_dir.CreateDirectoriesRecursively()) {
+ xmlout = posix::FOpen(output_file_.c_str(), "w");
+ }
+ if (xmlout == NULL) {
+ // TODO(wan): report the reason of the failure.
+ //
+ // We don't do it for now as:
+ //
+ // 1. There is no urgent need for it.
+ // 2. It's a bit involved to make the errno variable thread-safe on
+ // all three operating systems (Linux, Windows, and Mac OS).
+ // 3. To interpret the meaning of errno in a thread-safe way,
+ // we need the strerror_r() function, which is not available on
+ // Windows.
+ fprintf(stderr,
+ "Unable to open file \"%s\"\n",
+ output_file_.c_str());
+ fflush(stderr);
+ exit(EXIT_FAILURE);
+ }
+ std::stringstream stream;
+ PrintXmlUnitTest(&stream, unit_test);
+ fprintf(xmlout, "%s", StringStreamToString(&stream).c_str());
+ fclose(xmlout);
+}
+
+// Returns an XML-escaped copy of the input string str. If is_attribute
+// is true, the text is meant to appear as an attribute value, and
+// normalizable whitespace is preserved by replacing it with character
+// references.
+//
+// Invalid XML characters in str, if any, are stripped from the output.
+// It is expected that most, if not all, of the text processed by this
+// module will consist of ordinary English text.
+// If this module is ever modified to produce version 1.1 XML output,
+// most invalid characters can be retained using character references.
+// TODO(wan): It might be nice to have a minimally invasive, human-readable
+// escaping scheme for invalid characters, rather than dropping them.
+std::string XmlUnitTestResultPrinter::EscapeXml(
+ const std::string& str, bool is_attribute) {
+ Message m;
+
+ for (size_t i = 0; i < str.size(); ++i) {
+ const char ch = str[i];
+ switch (ch) {
+ case '<':
+ m << "&lt;";
+ break;
+ case '>':
+ m << "&gt;";
+ break;
+ case '&':
+ m << "&amp;";
+ break;
+ case '\'':
+ if (is_attribute)
+ m << "&apos;";
+ else
+ m << '\'';
+ break;
+ case '"':
+ if (is_attribute)
+ m << "&quot;";
+ else
+ m << '"';
+ break;
+ default:
+ if (IsValidXmlCharacter(ch)) {
+ if (is_attribute && IsNormalizableWhitespace(ch))
+ m << "&#x" << String::FormatByte(static_cast<unsigned char>(ch))
+ << ";";
+ else
+ m << ch;
+ }
+ break;
+ }
+ }
+
+ return m.GetString();
+}
+
+// Returns the given string with all characters invalid in XML removed.
+// Currently invalid characters are dropped from the string. An
+// alternative is to replace them with certain characters such as . or ?.
+std::string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(
+ const std::string& str) {
+ std::string output;
+ output.reserve(str.size());
+ for (std::string::const_iterator it = str.begin(); it != str.end(); ++it)
+ if (IsValidXmlCharacter(*it))
+ output.push_back(*it);
+
+ return output;
+}
+
+// The following routines generate an XML representation of a UnitTest
+// object.
+//
+// This is how Google Test concepts map to the DTD:
+//
+// <testsuites name="AllTests"> <-- corresponds to a UnitTest object
+// <testsuite name="testcase-name"> <-- corresponds to a TestCase object
+// <testcase name="test-name"> <-- corresponds to a TestInfo object
+// <failure message="...">...</failure>
+// <failure message="...">...</failure>
+// <failure message="...">...</failure>
+// <-- individual assertion failures
+// </testcase>
+// </testsuite>
+// </testsuites>
+
+// Formats the given time in milliseconds as seconds.
+std::string FormatTimeInMillisAsSeconds(TimeInMillis ms) {
+ ::std::stringstream ss;
+ ss << ms/1000.0;
+ return ss.str();
+}
+
+// Converts the given epoch time in milliseconds to a date string in the ISO
+// 8601 format, without the timezone information.
+std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms) {
+ // Using non-reentrant version as localtime_r is not portable.
+ time_t seconds = static_cast<time_t>(ms / 1000);
+#ifdef _MSC_VER
+# pragma warning(push) // Saves the current warning state.
+# pragma warning(disable:4996) // Temporarily disables warning 4996
+ // (function or variable may be unsafe).
+ const struct tm* const time_struct = localtime(&seconds); // NOLINT
+# pragma warning(pop) // Restores the warning state again.
+#else
+ const struct tm* const time_struct = localtime(&seconds); // NOLINT
+#endif
+ if (time_struct == NULL)
+ return ""; // Invalid ms value
+
+ // YYYY-MM-DDThh:mm:ss
+ return StreamableToString(time_struct->tm_year + 1900) + "-" +
+ String::FormatIntWidth2(time_struct->tm_mon + 1) + "-" +
+ String::FormatIntWidth2(time_struct->tm_mday) + "T" +
+ String::FormatIntWidth2(time_struct->tm_hour) + ":" +
+ String::FormatIntWidth2(time_struct->tm_min) + ":" +
+ String::FormatIntWidth2(time_struct->tm_sec);
+}
+
+// Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
+void XmlUnitTestResultPrinter::OutputXmlCDataSection(::std::ostream* stream,
+ const char* data) {
+ const char* segment = data;
+ *stream << "<![CDATA[";
+ for (;;) {
+ const char* const next_segment = strstr(segment, "]]>");
+ if (next_segment != NULL) {
+ stream->write(
+ segment, static_cast<std::streamsize>(next_segment - segment));
+ *stream << "]]>]]&gt;<![CDATA[";
+ segment = next_segment + strlen("]]>");
+ } else {
+ *stream << segment;
+ break;
+ }
+ }
+ *stream << "]]>";
+}
+
+void XmlUnitTestResultPrinter::OutputXmlAttribute(
+ std::ostream* stream,
+ const std::string& element_name,
+ const std::string& name,
+ const std::string& value) {
+ const std::vector<std::string>& allowed_names =
+ GetReservedAttributesForElement(element_name);
+
+ GTEST_CHECK_(std::find(allowed_names.begin(), allowed_names.end(), name) !=
+ allowed_names.end())
+ << "Attribute " << name << " is not allowed for element <" << element_name
+ << ">.";
+
+ *stream << " " << name << "=\"" << EscapeXmlAttribute(value) << "\"";
+}
+
+// Prints an XML representation of a TestInfo object.
+// TODO(wan): There is also value in printing properties with the plain printer.
+void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream,
+ const char* test_case_name,
+ const TestInfo& test_info) {
+ const TestResult& result = *test_info.result();
+ const std::string kTestcase = "testcase";
+
+ *stream << " <testcase";
+ OutputXmlAttribute(stream, kTestcase, "name", test_info.name());
+
+ if (test_info.value_param() != NULL) {
+ OutputXmlAttribute(stream, kTestcase, "value_param",
+ test_info.value_param());
+ }
+ if (test_info.type_param() != NULL) {
+ OutputXmlAttribute(stream, kTestcase, "type_param", test_info.type_param());
+ }
+
+ OutputXmlAttribute(stream, kTestcase, "status",
+ test_info.should_run() ? "run" : "notrun");
+ OutputXmlAttribute(stream, kTestcase, "time",
+ FormatTimeInMillisAsSeconds(result.elapsed_time()));
+ OutputXmlAttribute(stream, kTestcase, "classname", test_case_name);
+ *stream << TestPropertiesAsXmlAttributes(result);
+
+ int failures = 0;
+ for (int i = 0; i < result.total_part_count(); ++i) {
+ const TestPartResult& part = result.GetTestPartResult(i);
+ if (part.failed()) {
+ if (++failures == 1) {
+ *stream << ">\n";
+ }
+ const string location = internal::FormatCompilerIndependentFileLocation(
+ part.file_name(), part.line_number());
+ const string summary = location + "\n" + part.summary();
+ *stream << " <failure message=\""
+ << EscapeXmlAttribute(summary.c_str())
+ << "\" type=\"\">";
+ const string detail = location + "\n" + part.message();
+ OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str());
+ *stream << "</failure>\n";
+ }
+ }
+
+ if (failures == 0)
+ *stream << " />\n";
+ else
+ *stream << " </testcase>\n";
+}
+
+// Prints an XML representation of a TestCase object
+void XmlUnitTestResultPrinter::PrintXmlTestCase(std::ostream* stream,
+ const TestCase& test_case) {
+ const std::string kTestsuite = "testsuite";
+ *stream << " <" << kTestsuite;
+ OutputXmlAttribute(stream, kTestsuite, "name", test_case.name());
+ OutputXmlAttribute(stream, kTestsuite, "tests",
+ StreamableToString(test_case.reportable_test_count()));
+ OutputXmlAttribute(stream, kTestsuite, "failures",
+ StreamableToString(test_case.failed_test_count()));
+ OutputXmlAttribute(
+ stream, kTestsuite, "disabled",
+ StreamableToString(test_case.reportable_disabled_test_count()));
+ OutputXmlAttribute(stream, kTestsuite, "errors", "0");
+ OutputXmlAttribute(stream, kTestsuite, "time",
+ FormatTimeInMillisAsSeconds(test_case.elapsed_time()));
+ *stream << TestPropertiesAsXmlAttributes(test_case.ad_hoc_test_result())
+ << ">\n";
+
+ for (int i = 0; i < test_case.total_test_count(); ++i) {
+ if (test_case.GetTestInfo(i)->is_reportable())
+ OutputXmlTestInfo(stream, test_case.name(), *test_case.GetTestInfo(i));
+ }
+ *stream << " </" << kTestsuite << ">\n";
+}
+
+// Prints an XML summary of unit_test to output stream out.
+void XmlUnitTestResultPrinter::PrintXmlUnitTest(std::ostream* stream,
+ const UnitTest& unit_test) {
+ const std::string kTestsuites = "testsuites";
+
+ *stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ *stream << "<" << kTestsuites;
+
+ OutputXmlAttribute(stream, kTestsuites, "tests",
+ StreamableToString(unit_test.reportable_test_count()));
+ OutputXmlAttribute(stream, kTestsuites, "failures",
+ StreamableToString(unit_test.failed_test_count()));
+ OutputXmlAttribute(
+ stream, kTestsuites, "disabled",
+ StreamableToString(unit_test.reportable_disabled_test_count()));
+ OutputXmlAttribute(stream, kTestsuites, "errors", "0");
+ OutputXmlAttribute(
+ stream, kTestsuites, "timestamp",
+ FormatEpochTimeInMillisAsIso8601(unit_test.start_timestamp()));
+ OutputXmlAttribute(stream, kTestsuites, "time",
+ FormatTimeInMillisAsSeconds(unit_test.elapsed_time()));
+
+ if (GTEST_FLAG(shuffle)) {
+ OutputXmlAttribute(stream, kTestsuites, "random_seed",
+ StreamableToString(unit_test.random_seed()));
+ }
+
+ *stream << TestPropertiesAsXmlAttributes(unit_test.ad_hoc_test_result());
+
+ OutputXmlAttribute(stream, kTestsuites, "name", "AllTests");
+ *stream << ">\n";
+
+ for (int i = 0; i < unit_test.total_test_case_count(); ++i) {
+ if (unit_test.GetTestCase(i)->reportable_test_count() > 0)
+ PrintXmlTestCase(stream, *unit_test.GetTestCase(i));
+ }
+ *stream << "</" << kTestsuites << ">\n";
+}
+
+// Produces a string representing the test properties in a result as space
+// delimited XML attributes based on the property key="value" pairs.
+std::string XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes(
+ const TestResult& result) {
+ Message attributes;
+ for (int i = 0; i < result.test_property_count(); ++i) {
+ const TestProperty& property = result.GetTestProperty(i);
+ attributes << " " << property.key() << "="
+ << "\"" << EscapeXmlAttribute(property.value()) << "\"";
+ }
+ return attributes.GetString();
+}
+
+// End XmlUnitTestResultPrinter
+
+#if GTEST_CAN_STREAM_RESULTS_
+
+// Checks if str contains '=', '&', '%' or '\n' characters. If yes,
+// replaces them by "%xx" where xx is their hexadecimal value. For
+// example, replaces "=" with "%3D". This algorithm is O(strlen(str))
+// in both time and space -- important as the input str may contain an
+// arbitrarily long test failure message and stack trace.
+string StreamingListener::UrlEncode(const char* str) {
+ string result;
+ result.reserve(strlen(str) + 1);
+ for (char ch = *str; ch != '\0'; ch = *++str) {
+ switch (ch) {
+ case '%':
+ case '=':
+ case '&':
+ case '\n':
+ result.append("%" + String::FormatByte(static_cast<unsigned char>(ch)));
+ break;
+ default:
+ result.push_back(ch);
+ break;
+ }
+ }
+ return result;
+}
+
+void StreamingListener::SocketWriter::MakeConnection() {
+ GTEST_CHECK_(sockfd_ == -1)
+ << "MakeConnection() can't be called when there is already a connection.";
+
+ addrinfo hints;
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = AF_UNSPEC; // To allow both IPv4 and IPv6 addresses.
+ hints.ai_socktype = SOCK_STREAM;
+ addrinfo* servinfo = NULL;
+
+ // Use the getaddrinfo() to get a linked list of IP addresses for
+ // the given host name.
+ const int error_num = getaddrinfo(
+ host_name_.c_str(), port_num_.c_str(), &hints, &servinfo);
+ if (error_num != 0) {
+ GTEST_LOG_(WARNING) << "stream_result_to: getaddrinfo() failed: "
+ << gai_strerror(error_num);
+ }
+
+ // Loop through all the results and connect to the first we can.
+ for (addrinfo* cur_addr = servinfo; sockfd_ == -1 && cur_addr != NULL;
+ cur_addr = cur_addr->ai_next) {
+ sockfd_ = socket(
+ cur_addr->ai_family, cur_addr->ai_socktype, cur_addr->ai_protocol);
+ if (sockfd_ != -1) {
+ // Connect the client socket to the server socket.
+ if (connect(sockfd_, cur_addr->ai_addr, cur_addr->ai_addrlen) == -1) {
+ close(sockfd_);
+ sockfd_ = -1;
+ }
+ }
+ }
+
+ freeaddrinfo(servinfo); // all done with this structure
+
+ if (sockfd_ == -1) {
+ GTEST_LOG_(WARNING) << "stream_result_to: failed to connect to "
+ << host_name_ << ":" << port_num_;
+ }
+}
+
+// End of class Streaming Listener
+#endif // GTEST_CAN_STREAM_RESULTS__
+
+// Class ScopedTrace
+
+// Pushes the given source file location and message onto a per-thread
+// trace stack maintained by Google Test.
+ScopedTrace::ScopedTrace(const char* file, int line, const Message& message)
+ GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) {
+ TraceInfo trace;
+ trace.file = file;
+ trace.line = line;
+ trace.message = message.GetString();
+
+ UnitTest::GetInstance()->PushGTestTrace(trace);
+}
+
+// Pops the info pushed by the c'tor.
+ScopedTrace::~ScopedTrace()
+ GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) {
+ UnitTest::GetInstance()->PopGTestTrace();
+}
+
+
+// class OsStackTraceGetter
+
+// Returns the current OS stack trace as an std::string. Parameters:
+//
+// max_depth - the maximum number of stack frames to be included
+// in the trace.
+// skip_count - the number of top frames to be skipped; doesn't count
+// against max_depth.
+//
+string OsStackTraceGetter::CurrentStackTrace(int /* max_depth */,
+ int /* skip_count */)
+ GTEST_LOCK_EXCLUDED_(mutex_) {
+ return "";
+}
+
+void OsStackTraceGetter::UponLeavingGTest()
+ GTEST_LOCK_EXCLUDED_(mutex_) {
+}
+
+const char* const
+OsStackTraceGetter::kElidedFramesMarker =
+ "... " GTEST_NAME_ " internal frames ...";
+
+// A helper class that creates the premature-exit file in its
+// constructor and deletes the file in its destructor.
+class ScopedPrematureExitFile {
+ public:
+ explicit ScopedPrematureExitFile(const char* premature_exit_filepath)
+ : premature_exit_filepath_(premature_exit_filepath) {
+ // If a path to the premature-exit file is specified...
+ if (premature_exit_filepath != NULL && *premature_exit_filepath != '\0') {
+ // create the file with a single "0" character in it. I/O
+ // errors are ignored as there's nothing better we can do and we
+ // don't want to fail the test because of this.
+ FILE* pfile = posix::FOpen(premature_exit_filepath, "w");
+ fwrite("0", 1, 1, pfile);
+ fclose(pfile);
+ }
+ }
+
+ ~ScopedPrematureExitFile() {
+ if (premature_exit_filepath_ != NULL && *premature_exit_filepath_ != '\0') {
+ remove(premature_exit_filepath_);
+ }
+ }
+
+ private:
+ const char* const premature_exit_filepath_;
+
+ GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedPrematureExitFile);
+};
+
+} // namespace internal
+
+// class TestEventListeners
+
+TestEventListeners::TestEventListeners()
+ : repeater_(new internal::TestEventRepeater()),
+ default_result_printer_(NULL),
+ default_xml_generator_(NULL) {
+}
+
+TestEventListeners::~TestEventListeners() { delete repeater_; }
+
+// Returns the standard listener responsible for the default console
+// output. Can be removed from the listeners list to shut down default
+// console output. Note that removing this object from the listener list
+// with Release transfers its ownership to the user.
+void TestEventListeners::Append(TestEventListener* listener) {
+ repeater_->Append(listener);
+}
+
+// Removes the given event listener from the list and returns it. It then
+// becomes the caller's responsibility to delete the listener. Returns
+// NULL if the listener is not found in the list.
+TestEventListener* TestEventListeners::Release(TestEventListener* listener) {
+ if (listener == default_result_printer_)
+ default_result_printer_ = NULL;
+ else if (listener == default_xml_generator_)
+ default_xml_generator_ = NULL;
+ return repeater_->Release(listener);
+}
+
+// Returns repeater that broadcasts the TestEventListener events to all
+// subscribers.
+TestEventListener* TestEventListeners::repeater() { return repeater_; }
+
+// Sets the default_result_printer attribute to the provided listener.
+// The listener is also added to the listener list and previous
+// default_result_printer is removed from it and deleted. The listener can
+// also be NULL in which case it will not be added to the list. Does
+// nothing if the previous and the current listener objects are the same.
+void TestEventListeners::SetDefaultResultPrinter(TestEventListener* listener) {
+ if (default_result_printer_ != listener) {
+ // It is an error to pass this method a listener that is already in the
+ // list.
+ delete Release(default_result_printer_);
+ default_result_printer_ = listener;
+ if (listener != NULL)
+ Append(listener);
+ }
+}
+
+// Sets the default_xml_generator attribute to the provided listener. The
+// listener is also added to the listener list and previous
+// default_xml_generator is removed from it and deleted. The listener can
+// also be NULL in which case it will not be added to the list. Does
+// nothing if the previous and the current listener objects are the same.
+void TestEventListeners::SetDefaultXmlGenerator(TestEventListener* listener) {
+ if (default_xml_generator_ != listener) {
+ // It is an error to pass this method a listener that is already in the
+ // list.
+ delete Release(default_xml_generator_);
+ default_xml_generator_ = listener;
+ if (listener != NULL)
+ Append(listener);
+ }
+}
+
+// Controls whether events will be forwarded by the repeater to the
+// listeners in the list.
+bool TestEventListeners::EventForwardingEnabled() const {
+ return repeater_->forwarding_enabled();
+}
+
+void TestEventListeners::SuppressEventForwarding() {
+ repeater_->set_forwarding_enabled(false);
+}
+
+// class UnitTest
+
+// Gets the singleton UnitTest object. The first time this method is
+// called, a UnitTest object is constructed and returned. Consecutive
+// calls will return the same object.
+//
+// We don't protect this under mutex_ as a user is not supposed to
+// call this before main() starts, from which point on the return
+// value will never change.
+UnitTest* UnitTest::GetInstance() {
+ // When compiled with MSVC 7.1 in optimized mode, destroying the
+ // UnitTest object upon exiting the program messes up the exit code,
+ // causing successful tests to appear failed. We have to use a
+ // different implementation in this case to bypass the compiler bug.
+ // This implementation makes the compiler happy, at the cost of
+ // leaking the UnitTest object.
+
+ // CodeGear C++Builder insists on a public destructor for the
+ // default implementation. Use this implementation to keep good OO
+ // design with private destructor.
+
+#if (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__)
+ static UnitTest* const instance = new UnitTest;
+ return instance;
+#else
+ static UnitTest instance;
+ return &instance;
+#endif // (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__)
+}
+
+// Gets the number of successful test cases.
+int UnitTest::successful_test_case_count() const {
+ return impl()->successful_test_case_count();
+}
+
+// Gets the number of failed test cases.
+int UnitTest::failed_test_case_count() const {
+ return impl()->failed_test_case_count();
+}
+
+// Gets the number of all test cases.
+int UnitTest::total_test_case_count() const {
+ return impl()->total_test_case_count();
+}
+
+// Gets the number of all test cases that contain at least one test
+// that should run.
+int UnitTest::test_case_to_run_count() const {
+ return impl()->test_case_to_run_count();
+}
+
+// Gets the number of successful tests.
+int UnitTest::successful_test_count() const {
+ return impl()->successful_test_count();
+}
+
+// Gets the number of failed tests.
+int UnitTest::failed_test_count() const { return impl()->failed_test_count(); }
+
+// Gets the number of disabled tests that will be reported in the XML report.
+int UnitTest::reportable_disabled_test_count() const {
+ return impl()->reportable_disabled_test_count();
+}
+
+// Gets the number of disabled tests.
+int UnitTest::disabled_test_count() const {
+ return impl()->disabled_test_count();
+}
+
+// Gets the number of tests to be printed in the XML report.
+int UnitTest::reportable_test_count() const {
+ return impl()->reportable_test_count();
+}
+
+// Gets the number of all tests.
+int UnitTest::total_test_count() const { return impl()->total_test_count(); }
+
+// Gets the number of tests that should run.
+int UnitTest::test_to_run_count() const { return impl()->test_to_run_count(); }
+
+// Gets the time of the test program start, in ms from the start of the
+// UNIX epoch.
+internal::TimeInMillis UnitTest::start_timestamp() const {
+ return impl()->start_timestamp();
+}
+
+// Gets the elapsed time, in milliseconds.
+internal::TimeInMillis UnitTest::elapsed_time() const {
+ return impl()->elapsed_time();
+}
+
+// Returns true iff the unit test passed (i.e. all test cases passed).
+bool UnitTest::Passed() const { return impl()->Passed(); }
+
+// Returns true iff the unit test failed (i.e. some test case failed
+// or something outside of all tests failed).
+bool UnitTest::Failed() const { return impl()->Failed(); }
+
+// Gets the i-th test case among all the test cases. i can range from 0 to
+// total_test_case_count() - 1. If i is not in that range, returns NULL.
+const TestCase* UnitTest::GetTestCase(int i) const {
+ return impl()->GetTestCase(i);
+}
+
+// Returns the TestResult containing information on test failures and
+// properties logged outside of individual test cases.
+const TestResult& UnitTest::ad_hoc_test_result() const {
+ return *impl()->ad_hoc_test_result();
+}
+
+// Gets the i-th test case among all the test cases. i can range from 0 to
+// total_test_case_count() - 1. If i is not in that range, returns NULL.
+TestCase* UnitTest::GetMutableTestCase(int i) {
+ return impl()->GetMutableTestCase(i);
+}
+
+// Returns the list of event listeners that can be used to track events
+// inside Google Test.
+TestEventListeners& UnitTest::listeners() {
+ return *impl()->listeners();
+}
+
+// Registers and returns a global test environment. When a test
+// program is run, all global test environments will be set-up in the
+// order they were registered. After all tests in the program have
+// finished, all global test environments will be torn-down in the
+// *reverse* order they were registered.
+//
+// The UnitTest object takes ownership of the given environment.
+//
+// We don't protect this under mutex_, as we only support calling it
+// from the main thread.
+Environment* UnitTest::AddEnvironment(Environment* env) {
+ if (env == NULL) {
+ return NULL;
+ }
+
+ impl_->environments().push_back(env);
+ return env;
+}
+
+// Adds a TestPartResult to the current TestResult object. All Google Test
+// assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call
+// this to report their results. The user code should use the
+// assertion macros instead of calling this directly.
+void UnitTest::AddTestPartResult(
+ TestPartResult::Type result_type,
+ const char* file_name,
+ int line_number,
+ const std::string& message,
+ const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
+ Message msg;
+ msg << message;
+
+ internal::MutexLock lock(&mutex_);
+ if (impl_->gtest_trace_stack().size() > 0) {
+ msg << "\n" << GTEST_NAME_ << " trace:";
+
+ for (int i = static_cast<int>(impl_->gtest_trace_stack().size());
+ i > 0; --i) {
+ const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
+ msg << "\n" << internal::FormatFileLocation(trace.file, trace.line)
+ << " " << trace.message;
+ }
+ }
+
+ if (os_stack_trace.c_str() != NULL && !os_stack_trace.empty()) {
+ msg << internal::kStackTraceMarker << os_stack_trace;
+ }
+
+ const TestPartResult result =
+ TestPartResult(result_type, file_name, line_number,
+ msg.GetString().c_str());
+ impl_->GetTestPartResultReporterForCurrentThread()->
+ ReportTestPartResult(result);
+
+ if (result_type != TestPartResult::kSuccess) {
+ // gtest_break_on_failure takes precedence over
+ // gtest_throw_on_failure. This allows a user to set the latter
+ // in the code (perhaps in order to use Google Test assertions
+ // with another testing framework) and specify the former on the
+ // command line for debugging.
+ if (GTEST_FLAG(break_on_failure)) {
+#if GTEST_OS_WINDOWS
+ // Using DebugBreak on Windows allows gtest to still break into a debugger
+ // when a failure happens and both the --gtest_break_on_failure and
+ // the --gtest_catch_exceptions flags are specified.
+ DebugBreak();
+#else
+ // Dereference NULL through a volatile pointer to prevent the compiler
+ // from removing. We use this rather than abort() or __builtin_trap() for
+ // portability: Symbian doesn't implement abort() well, and some debuggers
+ // don't correctly trap abort().
+ *static_cast<volatile int*>(NULL) = 1;
+#endif // GTEST_OS_WINDOWS
+ } else if (GTEST_FLAG(throw_on_failure)) {
+#if GTEST_HAS_EXCEPTIONS
+ throw internal::GoogleTestFailureException(result);
+#else
+ // We cannot call abort() as it generates a pop-up in debug mode
+ // that cannot be suppressed in VC 7.1 or below.
+ exit(1);
+#endif
+ }
+ }
+}
+
+// Adds a TestProperty to the current TestResult object when invoked from
+// inside a test, to current TestCase's ad_hoc_test_result_ when invoked
+// from SetUpTestCase or TearDownTestCase, or to the global property set
+// when invoked elsewhere. If the result already contains a property with
+// the same key, the value will be updated.
+void UnitTest::RecordProperty(const std::string& key,
+ const std::string& value) {
+ impl_->RecordProperty(TestProperty(key, value));
+}
+
+// Runs all tests in this UnitTest object and prints the result.
+// Returns 0 if successful, or 1 otherwise.
+//
+// We don't protect this under mutex_, as we only support calling it
+// from the main thread.
+int UnitTest::Run() {
+ const bool in_death_test_child_process =
+ internal::GTEST_FLAG(internal_run_death_test).length() > 0;
+
+ // Google Test implements this protocol for catching that a test
+ // program exits before returning control to Google Test:
+ //
+ // 1. Upon start, Google Test creates a file whose absolute path
+ // is specified by the environment variable
+ // TEST_PREMATURE_EXIT_FILE.
+ // 2. When Google Test has finished its work, it deletes the file.
+ //
+ // This allows a test runner to set TEST_PREMATURE_EXIT_FILE before
+ // running a Google-Test-based test program and check the existence
+ // of the file at the end of the test execution to see if it has
+ // exited prematurely.
+
+ // If we are in the child process of a death test, don't
+ // create/delete the premature exit file, as doing so is unnecessary
+ // and will confuse the parent process. Otherwise, create/delete
+ // the file upon entering/leaving this function. If the program
+ // somehow exits before this function has a chance to return, the
+ // premature-exit file will be left undeleted, causing a test runner
+ // that understands the premature-exit-file protocol to report the
+ // test as having failed.
+ const internal::ScopedPrematureExitFile premature_exit_file(
+ in_death_test_child_process ?
+ NULL : internal::posix::GetEnv("TEST_PREMATURE_EXIT_FILE"));
+
+ // Captures the value of GTEST_FLAG(catch_exceptions). This value will be
+ // used for the duration of the program.
+ impl()->set_catch_exceptions(GTEST_FLAG(catch_exceptions));
+
+#if GTEST_HAS_SEH
+ // Either the user wants Google Test to catch exceptions thrown by the
+ // tests or this is executing in the context of death test child
+ // process. In either case the user does not want to see pop-up dialogs
+ // about crashes - they are expected.
+ if (impl()->catch_exceptions() || in_death_test_child_process) {
+# if !GTEST_OS_WINDOWS_MOBILE
+ // SetErrorMode doesn't exist on CE.
+ SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT |
+ SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX);
+# endif // !GTEST_OS_WINDOWS_MOBILE
+
+# if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE
+ // Death test children can be terminated with _abort(). On Windows,
+ // _abort() can show a dialog with a warning message. This forces the
+ // abort message to go to stderr instead.
+ _set_error_mode(_OUT_TO_STDERR);
+# endif
+
+# if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE
+ // In the debug version, Visual Studio pops up a separate dialog
+ // offering a choice to debug the aborted program. We need to suppress
+ // this dialog or it will pop up for every EXPECT/ASSERT_DEATH statement
+ // executed. Google Test will notify the user of any unexpected
+ // failure via stderr.
+ //
+ // VC++ doesn't define _set_abort_behavior() prior to the version 8.0.
+ // Users of prior VC versions shall suffer the agony and pain of
+ // clicking through the countless debug dialogs.
+ // TODO(vladl@google.com): find a way to suppress the abort dialog() in the
+ // debug mode when compiled with VC 7.1 or lower.
+ if (!GTEST_FLAG(break_on_failure))
+ _set_abort_behavior(
+ 0x0, // Clear the following flags:
+ _WRITE_ABORT_MSG | _CALL_REPORTFAULT); // pop-up window, core dump.
+# endif
+ }
+#endif // GTEST_HAS_SEH
+
+ return internal::HandleExceptionsInMethodIfSupported(
+ impl(),
+ &internal::UnitTestImpl::RunAllTests,
+ "auxiliary test code (environments or event listeners)") ? 0 : 1;
+}
+
+// Returns the working directory when the first TEST() or TEST_F() was
+// executed.
+const char* UnitTest::original_working_dir() const {
+ return impl_->original_working_dir_.c_str();
+}
+
+// Returns the TestCase object for the test that's currently running,
+// or NULL if no test is running.
+const TestCase* UnitTest::current_test_case() const
+ GTEST_LOCK_EXCLUDED_(mutex_) {
+ internal::MutexLock lock(&mutex_);
+ return impl_->current_test_case();
+}
+
+// Returns the TestInfo object for the test that's currently running,
+// or NULL if no test is running.
+const TestInfo* UnitTest::current_test_info() const
+ GTEST_LOCK_EXCLUDED_(mutex_) {
+ internal::MutexLock lock(&mutex_);
+ return impl_->current_test_info();
+}
+
+// Returns the random seed used at the start of the current test run.
+int UnitTest::random_seed() const { return impl_->random_seed(); }
+
+#if GTEST_HAS_PARAM_TEST
+// Returns ParameterizedTestCaseRegistry object used to keep track of
+// value-parameterized tests and instantiate and register them.
+internal::ParameterizedTestCaseRegistry&
+ UnitTest::parameterized_test_registry()
+ GTEST_LOCK_EXCLUDED_(mutex_) {
+ return impl_->parameterized_test_registry();
+}
+#endif // GTEST_HAS_PARAM_TEST
+
+// Creates an empty UnitTest.
+UnitTest::UnitTest() {
+ impl_ = new internal::UnitTestImpl(this);
+}
+
+// Destructor of UnitTest.
+UnitTest::~UnitTest() {
+ delete impl_;
+}
+
+// Pushes a trace defined by SCOPED_TRACE() on to the per-thread
+// Google Test trace stack.
+void UnitTest::PushGTestTrace(const internal::TraceInfo& trace)
+ GTEST_LOCK_EXCLUDED_(mutex_) {
+ internal::MutexLock lock(&mutex_);
+ impl_->gtest_trace_stack().push_back(trace);
+}
+
+// Pops a trace from the per-thread Google Test trace stack.
+void UnitTest::PopGTestTrace()
+ GTEST_LOCK_EXCLUDED_(mutex_) {
+ internal::MutexLock lock(&mutex_);
+ impl_->gtest_trace_stack().pop_back();
+}
+
+namespace internal {
+
+UnitTestImpl::UnitTestImpl(UnitTest* parent)
+ : parent_(parent),
+#ifdef _MSC_VER
+# pragma warning(push) // Saves the current warning state.
+# pragma warning(disable:4355) // Temporarily disables warning 4355
+ // (using this in initializer).
+ default_global_test_part_result_reporter_(this),
+ default_per_thread_test_part_result_reporter_(this),
+# pragma warning(pop) // Restores the warning state again.
+#else
+ default_global_test_part_result_reporter_(this),
+ default_per_thread_test_part_result_reporter_(this),
+#endif // _MSC_VER
+ global_test_part_result_repoter_(
+ &default_global_test_part_result_reporter_),
+ per_thread_test_part_result_reporter_(
+ &default_per_thread_test_part_result_reporter_),
+#if GTEST_HAS_PARAM_TEST
+ parameterized_test_registry_(),
+ parameterized_tests_registered_(false),
+#endif // GTEST_HAS_PARAM_TEST
+ last_death_test_case_(-1),
+ current_test_case_(NULL),
+ current_test_info_(NULL),
+ ad_hoc_test_result_(),
+ os_stack_trace_getter_(NULL),
+ post_flag_parse_init_performed_(false),
+ random_seed_(0), // Will be overridden by the flag before first use.
+ random_(0), // Will be reseeded before first use.
+ start_timestamp_(0),
+ elapsed_time_(0),
+#if GTEST_HAS_DEATH_TEST
+ death_test_factory_(new DefaultDeathTestFactory),
+#endif
+ // Will be overridden by the flag before first use.
+ catch_exceptions_(false) {
+ listeners()->SetDefaultResultPrinter(new PrettyUnitTestResultPrinter);
+}
+
+UnitTestImpl::~UnitTestImpl() {
+ // Deletes every TestCase.
+ ForEach(test_cases_, internal::Delete<TestCase>);
+
+ // Deletes every Environment.
+ ForEach(environments_, internal::Delete<Environment>);
+
+ delete os_stack_trace_getter_;
+}
+
+// Adds a TestProperty to the current TestResult object when invoked in a
+// context of a test, to current test case's ad_hoc_test_result when invoke
+// from SetUpTestCase/TearDownTestCase, or to the global property set
+// otherwise. If the result already contains a property with the same key,
+// the value will be updated.
+void UnitTestImpl::RecordProperty(const TestProperty& test_property) {
+ std::string xml_element;
+ TestResult* test_result; // TestResult appropriate for property recording.
+
+ if (current_test_info_ != NULL) {
+ xml_element = "testcase";
+ test_result = &(current_test_info_->result_);
+ } else if (current_test_case_ != NULL) {
+ xml_element = "testsuite";
+ test_result = &(current_test_case_->ad_hoc_test_result_);
+ } else {
+ xml_element = "testsuites";
+ test_result = &ad_hoc_test_result_;
+ }
+ test_result->RecordProperty(xml_element, test_property);
+}
+
+#if GTEST_HAS_DEATH_TEST
+// Disables event forwarding if the control is currently in a death test
+// subprocess. Must not be called before InitGoogleTest.
+void UnitTestImpl::SuppressTestEventsIfInSubprocess() {
+ if (internal_run_death_test_flag_.get() != NULL)
+ listeners()->SuppressEventForwarding();
+}
+#endif // GTEST_HAS_DEATH_TEST
+
+// Initializes event listeners performing XML output as specified by
+// UnitTestOptions. Must not be called before InitGoogleTest.
+void UnitTestImpl::ConfigureXmlOutput() {
+ const std::string& output_format = UnitTestOptions::GetOutputFormat();
+ if (output_format == "xml") {
+ listeners()->SetDefaultXmlGenerator(new XmlUnitTestResultPrinter(
+ UnitTestOptions::GetAbsolutePathToOutputFile().c_str()));
+ } else if (output_format != "") {
+ printf("WARNING: unrecognized output format \"%s\" ignored.\n",
+ output_format.c_str());
+ fflush(stdout);
+ }
+}
+
+#if GTEST_CAN_STREAM_RESULTS_
+// Initializes event listeners for streaming test results in string form.
+// Must not be called before InitGoogleTest.
+void UnitTestImpl::ConfigureStreamingOutput() {
+ const std::string& target = GTEST_FLAG(stream_result_to);
+ if (!target.empty()) {
+ const size_t pos = target.find(':');
+ if (pos != std::string::npos) {
+ listeners()->Append(new StreamingListener(target.substr(0, pos),
+ target.substr(pos+1)));
+ } else {
+ printf("WARNING: unrecognized streaming target \"%s\" ignored.\n",
+ target.c_str());
+ fflush(stdout);
+ }
+ }
+}
+#endif // GTEST_CAN_STREAM_RESULTS_
+
+// Performs initialization dependent upon flag values obtained in
+// ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to
+// ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest
+// this function is also called from RunAllTests. Since this function can be
+// called more than once, it has to be idempotent.
+void UnitTestImpl::PostFlagParsingInit() {
+ // Ensures that this function does not execute more than once.
+ if (!post_flag_parse_init_performed_) {
+ post_flag_parse_init_performed_ = true;
+
+#if GTEST_HAS_DEATH_TEST
+ InitDeathTestSubprocessControlInfo();
+ SuppressTestEventsIfInSubprocess();
+#endif // GTEST_HAS_DEATH_TEST
+
+ // Registers parameterized tests. This makes parameterized tests
+ // available to the UnitTest reflection API without running
+ // RUN_ALL_TESTS.
+ RegisterParameterizedTests();
+
+ // Configures listeners for XML output. This makes it possible for users
+ // to shut down the default XML output before invoking RUN_ALL_TESTS.
+ ConfigureXmlOutput();
+
+#if GTEST_CAN_STREAM_RESULTS_
+ // Configures listeners for streaming test results to the specified server.
+ ConfigureStreamingOutput();
+#endif // GTEST_CAN_STREAM_RESULTS_
+ }
+}
+
+// A predicate that checks the name of a TestCase against a known
+// value.
+//
+// This is used for implementation of the UnitTest class only. We put
+// it in the anonymous namespace to prevent polluting the outer
+// namespace.
+//
+// TestCaseNameIs is copyable.
+class TestCaseNameIs {
+ public:
+ // Constructor.
+ explicit TestCaseNameIs(const std::string& name)
+ : name_(name) {}
+
+ // Returns true iff the name of test_case matches name_.
+ bool operator()(const TestCase* test_case) const {
+ return test_case != NULL && strcmp(test_case->name(), name_.c_str()) == 0;
+ }
+
+ private:
+ std::string name_;
+};
+
+// Finds and returns a TestCase with the given name. If one doesn't
+// exist, creates one and returns it. It's the CALLER'S
+// RESPONSIBILITY to ensure that this function is only called WHEN THE
+// TESTS ARE NOT SHUFFLED.
+//
+// Arguments:
+//
+// test_case_name: name of the test case
+// type_param: the name of the test case's type parameter, or NULL if
+// this is not a typed or a type-parameterized test case.
+// set_up_tc: pointer to the function that sets up the test case
+// tear_down_tc: pointer to the function that tears down the test case
+TestCase* UnitTestImpl::GetTestCase(const char* test_case_name,
+ const char* type_param,
+ Test::SetUpTestCaseFunc set_up_tc,
+ Test::TearDownTestCaseFunc tear_down_tc) {
+ // Can we find a TestCase with the given name?
+ const std::vector<TestCase*>::const_iterator test_case =
+ std::find_if(test_cases_.begin(), test_cases_.end(),
+ TestCaseNameIs(test_case_name));
+
+ if (test_case != test_cases_.end())
+ return *test_case;
+
+ // No. Let's create one.
+ TestCase* const new_test_case =
+ new TestCase(test_case_name, type_param, set_up_tc, tear_down_tc);
+
+ // Is this a death test case?
+ if (internal::UnitTestOptions::MatchesFilter(test_case_name,
+ kDeathTestCaseFilter)) {
+ // Yes. Inserts the test case after the last death test case
+ // defined so far. This only works when the test cases haven't
+ // been shuffled. Otherwise we may end up running a death test
+ // after a non-death test.
+ ++last_death_test_case_;
+ test_cases_.insert(test_cases_.begin() + last_death_test_case_,
+ new_test_case);
+ } else {
+ // No. Appends to the end of the list.
+ test_cases_.push_back(new_test_case);
+ }
+
+ test_case_indices_.push_back(static_cast<int>(test_case_indices_.size()));
+ return new_test_case;
+}
+
+// Helpers for setting up / tearing down the given environment. They
+// are for use in the ForEach() function.
+static void SetUpEnvironment(Environment* env) { env->SetUp(); }
+static void TearDownEnvironment(Environment* env) { env->TearDown(); }
+
+// Runs all tests in this UnitTest object, prints the result, and
+// returns true if all tests are successful. If any exception is
+// thrown during a test, the test is considered to be failed, but the
+// rest of the tests will still be run.
+//
+// When parameterized tests are enabled, it expands and registers
+// parameterized tests first in RegisterParameterizedTests().
+// All other functions called from RunAllTests() may safely assume that
+// parameterized tests are ready to be counted and run.
+bool UnitTestImpl::RunAllTests() {
+ // Makes sure InitGoogleTest() was called.
+ if (!GTestIsInitialized()) {
+ printf("%s",
+ "\nThis test program did NOT call ::testing::InitGoogleTest "
+ "before calling RUN_ALL_TESTS(). Please fix it.\n");
+ return false;
+ }
+
+ // Do not run any test if the --help flag was specified.
+ if (g_help_flag)
+ return true;
+
+ // Repeats the call to the post-flag parsing initialization in case the
+ // user didn't call InitGoogleTest.
+ PostFlagParsingInit();
+
+ // Even if sharding is not on, test runners may want to use the
+ // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding
+ // protocol.
+ internal::WriteToShardStatusFileIfNeeded();
+
+ // True iff we are in a subprocess for running a thread-safe-style
+ // death test.
+ bool in_subprocess_for_death_test = false;
+
+#if GTEST_HAS_DEATH_TEST
+ in_subprocess_for_death_test = (internal_run_death_test_flag_.get() != NULL);
+#endif // GTEST_HAS_DEATH_TEST
+
+ const bool should_shard = ShouldShard(kTestTotalShards, kTestShardIndex,
+ in_subprocess_for_death_test);
+
+ // Compares the full test names with the filter to decide which
+ // tests to run.
+ const bool has_tests_to_run = FilterTests(should_shard
+ ? HONOR_SHARDING_PROTOCOL
+ : IGNORE_SHARDING_PROTOCOL) > 0;
+
+ // Lists the tests and exits if the --gtest_list_tests flag was specified.
+ if (GTEST_FLAG(list_tests)) {
+ // This must be called *after* FilterTests() has been called.
+ ListTestsMatchingFilter();
+ return true;
+ }
+
+ random_seed_ = GTEST_FLAG(shuffle) ?
+ GetRandomSeedFromFlag(GTEST_FLAG(random_seed)) : 0;
+
+ // True iff at least one test has failed.
+ bool failed = false;
+
+ TestEventListener* repeater = listeners()->repeater();
+
+ start_timestamp_ = GetTimeInMillis();
+ repeater->OnTestProgramStart(*parent_);
+
+ // How many times to repeat the tests? We don't want to repeat them
+ // when we are inside the subprocess of a death test.
+ const int repeat = in_subprocess_for_death_test ? 1 : GTEST_FLAG(repeat);
+ // Repeats forever if the repeat count is negative.
+ const bool forever = repeat < 0;
+ for (int i = 0; forever || i != repeat; i++) {
+ // We want to preserve failures generated by ad-hoc test
+ // assertions executed before RUN_ALL_TESTS().
+ ClearNonAdHocTestResult();
+
+ const TimeInMillis start = GetTimeInMillis();
+
+ // Shuffles test cases and tests if requested.
+ if (has_tests_to_run && GTEST_FLAG(shuffle)) {
+ random()->Reseed(random_seed_);
+ // This should be done before calling OnTestIterationStart(),
+ // such that a test event listener can see the actual test order
+ // in the event.
+ ShuffleTests();
+ }
+
+ // Tells the unit test event listeners that the tests are about to start.
+ repeater->OnTestIterationStart(*parent_, i);
+
+ // Runs each test case if there is at least one test to run.
+ if (has_tests_to_run) {
+ // Sets up all environments beforehand.
+ repeater->OnEnvironmentsSetUpStart(*parent_);
+ ForEach(environments_, SetUpEnvironment);
+ repeater->OnEnvironmentsSetUpEnd(*parent_);
+
+ // Runs the tests only if there was no fatal failure during global
+ // set-up.
+ if (!Test::HasFatalFailure()) {
+ for (int test_index = 0; test_index < total_test_case_count();
+ test_index++) {
+ GetMutableTestCase(test_index)->Run();
+ }
+ }
+
+ // Tears down all environments in reverse order afterwards.
+ repeater->OnEnvironmentsTearDownStart(*parent_);
+ std::for_each(environments_.rbegin(), environments_.rend(),
+ TearDownEnvironment);
+ repeater->OnEnvironmentsTearDownEnd(*parent_);
+ }
+
+ elapsed_time_ = GetTimeInMillis() - start;
+
+ // Tells the unit test event listener that the tests have just finished.
+ repeater->OnTestIterationEnd(*parent_, i);
+
+ // Gets the result and clears it.
+ if (!Passed()) {
+ failed = true;
+ }
+
+ // Restores the original test order after the iteration. This
+ // allows the user to quickly repro a failure that happens in the
+ // N-th iteration without repeating the first (N - 1) iterations.
+ // This is not enclosed in "if (GTEST_FLAG(shuffle)) { ... }", in
+ // case the user somehow changes the value of the flag somewhere
+ // (it's always safe to unshuffle the tests).
+ UnshuffleTests();
+
+ if (GTEST_FLAG(shuffle)) {
+ // Picks a new random seed for each iteration.
+ random_seed_ = GetNextRandomSeed(random_seed_);
+ }
+ }
+
+ repeater->OnTestProgramEnd(*parent_);
+
+ return !failed;
+}
+
+// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
+// if the variable is present. If a file already exists at this location, this
+// function will write over it. If the variable is present, but the file cannot
+// be created, prints an error and exits.
+void WriteToShardStatusFileIfNeeded() {
+ const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile);
+ if (test_shard_file != NULL) {
+ FILE* const file = posix::FOpen(test_shard_file, "w");
+ if (file == NULL) {
+ ColoredPrintf(COLOR_RED,
+ "Could not write to the test shard status file \"%s\" "
+ "specified by the %s environment variable.\n",
+ test_shard_file, kTestShardStatusFile);
+ fflush(stdout);
+ exit(EXIT_FAILURE);
+ }
+ fclose(file);
+ }
+}
+
+// Checks whether sharding is enabled by examining the relevant
+// environment variable values. If the variables are present,
+// but inconsistent (i.e., shard_index >= total_shards), prints
+// an error and exits. If in_subprocess_for_death_test, sharding is
+// disabled because it must only be applied to the original test
+// process. Otherwise, we could filter out death tests we intended to execute.
+bool ShouldShard(const char* total_shards_env,
+ const char* shard_index_env,
+ bool in_subprocess_for_death_test) {
+ if (in_subprocess_for_death_test) {
+ return false;
+ }
+
+ const Int32 total_shards = Int32FromEnvOrDie(total_shards_env, -1);
+ const Int32 shard_index = Int32FromEnvOrDie(shard_index_env, -1);
+
+ if (total_shards == -1 && shard_index == -1) {
+ return false;
+ } else if (total_shards == -1 && shard_index != -1) {
+ const Message msg = Message()
+ << "Invalid environment variables: you have "
+ << kTestShardIndex << " = " << shard_index
+ << ", but have left " << kTestTotalShards << " unset.\n";
+ ColoredPrintf(COLOR_RED, msg.GetString().c_str());
+ fflush(stdout);
+ exit(EXIT_FAILURE);
+ } else if (total_shards != -1 && shard_index == -1) {
+ const Message msg = Message()
+ << "Invalid environment variables: you have "
+ << kTestTotalShards << " = " << total_shards
+ << ", but have left " << kTestShardIndex << " unset.\n";
+ ColoredPrintf(COLOR_RED, msg.GetString().c_str());
+ fflush(stdout);
+ exit(EXIT_FAILURE);
+ } else if (shard_index < 0 || shard_index >= total_shards) {
+ const Message msg = Message()
+ << "Invalid environment variables: we require 0 <= "
+ << kTestShardIndex << " < " << kTestTotalShards
+ << ", but you have " << kTestShardIndex << "=" << shard_index
+ << ", " << kTestTotalShards << "=" << total_shards << ".\n";
+ ColoredPrintf(COLOR_RED, msg.GetString().c_str());
+ fflush(stdout);
+ exit(EXIT_FAILURE);
+ }
+
+ return total_shards > 1;
+}
+
+// Parses the environment variable var as an Int32. If it is unset,
+// returns default_val. If it is not an Int32, prints an error
+// and aborts.
+Int32 Int32FromEnvOrDie(const char* var, Int32 default_val) {
+ const char* str_val = posix::GetEnv(var);
+ if (str_val == NULL) {
+ return default_val;
+ }
+
+ Int32 result;
+ if (!ParseInt32(Message() << "The value of environment variable " << var,
+ str_val, &result)) {
+ exit(EXIT_FAILURE);
+ }
+ return result;
+}
+
+// Given the total number of shards, the shard index, and the test id,
+// returns true iff the test should be run on this shard. The test id is
+// some arbitrary but unique non-negative integer assigned to each test
+// method. Assumes that 0 <= shard_index < total_shards.
+bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) {
+ return (test_id % total_shards) == shard_index;
+}
+
+// Compares the name of each test with the user-specified filter to
+// decide whether the test should be run, then records the result in
+// each TestCase and TestInfo object.
+// If shard_tests == true, further filters tests based on sharding
+// variables in the environment - see
+// http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide.
+// Returns the number of tests that should run.
+int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
+ const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ?
+ Int32FromEnvOrDie(kTestTotalShards, -1) : -1;
+ const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ?
+ Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
+
+ // num_runnable_tests are the number of tests that will
+ // run across all shards (i.e., match filter and are not disabled).
+ // num_selected_tests are the number of tests to be run on
+ // this shard.
+ int num_runnable_tests = 0;
+ int num_selected_tests = 0;
+ for (size_t i = 0; i < test_cases_.size(); i++) {
+ TestCase* const test_case = test_cases_[i];
+ const std::string &test_case_name = test_case->name();
+ test_case->set_should_run(false);
+
+ for (size_t j = 0; j < test_case->test_info_list().size(); j++) {
+ TestInfo* const test_info = test_case->test_info_list()[j];
+ const std::string test_name(test_info->name());
+ // A test is disabled if test case name or test name matches
+ // kDisableTestFilter.
+ const bool is_disabled =
+ internal::UnitTestOptions::MatchesFilter(test_case_name,
+ kDisableTestFilter) ||
+ internal::UnitTestOptions::MatchesFilter(test_name,
+ kDisableTestFilter);
+ test_info->is_disabled_ = is_disabled;
+
+ const bool matches_filter =
+ internal::UnitTestOptions::FilterMatchesTest(test_case_name,
+ test_name);
+ test_info->matches_filter_ = matches_filter;
+
+ const bool is_runnable =
+ (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) &&
+ matches_filter;
+
+ const bool is_selected = is_runnable &&
+ (shard_tests == IGNORE_SHARDING_PROTOCOL ||
+ ShouldRunTestOnShard(total_shards, shard_index,
+ num_runnable_tests));
+
+ num_runnable_tests += is_runnable;
+ num_selected_tests += is_selected;
+
+ test_info->should_run_ = is_selected;
+ test_case->set_should_run(test_case->should_run() || is_selected);
+ }
+ }
+ return num_selected_tests;
+}
+
+// Prints the given C-string on a single line by replacing all '\n'
+// characters with string "\\n". If the output takes more than
+// max_length characters, only prints the first max_length characters
+// and "...".
+static void PrintOnOneLine(const char* str, int max_length) {
+ if (str != NULL) {
+ for (int i = 0; *str != '\0'; ++str) {
+ if (i >= max_length) {
+ printf("...");
+ break;
+ }
+ if (*str == '\n') {
+ printf("\\n");
+ i += 2;
+ } else {
+ printf("%c", *str);
+ ++i;
+ }
+ }
+ }
+}
+
+// Prints the names of the tests matching the user-specified filter flag.
+void UnitTestImpl::ListTestsMatchingFilter() {
+ // Print at most this many characters for each type/value parameter.
+ const int kMaxParamLength = 250;
+
+ for (size_t i = 0; i < test_cases_.size(); i++) {
+ const TestCase* const test_case = test_cases_[i];
+ bool printed_test_case_name = false;
+
+ for (size_t j = 0; j < test_case->test_info_list().size(); j++) {
+ const TestInfo* const test_info =
+ test_case->test_info_list()[j];
+ if (test_info->matches_filter_) {
+ if (!printed_test_case_name) {
+ printed_test_case_name = true;
+ printf("%s.", test_case->name());
+ if (test_case->type_param() != NULL) {
+ printf(" # %s = ", kTypeParamLabel);
+ // We print the type parameter on a single line to make
+ // the output easy to parse by a program.
+ PrintOnOneLine(test_case->type_param(), kMaxParamLength);
+ }
+ printf("\n");
+ }
+ printf(" %s", test_info->name());
+ if (test_info->value_param() != NULL) {
+ printf(" # %s = ", kValueParamLabel);
+ // We print the value parameter on a single line to make the
+ // output easy to parse by a program.
+ PrintOnOneLine(test_info->value_param(), kMaxParamLength);
+ }
+ printf("\n");
+ }
+ }
+ }
+ fflush(stdout);
+}
+
+// Sets the OS stack trace getter.
+//
+// Does nothing if the input and the current OS stack trace getter are
+// the same; otherwise, deletes the old getter and makes the input the
+// current getter.
+void UnitTestImpl::set_os_stack_trace_getter(
+ OsStackTraceGetterInterface* getter) {
+ if (os_stack_trace_getter_ != getter) {
+ delete os_stack_trace_getter_;
+ os_stack_trace_getter_ = getter;
+ }
+}
+
+// Returns the current OS stack trace getter if it is not NULL;
+// otherwise, creates an OsStackTraceGetter, makes it the current
+// getter, and returns it.
+OsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() {
+ if (os_stack_trace_getter_ == NULL) {
+ os_stack_trace_getter_ = new OsStackTraceGetter;
+ }
+
+ return os_stack_trace_getter_;
+}
+
+// Returns the TestResult for the test that's currently running, or
+// the TestResult for the ad hoc test if no test is running.
+TestResult* UnitTestImpl::current_test_result() {
+ return current_test_info_ ?
+ &(current_test_info_->result_) : &ad_hoc_test_result_;
+}
+
+// Shuffles all test cases, and the tests within each test case,
+// making sure that death tests are still run first.
+void UnitTestImpl::ShuffleTests() {
+ // Shuffles the death test cases.
+ ShuffleRange(random(), 0, last_death_test_case_ + 1, &test_case_indices_);
+
+ // Shuffles the non-death test cases.
+ ShuffleRange(random(), last_death_test_case_ + 1,
+ static_cast<int>(test_cases_.size()), &test_case_indices_);
+
+ // Shuffles the tests inside each test case.
+ for (size_t i = 0; i < test_cases_.size(); i++) {
+ test_cases_[i]->ShuffleTests(random());
+ }
+}
+
+// Restores the test cases and tests to their order before the first shuffle.
+void UnitTestImpl::UnshuffleTests() {
+ for (size_t i = 0; i < test_cases_.size(); i++) {
+ // Unshuffles the tests in each test case.
+ test_cases_[i]->UnshuffleTests();
+ // Resets the index of each test case.
+ test_case_indices_[i] = static_cast<int>(i);
+ }
+}
+
+// Returns the current OS stack trace as an std::string.
+//
+// The maximum number of stack frames to be included is specified by
+// the gtest_stack_trace_depth flag. The skip_count parameter
+// specifies the number of top frames to be skipped, which doesn't
+// count against the number of frames to be included.
+//
+// For example, if Foo() calls Bar(), which in turn calls
+// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
+// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
+std::string GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/,
+ int skip_count) {
+ // We pass skip_count + 1 to skip this wrapper function in addition
+ // to what the user really wants to skip.
+ return GetUnitTestImpl()->CurrentOsStackTraceExceptTop(skip_count + 1);
+}
+
+// Used by the GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ macro to
+// suppress unreachable code warnings.
+namespace {
+class ClassUniqueToAlwaysTrue {};
+}
+
+bool IsTrue(bool condition) { return condition; }
+
+bool AlwaysTrue() {
+#if GTEST_HAS_EXCEPTIONS
+ // This condition is always false so AlwaysTrue() never actually throws,
+ // but it makes the compiler think that it may throw.
+ if (IsTrue(false))
+ throw ClassUniqueToAlwaysTrue();
+#endif // GTEST_HAS_EXCEPTIONS
+ return true;
+}
+
+// If *pstr starts with the given prefix, modifies *pstr to be right
+// past the prefix and returns true; otherwise leaves *pstr unchanged
+// and returns false. None of pstr, *pstr, and prefix can be NULL.
+bool SkipPrefix(const char* prefix, const char** pstr) {
+ const size_t prefix_len = strlen(prefix);
+ if (strncmp(*pstr, prefix, prefix_len) == 0) {
+ *pstr += prefix_len;
+ return true;
+ }
+ return false;
+}
+
+// Parses a string as a command line flag. The string should have
+// the format "--flag=value". When def_optional is true, the "=value"
+// part can be omitted.
+//
+// Returns the value of the flag, or NULL if the parsing failed.
+const char* ParseFlagValue(const char* str,
+ const char* flag,
+ bool def_optional) {
+ // str and flag must not be NULL.
+ if (str == NULL || flag == NULL) return NULL;
+
+ // The flag must start with "--" followed by GTEST_FLAG_PREFIX_.
+ const std::string flag_str = std::string("--") + GTEST_FLAG_PREFIX_ + flag;
+ const size_t flag_len = flag_str.length();
+ if (strncmp(str, flag_str.c_str(), flag_len) != 0) return NULL;
+
+ // Skips the flag name.
+ const char* flag_end = str + flag_len;
+
+ // When def_optional is true, it's OK to not have a "=value" part.
+ if (def_optional && (flag_end[0] == '\0')) {
+ return flag_end;
+ }
+
+ // If def_optional is true and there are more characters after the
+ // flag name, or if def_optional is false, there must be a '=' after
+ // the flag name.
+ if (flag_end[0] != '=') return NULL;
+
+ // Returns the string after "=".
+ return flag_end + 1;
+}
+
+// Parses a string for a bool flag, in the form of either
+// "--flag=value" or "--flag".
+//
+// In the former case, the value is taken as true as long as it does
+// not start with '0', 'f', or 'F'.
+//
+// In the latter case, the value is taken as true.
+//
+// On success, stores the value of the flag in *value, and returns
+// true. On failure, returns false without changing *value.
+bool ParseBoolFlag(const char* str, const char* flag, bool* value) {
+ // Gets the value of the flag as a string.
+ const char* const value_str = ParseFlagValue(str, flag, true);
+
+ // Aborts if the parsing failed.
+ if (value_str == NULL) return false;
+
+ // Converts the string value to a bool.
+ *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F');
+ return true;
+}
+
+// Parses a string for an Int32 flag, in the form of
+// "--flag=value".
+//
+// On success, stores the value of the flag in *value, and returns
+// true. On failure, returns false without changing *value.
+bool ParseInt32Flag(const char* str, const char* flag, Int32* value) {
+ // Gets the value of the flag as a string.
+ const char* const value_str = ParseFlagValue(str, flag, false);
+
+ // Aborts if the parsing failed.
+ if (value_str == NULL) return false;
+
+ // Sets *value to the value of the flag.
+ return ParseInt32(Message() << "The value of flag --" << flag,
+ value_str, value);
+}
+
+// Parses a string for a string flag, in the form of
+// "--flag=value".
+//
+// On success, stores the value of the flag in *value, and returns
+// true. On failure, returns false without changing *value.
+bool ParseStringFlag(const char* str, const char* flag, std::string* value) {
+ // Gets the value of the flag as a string.
+ const char* const value_str = ParseFlagValue(str, flag, false);
+
+ // Aborts if the parsing failed.
+ if (value_str == NULL) return false;
+
+ // Sets *value to the value of the flag.
+ *value = value_str;
+ return true;
+}
+
+// Determines whether a string has a prefix that Google Test uses for its
+// flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_.
+// If Google Test detects that a command line flag has its prefix but is not
+// recognized, it will print its help message. Flags starting with
+// GTEST_INTERNAL_PREFIX_ followed by "internal_" are considered Google Test
+// internal flags and do not trigger the help message.
+static bool HasGoogleTestFlagPrefix(const char* str) {
+ return (SkipPrefix("--", &str) ||
+ SkipPrefix("-", &str) ||
+ SkipPrefix("/", &str)) &&
+ !SkipPrefix(GTEST_FLAG_PREFIX_ "internal_", &str) &&
+ (SkipPrefix(GTEST_FLAG_PREFIX_, &str) ||
+ SkipPrefix(GTEST_FLAG_PREFIX_DASH_, &str));
+}
+
+// Prints a string containing code-encoded text. The following escape
+// sequences can be used in the string to control the text color:
+//
+// @@ prints a single '@' character.
+// @R changes the color to red.
+// @G changes the color to green.
+// @Y changes the color to yellow.
+// @D changes to the default terminal text color.
+//
+// TODO(wan@google.com): Write tests for this once we add stdout
+// capturing to Google Test.
+static void PrintColorEncoded(const char* str) {
+ GTestColor color = COLOR_DEFAULT; // The current color.
+
+ // Conceptually, we split the string into segments divided by escape
+ // sequences. Then we print one segment at a time. At the end of
+ // each iteration, the str pointer advances to the beginning of the
+ // next segment.
+ for (;;) {
+ const char* p = strchr(str, '@');
+ if (p == NULL) {
+ ColoredPrintf(color, "%s", str);
+ return;
+ }
+
+ ColoredPrintf(color, "%s", std::string(str, p).c_str());
+
+ const char ch = p[1];
+ str = p + 2;
+ if (ch == '@') {
+ ColoredPrintf(color, "@");
+ } else if (ch == 'D') {
+ color = COLOR_DEFAULT;
+ } else if (ch == 'R') {
+ color = COLOR_RED;
+ } else if (ch == 'G') {
+ color = COLOR_GREEN;
+ } else if (ch == 'Y') {
+ color = COLOR_YELLOW;
+ } else {
+ --str;
+ }
+ }
+}
+
+static const char kColorEncodedHelpMessage[] =
+"This program contains tests written using " GTEST_NAME_ ". You can use the\n"
+"following command line flags to control its behavior:\n"
+"\n"
+"Test Selection:\n"
+" @G--" GTEST_FLAG_PREFIX_ "list_tests@D\n"
+" List the names of all tests instead of running them. The name of\n"
+" TEST(Foo, Bar) is \"Foo.Bar\".\n"
+" @G--" GTEST_FLAG_PREFIX_ "filter=@YPOSTIVE_PATTERNS"
+ "[@G-@YNEGATIVE_PATTERNS]@D\n"
+" Run only the tests whose name matches one of the positive patterns but\n"
+" none of the negative patterns. '?' matches any single character; '*'\n"
+" matches any substring; ':' separates two patterns.\n"
+" @G--" GTEST_FLAG_PREFIX_ "also_run_disabled_tests@D\n"
+" Run all disabled tests too.\n"
+"\n"
+"Test Execution:\n"
+" @G--" GTEST_FLAG_PREFIX_ "repeat=@Y[COUNT]@D\n"
+" Run the tests repeatedly; use a negative count to repeat forever.\n"
+" @G--" GTEST_FLAG_PREFIX_ "shuffle@D\n"
+" Randomize tests' orders on every iteration.\n"
+" @G--" GTEST_FLAG_PREFIX_ "random_seed=@Y[NUMBER]@D\n"
+" Random number seed to use for shuffling test orders (between 1 and\n"
+" 99999, or 0 to use a seed based on the current time).\n"
+"\n"
+"Test Output:\n"
+" @G--" GTEST_FLAG_PREFIX_ "color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\n"
+" Enable/disable colored output. The default is @Gauto@D.\n"
+" -@G-" GTEST_FLAG_PREFIX_ "print_time=0@D\n"
+" Don't print the elapsed time of each test.\n"
+" @G--" GTEST_FLAG_PREFIX_ "output=xml@Y[@G:@YDIRECTORY_PATH@G"
+ GTEST_PATH_SEP_ "@Y|@G:@YFILE_PATH]@D\n"
+" Generate an XML report in the given directory or with the given file\n"
+" name. @YFILE_PATH@D defaults to @Gtest_details.xml@D.\n"
+#if GTEST_CAN_STREAM_RESULTS_
+" @G--" GTEST_FLAG_PREFIX_ "stream_result_to=@YHOST@G:@YPORT@D\n"
+" Stream test results to the given server.\n"
+#endif // GTEST_CAN_STREAM_RESULTS_
+"\n"
+"Assertion Behavior:\n"
+#if GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
+" @G--" GTEST_FLAG_PREFIX_ "death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n"
+" Set the default death test style.\n"
+#endif // GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
+" @G--" GTEST_FLAG_PREFIX_ "break_on_failure@D\n"
+" Turn assertion failures into debugger break-points.\n"
+" @G--" GTEST_FLAG_PREFIX_ "throw_on_failure@D\n"
+" Turn assertion failures into C++ exceptions.\n"
+" @G--" GTEST_FLAG_PREFIX_ "catch_exceptions=0@D\n"
+" Do not report exceptions as test failures. Instead, allow them\n"
+" to crash the program or throw a pop-up (on Windows).\n"
+"\n"
+"Except for @G--" GTEST_FLAG_PREFIX_ "list_tests@D, you can alternatively set "
+ "the corresponding\n"
+"environment variable of a flag (all letters in upper-case). For example, to\n"
+"disable colored text output, you can either specify @G--" GTEST_FLAG_PREFIX_
+ "color=no@D or set\n"
+"the @G" GTEST_FLAG_PREFIX_UPPER_ "COLOR@D environment variable to @Gno@D.\n"
+"\n"
+"For more information, please read the " GTEST_NAME_ " documentation at\n"
+"@G" GTEST_PROJECT_URL_ "@D. If you find a bug in " GTEST_NAME_ "\n"
+"(not one in your own code or tests), please report it to\n"
+"@G<" GTEST_DEV_EMAIL_ ">@D.\n";
+
+// Parses the command line for Google Test flags, without initializing
+// other parts of Google Test. The type parameter CharType can be
+// instantiated to either char or wchar_t.
+template <typename CharType>
+void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) {
+ for (int i = 1; i < *argc; i++) {
+ const std::string arg_string = StreamableToString(argv[i]);
+ const char* const arg = arg_string.c_str();
+
+ using internal::ParseBoolFlag;
+ using internal::ParseInt32Flag;
+ using internal::ParseStringFlag;
+
+ // Do we see a Google Test flag?
+ if (ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag,
+ &GTEST_FLAG(also_run_disabled_tests)) ||
+ ParseBoolFlag(arg, kBreakOnFailureFlag,
+ &GTEST_FLAG(break_on_failure)) ||
+ ParseBoolFlag(arg, kCatchExceptionsFlag,
+ &GTEST_FLAG(catch_exceptions)) ||
+ ParseStringFlag(arg, kColorFlag, &GTEST_FLAG(color)) ||
+ ParseStringFlag(arg, kDeathTestStyleFlag,
+ &GTEST_FLAG(death_test_style)) ||
+ ParseBoolFlag(arg, kDeathTestUseFork,
+ &GTEST_FLAG(death_test_use_fork)) ||
+ ParseStringFlag(arg, kFilterFlag, &GTEST_FLAG(filter)) ||
+ ParseStringFlag(arg, kInternalRunDeathTestFlag,
+ &GTEST_FLAG(internal_run_death_test)) ||
+ ParseBoolFlag(arg, kListTestsFlag, &GTEST_FLAG(list_tests)) ||
+ ParseStringFlag(arg, kOutputFlag, &GTEST_FLAG(output)) ||
+ ParseBoolFlag(arg, kPrintTimeFlag, &GTEST_FLAG(print_time)) ||
+ ParseInt32Flag(arg, kRandomSeedFlag, &GTEST_FLAG(random_seed)) ||
+ ParseInt32Flag(arg, kRepeatFlag, &GTEST_FLAG(repeat)) ||
+ ParseBoolFlag(arg, kShuffleFlag, &GTEST_FLAG(shuffle)) ||
+ ParseInt32Flag(arg, kStackTraceDepthFlag,
+ &GTEST_FLAG(stack_trace_depth)) ||
+ ParseStringFlag(arg, kStreamResultToFlag,
+ &GTEST_FLAG(stream_result_to)) ||
+ ParseBoolFlag(arg, kThrowOnFailureFlag,
+ &GTEST_FLAG(throw_on_failure))
+ ) {
+ // Yes. Shift the remainder of the argv list left by one. Note
+ // that argv has (*argc + 1) elements, the last one always being
+ // NULL. The following loop moves the trailing NULL element as
+ // well.
+ for (int j = i; j != *argc; j++) {
+ argv[j] = argv[j + 1];
+ }
+
+ // Decrements the argument count.
+ (*argc)--;
+
+ // We also need to decrement the iterator as we just removed
+ // an element.
+ i--;
+ } else if (arg_string == "--help" || arg_string == "-h" ||
+ arg_string == "-?" || arg_string == "/?" ||
+ HasGoogleTestFlagPrefix(arg)) {
+ // Both help flag and unrecognized Google Test flags (excluding
+ // internal ones) trigger help display.
+ g_help_flag = true;
+ }
+ }
+
+ if (g_help_flag) {
+ // We print the help here instead of in RUN_ALL_TESTS(), as the
+ // latter may not be called at all if the user is using Google
+ // Test with another testing framework.
+ PrintColorEncoded(kColorEncodedHelpMessage);
+ }
+}
+
+// Parses the command line for Google Test flags, without initializing
+// other parts of Google Test.
+void ParseGoogleTestFlagsOnly(int* argc, char** argv) {
+ ParseGoogleTestFlagsOnlyImpl(argc, argv);
+}
+void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv) {
+ ParseGoogleTestFlagsOnlyImpl(argc, argv);
+}
+
+// The internal implementation of InitGoogleTest().
+//
+// The type parameter CharType can be instantiated to either char or
+// wchar_t.
+template <typename CharType>
+void InitGoogleTestImpl(int* argc, CharType** argv) {
+ g_init_gtest_count++;
+
+ // We don't want to run the initialization code twice.
+ if (g_init_gtest_count != 1) return;
+
+ if (*argc <= 0) return;
+
+ internal::g_executable_path = internal::StreamableToString(argv[0]);
+
+#if GTEST_HAS_DEATH_TEST
+
+ g_argvs.clear();
+ for (int i = 0; i != *argc; i++) {
+ g_argvs.push_back(StreamableToString(argv[i]));
+ }
+
+#endif // GTEST_HAS_DEATH_TEST
+
+ ParseGoogleTestFlagsOnly(argc, argv);
+ GetUnitTestImpl()->PostFlagParsingInit();
+}
+
+} // namespace internal
+
+// Initializes Google Test. This must be called before calling
+// RUN_ALL_TESTS(). In particular, it parses a command line for the
+// flags that Google Test recognizes. Whenever a Google Test flag is
+// seen, it is removed from argv, and *argc is decremented.
+//
+// No value is returned. Instead, the Google Test flag variables are
+// updated.
+//
+// Calling the function for the second time has no user-visible effect.
+void InitGoogleTest(int* argc, char** argv) {
+ internal::InitGoogleTestImpl(argc, argv);
+}
+
+// This overloaded version can be used in Windows programs compiled in
+// UNICODE mode.
+void InitGoogleTest(int* argc, wchar_t** argv) {
+ internal::InitGoogleTestImpl(argc, argv);
+}
+
+} // namespace testing
diff --git a/test/fmw/gtest/src/gtest_main.cc b/test/fmw/gtest/src/gtest_main.cc
new file mode 100644
index 0000000..f302822
--- /dev/null
+++ b/test/fmw/gtest/src/gtest_main.cc
@@ -0,0 +1,38 @@
+// Copyright 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <stdio.h>
+
+#include "gtest/gtest.h"
+
+GTEST_API_ int main(int argc, char **argv) {
+ printf("Running main() from gtest_main.cc\n");
+ testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}
diff --git a/test/jtreg-ext/requires/VMProps.java b/test/jtreg-ext/requires/VMProps.java
new file mode 100644
index 0000000..8ac981d
--- /dev/null
+++ b/test/jtreg-ext/requires/VMProps.java
@@ -0,0 +1,238 @@
+/*
+ * Copyright (c) 2016, 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 requires;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Callable;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import sun.hotspot.cpuinfo.CPUInfo;
+import sun.hotspot.gc.GC;
+import sun.hotspot.WhiteBox;
+
+/**
+ * The Class to be invoked by jtreg prior Test Suite execution to
+ * collect information about VM.
+ * Do not use any API's that may not be available in all target VMs.
+ * Properties set by this Class will be available in the @requires expressions.
+ */
+public class VMProps implements Callable<Map<String, String>> {
+
+ private static final WhiteBox WB = WhiteBox.getWhiteBox();
+
+ /**
+ * Collects information about VM properties.
+ * This method will be invoked by jtreg.
+ *
+ * @return Map of property-value pairs.
+ */
+ @Override
+ public Map<String, String> call() {
+ Map<String, String> map = new HashMap<>();
+ map.put("vm.flavor", vmFlavor());
+ map.put("vm.compMode", vmCompMode());
+ map.put("vm.bits", vmBits());
+ map.put("vm.flightRecorder", vmFlightRecorder());
+ map.put("vm.simpleArch", vmArch());
+ map.put("vm.debug", vmDebug());
+ map.put("vm.jvmci", vmJvmci());
+ map.put("vm.emulatedClient", vmEmulatedClient());
+ map.put("vm.cpu.features", cpuFeatures());
+ vmGC(map); // vm.gc.X = true/false
+
+ VMProps.dump(map);
+ return map;
+ }
+
+ /**
+ * @return vm.simpleArch value of "os.simpleArch" property of tested JDK.
+ */
+ protected String vmArch() {
+ String arch = System.getProperty("os.arch");
+ if (arch.equals("x86_64") || arch.equals("amd64")) {
+ return "x64";
+ }
+ else if (arch.contains("86")) {
+ return "x86";
+ } else {
+ return arch;
+ }
+ }
+
+
+
+ /**
+ * @return VM type value extracted from the "java.vm.name" property.
+ */
+ protected String vmFlavor() {
+ // E.g. "Java HotSpot(TM) 64-Bit Server VM"
+ String vmName = System.getProperty("java.vm.name");
+ if (vmName == null) {
+ return null;
+ }
+
+ Pattern startP = Pattern.compile(".* (\\S+) VM");
+ Matcher m = startP.matcher(vmName);
+ if (m.matches()) {
+ return m.group(1).toLowerCase();
+ }
+ return null;
+ }
+
+ /**
+ * @return VM compilation mode extracted from the "java.vm.info" property.
+ */
+ protected String vmCompMode() {
+ // E.g. "mixed mode"
+ String vmInfo = System.getProperty("java.vm.info");
+ if (vmInfo == null) {
+ return null;
+ }
+ int k = vmInfo.toLowerCase().indexOf(" mode");
+ if (k < 0) {
+ return null;
+ }
+ vmInfo = vmInfo.substring(0, k);
+ switch (vmInfo) {
+ case "mixed" : return "Xmixed";
+ case "compiled" : return "Xcomp";
+ case "interpreted" : return "Xint";
+ default: return null;
+ }
+ }
+
+ /**
+ * @return VM bitness, the value of the "sun.arch.data.model" property.
+ */
+ protected String vmBits() {
+ return System.getProperty("sun.arch.data.model");
+ }
+
+ /**
+ * @return "true" if Flight Recorder is enabled, "false" if is disabled.
+ */
+ protected String vmFlightRecorder() {
+ Boolean isUnlockedCommercialFatures = WB.getBooleanVMFlag("UnlockCommercialFeatures");
+ Boolean isFlightRecorder = WB.getBooleanVMFlag("FlightRecorder");
+ String startFROptions = WB.getStringVMFlag("StartFlightRecording");
+ if (isUnlockedCommercialFatures != null && isUnlockedCommercialFatures) {
+ if (isFlightRecorder != null && isFlightRecorder) {
+ return "true";
+ }
+ if (startFROptions != null && !startFROptions.isEmpty()) {
+ return "true";
+ }
+ }
+ return "false";
+ }
+
+ /**
+ * @return debug level value extracted from the "jdk.debug" property.
+ */
+ protected String vmDebug() {
+ return "" + System.getProperty("jdk.debug").contains("debug");
+ }
+
+ /**
+ * @return true if VM supports JVMCI and false otherwise
+ */
+ protected String vmJvmci() {
+ // builds with jvmci have this flag
+ return "" + (WB.getBooleanVMFlag("EnableJVMCI") != null);
+ }
+
+ /**
+ * @return true if VM runs in emulated-client mode and false otherwise.
+ */
+ protected String vmEmulatedClient() {
+ String vmInfo = System.getProperty("java.vm.info");
+ if (vmInfo == null) {
+ return "false";
+ }
+ return "" + vmInfo.contains(" emulated-client");
+ }
+
+ /**
+ * @return supported CPU features
+ */
+ protected String cpuFeatures() {
+ return CPUInfo.getFeatures().toString();
+ }
+
+ /**
+ * For all existing GC sets vm.gc.X property.
+ * Example vm.gc.G1=true means:
+ * VM supports G1
+ * User either set G1 explicitely (-XX:+UseG1GC) or did not set any GC
+ * @param map - property-value pairs
+ */
+ protected void vmGC(Map<String, String> map){
+ GC currentGC = GC.current();
+ boolean isByErgo = GC.currentSetByErgo();
+ List<GC> supportedGC = GC.allSupported();
+ for (GC gc: GC.values()) {
+ boolean isSupported = supportedGC.contains(gc);
+ boolean isAcceptable = isSupported && (gc == currentGC || isByErgo);
+ map.put("vm.gc." + gc.name(), "" + isAcceptable);
+ }
+ }
+
+ /**
+ * Dumps the map to the file if the file name is given as the property.
+ * This functionality could be helpful to know context in the real
+ * execution.
+ *
+ * @param map
+ */
+ protected static void dump(Map<String, String> map) {
+ String dumpFileName = System.getProperty("vmprops.dump");
+ if (dumpFileName == null) {
+ return;
+ }
+ List<String> lines = new ArrayList<>();
+ map.forEach((k, v) -> lines.add(k + ":" + v));
+ try {
+ Files.write(Paths.get(dumpFileName), lines, StandardOpenOption.APPEND);
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to dump properties into '"
+ + dumpFileName + "'", e);
+ }
+ }
+
+ /**
+ * This method is for the testing purpose only.
+ * @param args
+ */
+ public static void main(String args[]) {
+ Map<String, String> map = new VMProps().call();
+ map.forEach((k, v) -> System.out.println(k + ": '" + v + "'"));
+ }
+}
diff --git a/test/lib-test/jdk/test/lib/apps/LingeredAppTest.java b/test/lib-test/jdk/test/lib/apps/LingeredAppTest.java
new file mode 100644
index 0000000..54a3706
--- /dev/null
+++ b/test/lib-test/jdk/test/lib/apps/LingeredAppTest.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2015, 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.
+ */
+
+/*
+ * @test
+ * @summary Unit test for LingeredApp
+ * @compile LingeredAppTest.java
+ * @compile LingeredApp.java
+ * @run main LingeredAppTest
+ */
+
+package jdk.test.lib.apps;
+
+import java.io.IOException;
+import java.util.ArrayList;
+
+public class LingeredAppTest {
+
+ public static void main(String[] args) {
+ try {
+ System.out.println("Starting LingeredApp with default parameters");
+
+ ArrayList<String> cmd = new ArrayList<String>();
+
+ // Propagate test.vm.options to LingeredApp, filter out possible empty options
+ String testVmOpts[] = System.getProperty("test.vm.opts","").split("\\s+");
+ for (String s : testVmOpts) {
+ if (!s.equals("")) {
+ cmd.add(s);
+ }
+ }
+
+ cmd.add("-XX:+PrintFlagsFinal");
+
+ LingeredApp a = LingeredApp.startApp(cmd);
+ System.out.printf("App pid: %d\n", a.getPid());
+ a.stopApp();
+
+ System.out.println("App output:");
+ int count = 0;
+ for (String line : a.getAppOutput()) {
+ count += 1;
+ }
+ System.out.println("Found " + count + " lines in VM output");
+ System.out.println("Test PASSED");
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ System.out.println("Test ERROR");
+ System.exit(3);
+ }
+ }
+}
diff --git a/test/lib/ClassFileInstaller.java b/test/lib/ClassFileInstaller.java
new file mode 100644
index 0000000..2486bd2
--- /dev/null
+++ b/test/lib/ClassFileInstaller.java
@@ -0,0 +1,257 @@
+/*
+ * Copyright (c) 2016, 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.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.io.ByteArrayInputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+/**
+ * Dump a class file for a class on the class path in the current directory, or
+ * in the specified JAR file. This class is usually used when you build a class
+ * from a test library, but want to use this class in a sub-process.
+ *
+ * For example, to build the following library class:
+ * test/lib/sun/hotspot/WhiteBox.java
+ *
+ * You would use the following tags:
+ *
+ * @library /test/lib
+ * @build sun.hotspot.WhiteBox
+ *
+ * JTREG would build the class file under
+ * ${JTWork}/classes/test/lib/sun/hotspot/WhiteBox.class
+ *
+ * With you run your main test class using "@run main MyMainClass", JTREG would setup the
+ * -classpath to include "${JTWork}/classes/test/lib/", so MyMainClass would be able to
+ * load the WhiteBox class.
+ *
+ * However, if you run a sub process, and do not wish to use the exact same -classpath,
+ * You can use ClassFileInstaller to ensure that WhiteBox is available in the current
+ * directory of your test:
+ *
+ * @run main ClassFileInstaller sun.hotspot.WhiteBox
+ *
+ * Or, you can use the -jar option to store the class in the specified JAR file. If a relative
+ * path name is given, the JAR file would be relative to the current directory of
+ *
+ * @run main ClassFileInstaller -jar myjar.jar sun.hotspot.WhiteBox
+ */
+public class ClassFileInstaller {
+ /**
+ * You can enable debug tracing of ClassFileInstaller by running JTREG with
+ * jtreg -DClassFileInstaller.debug=true ... <names of tests>
+ */
+ public static boolean DEBUG = Boolean.getBoolean("ClassFileInstaller.debug");
+
+ /**
+ * @param args The names of the classes to dump
+ * @throws Exception
+ */
+ public static void main(String... args) throws Exception {
+ if (args.length > 1 && args[0].equals("-jar")) {
+ if (args.length < 2) {
+ throw new RuntimeException("Usage: ClassFileInstaller <options> <classes>\n" +
+ "where possible options include:\n" +
+ " -jar <path> Write to the JAR file <path>");
+ }
+ writeJar(args[1], null, args, 2, args.length);
+ } else {
+ if (DEBUG) {
+ System.out.println("ClassFileInstaller: Writing to " + System.getProperty("user.dir"));
+ }
+ for (String arg : args) {
+ writeClassToDisk(arg);
+ }
+ }
+ }
+
+ public static class Manifest {
+ private InputStream in;
+
+ private Manifest(InputStream in) {
+ this.in = in;
+ }
+
+ static Manifest fromSourceFile(String fileName) throws Exception {
+ String pathName = System.getProperty("test.src") + File.separator + fileName;
+ return new Manifest(new FileInputStream(pathName));
+ }
+
+ // Example:
+ // String manifest = "Premain-Class: RedefineClassHelper\n" +
+ // "Can-Redefine-Classes: true\n";
+ // ClassFileInstaller.writeJar("redefineagent.jar",
+ // ClassFileInstaller.Manifest.fromString(manifest),
+ // "RedefineClassHelper");
+ static Manifest fromString(String manifest) throws Exception {
+ return new Manifest(new ByteArrayInputStream(manifest.getBytes()));
+ }
+
+ public InputStream getInputStream() {
+ return in;
+ }
+ }
+
+ private static void writeJar(String jarFile, Manifest manifest, String classes[], int from, int to) throws Exception {
+ if (DEBUG) {
+ System.out.println("ClassFileInstaller: Writing to " + getJarPath(jarFile));
+ }
+
+ (new File(jarFile)).delete();
+ FileOutputStream fos = new FileOutputStream(jarFile);
+ ZipOutputStream zos = new ZipOutputStream(fos);
+
+ // The manifest must be the first or second entry. See comments in JarInputStream
+ // constructor and JDK-5046178.
+ if (manifest != null) {
+ writeToDisk(zos, "META-INF/MANIFEST.MF", manifest.getInputStream());
+ }
+
+ for (int i=from; i<to; i++) {
+ writeClassToDisk(zos, classes[i]);
+ }
+
+ zos.close();
+ fos.close();
+ }
+
+ /*
+ * You can call ClassFileInstaller.writeJar() from your main test class instead of
+ * using "@run ClassFileInstaller -jar ...". E.g.,
+ *
+ * String jarPath = ClassFileInstaller.getJarPath("myjar.jar", "sun.hotspot.WhiteBox")
+ *
+ * If you call this API, make sure you build ClassFileInstaller with the following tags:
+ *
+ * @library testlibrary
+ * @build ClassFileInstaller
+ */
+ public static String writeJar(String jarFile, String... classes) throws Exception {
+ writeJar(jarFile, null, classes, 0, classes.length);
+ return getJarPath(jarFile);
+ }
+
+ public static String writeJar(String jarFile, Manifest manifest, String... classes) throws Exception {
+ writeJar(jarFile, manifest, classes, 0, classes.length);
+ return getJarPath(jarFile);
+ }
+
+ /**
+ * This returns the absolute path to the file specified in "@ClassFileInstaller -jar myjar.jar",
+ * In your test program, instead of using the JAR file name directly:
+ *
+ * String jarPath = "myjar.jar";
+ *
+ * you should call this function, like:
+ *
+ * String jarPath = ClassFileInstaller.getJarPath("myjar.jar")
+ *
+ * The reasons are:
+ * (1) Using absolute path makes it easy to cut-and-paste from the JTR file and rerun your
+ * test in any directory.
+ * (2) In the future, we may make the JAR file name unique to avoid clobbering
+ * during parallel JTREG execution.
+ *
+ */
+ public static String getJarPath(String jarFileName) {
+ return new File(jarFileName).getAbsolutePath();
+ }
+
+ public static void writeClassToDisk(String className) throws Exception {
+ writeClassToDisk((ZipOutputStream)null, className);
+ }
+ private static void writeClassToDisk(ZipOutputStream zos, String className) throws Exception {
+ writeClassToDisk(zos, className, "");
+ }
+
+ public static void writeClassToDisk(String className, String prependPath) throws Exception {
+ writeClassToDisk(null, className, prependPath);
+ }
+ private static void writeClassToDisk(ZipOutputStream zos, String className, String prependPath) throws Exception {
+ ClassLoader cl = ClassFileInstaller.class.getClassLoader();
+
+ // Convert dotted class name to a path to a class file
+ String pathName = className.replace('.', '/').concat(".class");
+ InputStream is = cl.getResourceAsStream(pathName);
+ if (is == null) {
+ throw new RuntimeException("Failed to find " + pathName);
+ }
+ if (prependPath.length() > 0) {
+ pathName = prependPath + "/" + pathName;
+ }
+ writeToDisk(zos, pathName, is);
+ }
+
+ public static void writeClassToDisk(String className, byte[] bytecode) throws Exception {
+ writeClassToDisk(null, className, bytecode);
+ }
+ private static void writeClassToDisk(ZipOutputStream zos, String className, byte[] bytecode) throws Exception {
+ writeClassToDisk(zos, className, bytecode, "");
+ }
+
+ public static void writeClassToDisk(String className, byte[] bytecode, String prependPath) throws Exception {
+ writeClassToDisk(null, className, bytecode, prependPath);
+ }
+ private static void writeClassToDisk(ZipOutputStream zos, String className, byte[] bytecode, String prependPath) throws Exception {
+ // Convert dotted class name to a path to a class file
+ String pathName = className.replace('.', '/').concat(".class");
+ if (prependPath.length() > 0) {
+ pathName = prependPath + "/" + pathName;
+ }
+ writeToDisk(zos, pathName, new ByteArrayInputStream(bytecode));
+ }
+
+ private static void writeToDisk(ZipOutputStream zos, String pathName, InputStream is) throws Exception {
+ if (DEBUG) {
+ System.out.println("ClassFileInstaller: Writing " + pathName);
+ }
+ if (zos != null) {
+ ZipEntry ze = new ZipEntry(pathName);
+ zos.putNextEntry(ze);
+ byte[] buf = new byte[1024];
+ int len;
+ while ((len = is.read(buf))>0){
+ zos.write(buf, 0, len);
+ }
+ } else {
+ // Create the class file's package directory
+ Path p = Paths.get(pathName);
+ if (pathName.contains("/")) {
+ Files.createDirectories(p.getParent());
+ }
+ // Create the class file
+ Files.copy(is, p, StandardCopyOption.REPLACE_EXISTING);
+ }
+ is.close();
+ }
+}
diff --git a/test/lib/RedefineClassHelper.java b/test/lib/RedefineClassHelper.java
new file mode 100644
index 0000000..2c23690
--- /dev/null
+++ b/test/lib/RedefineClassHelper.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2014, 2016, 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.PrintWriter;
+import java.lang.instrument.*;
+import jdk.test.lib.compiler.InMemoryJavaCompiler;
+
+/*
+ * Helper class to write tests that redefine classes.
+ * When main method is run, it will create a redefineagent.jar that can be used
+ * with the -javaagent option to support redefining classes in jtreg tests.
+ *
+ * See sample test in test/testlibrary_tests/RedefineClassTest.java
+ */
+public class RedefineClassHelper {
+
+ public static Instrumentation instrumentation;
+ public static void premain(String agentArgs, Instrumentation inst) {
+ instrumentation = inst;
+ }
+
+ /**
+ * Redefine a class
+ *
+ * @param clazz Class to redefine
+ * @param javacode String with the new java code for the class to be redefined
+ */
+ public static void redefineClass(Class clazz, String javacode) throws Exception {
+ byte[] bytecode = InMemoryJavaCompiler.compile(clazz.getName(), javacode);
+ redefineClass(clazz, bytecode);
+ }
+
+ /**
+ * Redefine a class
+ *
+ * @param clazz Class to redefine
+ * @param bytecode byte[] with the new class
+ */
+ public static void redefineClass(Class clazz, byte[] bytecode) throws Exception {
+ instrumentation.redefineClasses(new ClassDefinition(clazz, bytecode));
+ }
+
+ /**
+ * Main method to be invoked before test to create the redefineagent.jar
+ */
+ public static void main(String[] args) throws Exception {
+ ClassFileInstaller.main("RedefineClassHelper");
+
+ PrintWriter pw = new PrintWriter("MANIFEST.MF");
+ pw.println("Premain-Class: RedefineClassHelper");
+ pw.println("Can-Redefine-Classes: true");
+ pw.close();
+
+ sun.tools.jar.Main jarTool = new sun.tools.jar.Main(System.out, System.err, "jar");
+ if (!jarTool.run(new String[] { "-cmf", "MANIFEST.MF", "redefineagent.jar", "RedefineClassHelper.class" })) {
+ throw new Exception("jar operation failed");
+ }
+ }
+}
diff --git a/test/lib/jdk/test/lib/Asserts.java b/test/lib/jdk/test/lib/Asserts.java
new file mode 100644
index 0000000..8aa0105
--- /dev/null
+++ b/test/lib/jdk/test/lib/Asserts.java
@@ -0,0 +1,620 @@
+/*
+ * Copyright (c) 2013, 2016, 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 jdk.test.lib;
+
+import java.util.Objects;
+
+/**
+ * Asserts that can be used for verifying assumptions in tests.
+ *
+ * An assertion will throw a {@link RuntimeException} if the assertion isn't true.
+ * All the asserts can be imported into a test by using a static import:
+ *
+ * <pre>
+ * {@code
+ * import static jdk.testlibrary.Asserts.*;
+ * }
+ *
+ * Always provide a message describing the assumption if the line number of the
+ * failing assertion isn't enough to understand why the assumption failed. For
+ * example, if the assertion is in a loop or in a method that is called
+ * multiple times, then the line number won't provide enough context to
+ * understand the failure.
+ * </pre>
+ */
+public class Asserts {
+
+ /**
+ * Shorthand for {@link #assertLessThan(Comparable, Comparable)}.
+ *
+ * @param <T> a type
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @see #assertLessThan(Comparable, Comparable)
+ */
+ public static <T extends Comparable<T>> void assertLT(T lhs, T rhs) {
+ assertLessThan(lhs, rhs);
+ }
+
+ /**
+ * Shorthand for {@link #assertLessThan(Comparable, Comparable, String)}.
+ *
+ * @param <T> a type
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @see #assertLessThan(Comparable, Comparable, String)
+ */
+ public static <T extends Comparable<T>> void assertLT(T lhs, T rhs, String msg) {
+ assertLessThan(lhs, rhs, msg);
+ }
+
+ /**
+ * Calls {@link #assertLessThan(Comparable, Comparable, String)} with a default message.
+ *
+ * @param <T> a type
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @see #assertLessThan(Comparable, Comparable, String)
+ */
+ public static <T extends Comparable<T>> void assertLessThan(T lhs, T rhs) {
+ assertLessThan(lhs, rhs, null);
+ }
+
+ /**
+ * Asserts that {@code lhs} is less than {@code rhs}.
+ *
+ * @param <T> a type
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @throws RuntimeException if the assertion is not true.
+ */
+ public static <T extends Comparable<T>>void assertLessThan(T lhs, T rhs, String msg) {
+ if (!(compare(lhs, rhs, msg) < 0)) {
+ msg = Objects.toString(msg, "assertLessThan")
+ + ": expected that " + Objects.toString(lhs)
+ + " < " + Objects.toString(rhs);
+ fail(msg);
+ }
+ }
+
+ /**
+ * Shorthand for {@link #assertLessThanOrEqual(Comparable, Comparable)}.
+ *
+ * @param <T> a type
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @see #assertLessThanOrEqual(Comparable, Comparable)
+ */
+ public static <T extends Comparable<T>> void assertLTE(T lhs, T rhs) {
+ assertLessThanOrEqual(lhs, rhs);
+ }
+
+ /**
+ * Shorthand for {@link #assertLessThanOrEqual(Comparable, Comparable, String)}.
+ *
+ * @param <T> a type
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @see #assertLessThanOrEqual(Comparable, Comparable, String)
+ */
+ public static <T extends Comparable<T>> void assertLTE(T lhs, T rhs, String msg) {
+ assertLessThanOrEqual(lhs, rhs, msg);
+ }
+
+ /**
+ * Calls {@link #assertLessThanOrEqual(Comparable, Comparable, String)} with a default message.
+ *
+ * @param <T> a type
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @see #assertLessThanOrEqual(Comparable, Comparable, String)
+ */
+ public static <T extends Comparable<T>> void assertLessThanOrEqual(T lhs, T rhs) {
+ assertLessThanOrEqual(lhs, rhs, null);
+ }
+
+ /**
+ * Asserts that {@code lhs} is less than or equal to {@code rhs}.
+ *
+ * @param <T> a type
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @throws RuntimeException if the assertion is not true.
+ */
+ public static <T extends Comparable<T>> void assertLessThanOrEqual(T lhs, T rhs, String msg) {
+ if (!(compare(lhs, rhs, msg) <= 0)) {
+ msg = Objects.toString(msg, "assertLessThanOrEqual")
+ + ": expected that " + Objects.toString(lhs)
+ + " <= " + Objects.toString(rhs);
+ fail(msg);
+ }
+ }
+
+ /**
+ * Shorthand for {@link #assertEquals(Object, Object)}.
+ *
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @see #assertEquals(Object, Object)
+ */
+ public static void assertEQ(Object lhs, Object rhs) {
+ assertEquals(lhs, rhs);
+ }
+
+ /**
+ * Shorthand for {@link #assertEquals(Object, Object, String)}.
+ *
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @see #assertEquals(Object, Object, String)
+ */
+ public static void assertEQ(Object lhs, Object rhs, String msg) {
+ assertEquals(lhs, rhs, msg);
+ }
+
+ /**
+ * Calls {@link #assertEquals(java.lang.Object, java.lang.Object, java.lang.String)} with a default message.
+ *
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @see #assertEquals(Object, Object, String)
+ */
+ public static void assertEquals(Object lhs, Object rhs) {
+ assertEquals(lhs, rhs, null);
+ }
+
+ /**
+ * Asserts that {@code lhs} is equal to {@code rhs}.
+ *
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @throws RuntimeException if the assertion is not true.
+ */
+ public static void assertEquals(Object lhs, Object rhs, String msg) {
+ if ((lhs != rhs) && ((lhs == null) || !(lhs.equals(rhs)))) {
+ msg = Objects.toString(msg, "assertEquals")
+ + ": expected " + Objects.toString(lhs)
+ + " to equal " + Objects.toString(rhs);
+ fail(msg);
+ }
+ }
+
+ /**
+ * Calls {@link #assertSame(java.lang.Object, java.lang.Object, java.lang.String)} with a default message.
+ *
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @see #assertSame(Object, Object, String)
+ */
+ public static void assertSame(Object lhs, Object rhs) {
+ assertSame(lhs, rhs, null);
+ }
+
+ /**
+ * Asserts that {@code lhs} is the same as {@code rhs}.
+ *
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @throws RuntimeException if the assertion is not true.
+ */
+ public static void assertSame(Object lhs, Object rhs, String msg) {
+ if (lhs != rhs) {
+ msg = Objects.toString(msg, "assertSame")
+ + ": expected " + Objects.toString(lhs)
+ + " to equal " + Objects.toString(rhs);
+ fail(msg);
+ }
+ }
+
+ /**
+ * Shorthand for {@link #assertGreaterThanOrEqual(Comparable, Comparable)}.
+ *
+ * @param <T> a type
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @see #assertGreaterThanOrEqual(Comparable, Comparable)
+ */
+ public static <T extends Comparable<T>> void assertGTE(T lhs, T rhs) {
+ assertGreaterThanOrEqual(lhs, rhs);
+ }
+
+ /**
+ * Shorthand for {@link #assertGreaterThanOrEqual(Comparable, Comparable, String)}.
+ *
+ * @param <T> a type
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @see #assertGreaterThanOrEqual(Comparable, Comparable, String)
+ */
+ public static <T extends Comparable<T>> void assertGTE(T lhs, T rhs, String msg) {
+ assertGreaterThanOrEqual(lhs, rhs, msg);
+ }
+
+ /**
+ * Calls {@link #assertGreaterThanOrEqual(Comparable, Comparable, String)} with a default message.
+ *
+ * @param <T> a type
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @see #assertGreaterThanOrEqual(Comparable, Comparable, String)
+ */
+ public static <T extends Comparable<T>> void assertGreaterThanOrEqual(T lhs, T rhs) {
+ assertGreaterThanOrEqual(lhs, rhs, null);
+ }
+
+ /**
+ * Asserts that {@code lhs} is greater than or equal to {@code rhs}.
+ *
+ * @param <T> a type
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @throws RuntimeException if the assertion is not true.
+ */
+ public static <T extends Comparable<T>> void assertGreaterThanOrEqual(T lhs, T rhs, String msg) {
+ if (!(compare(lhs, rhs, msg) >= 0)) {
+ msg = Objects.toString(msg, "assertGreaterThanOrEqual")
+ + ": expected " + Objects.toString(lhs)
+ + " >= " + Objects.toString(rhs);
+ fail(msg);
+ }
+ }
+
+ /**
+ * Shorthand for {@link #assertGreaterThan(Comparable, Comparable)}.
+ *
+ * @param <T> a type
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @see #assertGreaterThan(Comparable, Comparable)
+ */
+ public static <T extends Comparable<T>> void assertGT(T lhs, T rhs) {
+ assertGreaterThan(lhs, rhs);
+ }
+
+ /**
+ * Shorthand for {@link #assertGreaterThan(Comparable, Comparable, String)}.
+ *
+ * @param <T> a type
+ * @param lhs the left hand value
+ * @param rhs the right hand value
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @see #assertGreaterThan(Comparable, Comparable, String)
+ */
+ public static <T extends Comparable<T>> void assertGT(T lhs, T rhs, String msg) {
+ assertGreaterThan(lhs, rhs, msg);
+ }
+
+ /**
+ * Calls {@link #assertGreaterThan(Comparable, Comparable, String)} with a default message.
+ *
+ * @param <T> a type
+ * @param lhs the left hand value
+ * @param rhs the right hand value
+ * @see #assertGreaterThan(Comparable, Comparable, String)
+ */
+ public static <T extends Comparable<T>> void assertGreaterThan(T lhs, T rhs) {
+ assertGreaterThan(lhs, rhs, null);
+ }
+
+ /**
+ * Asserts that {@code lhs} is greater than {@code rhs}.
+ *
+ * @param <T> a type
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @throws RuntimeException if the assertion is not true.
+ */
+ public static <T extends Comparable<T>> void assertGreaterThan(T lhs, T rhs, String msg) {
+ if (!(compare(lhs, rhs, msg) > 0)) {
+ msg = Objects.toString(msg, "assertGreaterThan")
+ + ": expected " + Objects.toString(lhs)
+ + " > " + Objects.toString(rhs);
+ fail(msg);
+ }
+ }
+
+ /**
+ * Shorthand for {@link #assertNotEquals(Object, Object)}.
+ *
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @see #assertNotEquals(Object, Object)
+ */
+ public static void assertNE(Object lhs, Object rhs) {
+ assertNotEquals(lhs, rhs);
+ }
+
+ /**
+ * Shorthand for {@link #assertNotEquals(Object, Object, String)}.
+ *
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @see #assertNotEquals(Object, Object, String)
+ */
+ public static void assertNE(Object lhs, Object rhs, String msg) {
+ assertNotEquals(lhs, rhs, msg);
+ }
+
+ /**
+ * Calls {@link #assertNotEquals(Object, Object, String)} with a default message.
+ *
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @see #assertNotEquals(Object, Object, String)
+ */
+ public static void assertNotEquals(Object lhs, Object rhs) {
+ assertNotEquals(lhs, rhs, null);
+ }
+
+ /**
+ * Asserts that {@code lhs} is not equal to {@code rhs}.
+ *
+ * @param lhs The left hand side of the comparison.
+ * @param rhs The right hand side of the comparison.
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @throws RuntimeException if the assertion is not true.
+ */
+ public static void assertNotEquals(Object lhs, Object rhs, String msg) {
+ if ((lhs == rhs) || (lhs != null && lhs.equals(rhs))) {
+ msg = Objects.toString(msg, "assertNotEquals")
+ + ": expected " + Objects.toString(lhs)
+ + " to not equal " + Objects.toString(rhs);
+ fail(msg);
+ }
+ }
+
+ /**
+ * Calls {@link #assertNull(Object, String)} with a default message.
+ *
+ * @param o The reference assumed to be null.
+ * @see #assertNull(Object, String)
+ */
+ public static void assertNull(Object o) {
+ assertNull(o, null);
+ }
+
+ /**
+ * Asserts that {@code o} is null.
+ *
+ * @param o The reference assumed to be null.
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @throws RuntimeException if the assertion is not true.
+ */
+ public static void assertNull(Object o, String msg) {
+ assertEquals(o, null, msg);
+ }
+
+ /**
+ * Calls {@link #assertNotNull(Object, String)} with a default message.
+ *
+ * @param o The reference assumed <i>not</i> to be null,
+ * @see #assertNotNull(Object, String)
+ */
+ public static void assertNotNull(Object o) {
+ assertNotNull(o, null);
+ }
+
+ /**
+ * Asserts that {@code o} is <i>not</i> null.
+ *
+ * @param o The reference assumed <i>not</i> to be null,
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @throws RuntimeException if the assertion is not true.
+ */
+ public static void assertNotNull(Object o, String msg) {
+ assertNotEquals(o, null, msg);
+ }
+
+ /**
+ * Calls {@link #assertFalse(boolean, String)} with a default message.
+ *
+ * @param value The value assumed to be false.
+ * @see #assertFalse(boolean, String)
+ */
+ public static void assertFalse(boolean value) {
+ assertFalse(value, null);
+ }
+
+ /**
+ * Asserts that {@code value} is {@code false}.
+ *
+ * @param value The value assumed to be false.
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @throws RuntimeException if the assertion is not true.
+ */
+ public static void assertFalse(boolean value, String msg) {
+ if (value) {
+ msg = Objects.toString(msg, "assertFalse")
+ + ": expected false, was true";
+ fail(msg);
+ }
+ }
+
+ /**
+ * Calls {@link #assertTrue(boolean, String)} with a default message.
+ *
+ * @param value The value assumed to be true.
+ * @see #assertTrue(boolean, String)
+ */
+ public static void assertTrue(boolean value) {
+ assertTrue(value, null);
+ }
+
+ /**
+ * Asserts that {@code value} is {@code true}.
+ *
+ * @param value The value assumed to be true.
+ * @param msg A description of the assumption; {@code null} for a default message.
+ * @throws RuntimeException if the assertion is not true.
+ */
+ public static void assertTrue(boolean value, String msg) {
+ if (!value) {
+ msg = Objects.toString(msg, "assertTrue")
+ + ": expected true, was false";
+ fail(msg);
+ }
+ }
+
+ private static <T extends Comparable<T>> int compare(T lhs, T rhs, String msg) {
+ if (lhs == null || rhs == null) {
+ fail(lhs, rhs, msg + ": values must be non-null:", ",");
+ }
+ return lhs.compareTo(rhs);
+ }
+
+/**
+ * Asserts that two strings are equal.
+ *
+ * If strings are not equals, then exception message
+ * will contain {@code msg} followed by list of mismatched lines.
+ *
+ * @param str1 First string to compare.
+ * @param str2 Second string to compare.
+ * @param msg A description of the assumption.
+ * @throws RuntimeException if strings are not equal.
+ */
+ public static void assertStringsEqual(String str1, String str2,
+ String msg) {
+ String lineSeparator = System.getProperty("line.separator");
+ String str1Lines[] = str1.split(lineSeparator);
+ String str2Lines[] = str2.split(lineSeparator);
+
+ int minLength = Math.min(str1Lines.length, str2Lines.length);
+ String longestStringLines[] = ((str1Lines.length == minLength) ?
+ str2Lines : str1Lines);
+
+ boolean stringsAreDifferent = false;
+
+ StringBuilder messageBuilder = new StringBuilder(msg);
+
+ messageBuilder.append("\n");
+
+ for (int line = 0; line < minLength; line++) {
+ if (!str1Lines[line].equals(str2Lines[line])) {
+ messageBuilder.append(String.
+ format("[line %d] '%s' differs " +
+ "from '%s'\n",
+ line,
+ str1Lines[line],
+ str2Lines[line]));
+ stringsAreDifferent = true;
+ }
+ }
+
+ if (minLength < longestStringLines.length) {
+ String stringName = ((longestStringLines == str1Lines) ?
+ "first" : "second");
+ messageBuilder.append(String.format("Only %s string contains " +
+ "following lines:\n",
+ stringName));
+ stringsAreDifferent = true;
+ for(int line = minLength; line < longestStringLines.length; line++) {
+ messageBuilder.append(String.
+ format("[line %d] '%s'", line,
+ longestStringLines[line]));
+ }
+ }
+
+ if (stringsAreDifferent) {
+ fail(messageBuilder.toString());
+ }
+ }
+
+ /**
+ * Returns a string formatted with a message and expected and actual values.
+ * @param lhs the actual value
+ * @param rhs the expected value
+ * @param message the actual value
+ * @param relation the asserted relationship between lhs and rhs
+ * @return a formatted string
+ */
+ public static String format(Object lhs, Object rhs, String message, String relation) {
+ StringBuilder sb = new StringBuilder(80);
+ if (message != null) {
+ sb.append(message);
+ sb.append(' ');
+ }
+ sb.append("<");
+ sb.append(Objects.toString(lhs));
+ sb.append("> ");
+ sb.append(Objects.toString(relation, ","));
+ sb.append(" <");
+ sb.append(Objects.toString(rhs));
+ sb.append(">");
+ return sb.toString();
+ }
+
+ /**
+ * Fail reports a failure with message fail.
+ *
+ * @throws RuntimeException always
+ */
+ public static void fail() {
+ fail("fail");
+ }
+
+ /**
+ * Fail reports a failure with a message.
+ * @param message for the failure
+ * @throws RuntimeException always
+ */
+ public static void fail(String message) {
+ throw new RuntimeException(message);
+ }
+
+ /**
+ * Fail reports a failure with a formatted message.
+ *
+ * @param lhs the actual value
+ * @param rhs the expected value
+ * @param message to be format before the expected and actual values
+ * @param relation the asserted relationship between lhs and rhs
+ * @throws RuntimeException always
+ */
+ public static void fail(Object lhs, Object rhs, String message, String relation) {
+ throw new RuntimeException(format(lhs, rhs, message, relation));
+ }
+
+ /**
+ * Fail reports a failure with a message and a cause.
+ * @param message to be format before the expected and actual values
+ * @param cause the exception that caused this failure
+ * @throws RuntimeException always
+ */
+ public static void fail(String message, Throwable cause) {
+ throw new RuntimeException(message, cause);
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/BuildHelper.java b/test/lib/jdk/test/lib/BuildHelper.java
new file mode 100644
index 0000000..1e9d697
--- /dev/null
+++ b/test/lib/jdk/test/lib/BuildHelper.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2014, 2016, 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 jdk.test.lib;
+
+import java.io.File;
+import java.io.FileReader;
+import java.util.Properties;
+
+public class BuildHelper {
+
+ /**
+ * Commercial builds should have the BUILD_TYPE set to commercial
+ * within the release file, found at the root of the JDK.
+ */
+ public static boolean isCommercialBuild() throws Exception {
+ String buildType = getReleaseProperty("BUILD_TYPE","notFound");
+ return buildType.equals("commercial");
+ }
+
+
+ /**
+ * Return the value for property key, or defaultValue if no property not found.
+ * If present, double quotes are trimmed.
+ */
+ public static String getReleaseProperty(String key, String defaultValue) throws Exception {
+ Properties properties = getReleaseProperties();
+ String value = properties.getProperty(key, defaultValue);
+ return trimDoubleQuotes(value);
+ }
+
+ /**
+ * Return the value for property key, or null if no property not found.
+ * If present, double quotes are trimmed.
+ */
+ public static String getReleaseProperty(String key) throws Exception {
+ return getReleaseProperty(key, null);
+ }
+
+ /**
+ * Get properties from the release file
+ */
+ public static Properties getReleaseProperties() throws Exception {
+ Properties properties = new Properties();
+ properties.load(new FileReader(getReleaseFile()));
+ return properties;
+ }
+
+ /**
+ * Every JDK has a release file in its root.
+ * @return A handler to the release file.
+ */
+ public static File getReleaseFile() throws Exception {
+ String jdkPath = getJDKRoot();
+ File releaseFile = new File(jdkPath,"release");
+ if ( ! releaseFile.canRead() ) {
+ throw new Exception("Release file is not readable, or it is absent: " +
+ releaseFile.getCanonicalPath());
+ }
+ return releaseFile;
+ }
+
+ /**
+ * Returns path to the JDK under test.
+ * This path is obtained through the test.jdk property, usually set by JTREG.
+ */
+ public static String getJDKRoot() {
+ String jdkPath = System.getProperty("test.jdk");
+ if (jdkPath == null) {
+ throw new RuntimeException("System property 'test.jdk' not set. This property is normally set by jtreg. "
+ + "When running test separately, set this property using '-Dtest.jdk=/path/to/jdk'.");
+ }
+ return jdkPath;
+ }
+
+ /**
+ * Trim double quotes from the beginning and the end of the given string.
+ * @param original string to trim.
+ * @return a new trimmed string.
+ */
+ public static String trimDoubleQuotes(String original) {
+ if (original == null) { return null; }
+ String trimmed = original.replaceAll("^\"+|\"+$", "");
+ return trimmed;
+ }
+}
diff --git a/test/lib/jdk/test/lib/ByteCodeLoader.java b/test/lib/jdk/test/lib/ByteCodeLoader.java
new file mode 100644
index 0000000..14f98f8
--- /dev/null
+++ b/test/lib/jdk/test/lib/ByteCodeLoader.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2013, 2016, 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 jdk.test.lib;
+
+import java.security.SecureClassLoader;
+
+/**
+ * {@code ByteCodeLoader} can be used for easy loading of byte code already
+ * present in memory.
+ *
+ * {@code InMemoryCompiler} can be used for compiling source code in a string
+ * into byte code, which then can be loaded with {@code ByteCodeLoader}.
+ *
+ * @see InMemoryCompiler
+ */
+public class ByteCodeLoader extends SecureClassLoader {
+ private final String className;
+ private final byte[] byteCode;
+ private volatile Class<?> holder;
+
+ /**
+ * Creates a new {@code ByteCodeLoader} ready to load a class with the
+ * given name and the given byte code.
+ *
+ * @param className The name of the class
+ * @param byteCode The byte code of the class
+ */
+ public ByteCodeLoader(String className, byte[] byteCode) {
+ this.className = className;
+ this.byteCode = byteCode;
+ }
+
+ @Override
+ public Class<?> loadClass(String name) throws ClassNotFoundException {
+ if (!name.equals(className)) {
+ return super.loadClass(name);
+ }
+ if (holder == null) {
+ synchronized(this) {
+ if (holder == null) {
+ holder = findClass(name);
+ }
+ }
+ }
+ return holder;
+ }
+
+ @Override
+ protected Class<?> findClass(String name) throws ClassNotFoundException {
+ if (!name.equals(className)) {
+ throw new ClassNotFoundException(name);
+ }
+
+ return defineClass(name, byteCode, 0, byteCode.length);
+ }
+
+ /**
+ * Utility method for creating a new {@code ByteCodeLoader} and then
+ * directly load the given byte code.
+ *
+ * @param className The name of the class
+ * @param byteCode The byte code for the class
+ * @throws ClassNotFoundException if the class can't be loaded
+ * @return A {@see Class} object representing the class
+ */
+ public static Class<?> load(String className, byte[] byteCode) throws ClassNotFoundException {
+ return new ByteCodeLoader(className, byteCode).loadClass(className);
+ }
+}
diff --git a/test/lib/jdk/test/lib/FileInstaller.java b/test/lib/jdk/test/lib/FileInstaller.java
new file mode 100644
index 0000000..1247dee
--- /dev/null
+++ b/test/lib/jdk/test/lib/FileInstaller.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2015, 2016, 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 jdk.test.lib;
+
+import java.io.IOException;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.StandardCopyOption;
+import java.nio.file.attribute.BasicFileAttributes;
+
+/**
+ * Copy a resource: file or directory recursively, using relative path(src and dst)
+ * which are applied to test source directory(src) and current directory(dst)
+ */
+public class FileInstaller {
+ /**
+ * @param args source and destination
+ * @throws IOException if an I/O error occurs
+ */
+ public static void main(String[] args) throws IOException {
+ if (args.length != 2) {
+ throw new IllegalArgumentException("Unexpected number of arguments for file copy");
+ }
+ Path src = Paths.get(Utils.TEST_SRC, args[0]).toAbsolutePath();
+ Path dst = Paths.get(args[1]).toAbsolutePath();
+ if (src.toFile().exists()) {
+ if (src.toFile().isDirectory()) {
+ Files.walkFileTree(src, new CopyFileVisitor(src, dst));
+ } else {
+ Path dstDir = dst.getParent();
+ if (!dstDir.toFile().exists()) {
+ Files.createDirectories(dstDir);
+ }
+ Files.copy(src, dst, StandardCopyOption.REPLACE_EXISTING);
+ }
+ } else {
+ throw new IOException("Can't find source " + src);
+ }
+ }
+
+ private static class CopyFileVisitor extends SimpleFileVisitor<Path> {
+ private final Path copyFrom;
+ private final Path copyTo;
+
+ public CopyFileVisitor(Path copyFrom, Path copyTo) {
+ this.copyFrom = copyFrom;
+ this.copyTo = copyTo;
+ }
+
+ @Override
+ public FileVisitResult preVisitDirectory(Path file,
+ BasicFileAttributes attrs) throws IOException {
+ Path relativePath = file.relativize(copyFrom);
+ Path destination = copyTo.resolve(relativePath);
+ if (!destination.toFile().exists()) {
+ Files.createDirectories(destination);
+ }
+ return FileVisitResult.CONTINUE;
+ }
+
+ @Override
+ public FileVisitResult visitFile(Path file,
+ BasicFileAttributes attrs) throws IOException {
+ if (!file.toFile().isFile()) {
+ return FileVisitResult.CONTINUE;
+ }
+ Path relativePath = copyFrom.relativize(file);
+ Path destination = copyTo.resolve(relativePath);
+ Files.copy(file, destination, StandardCopyOption.COPY_ATTRIBUTES);
+ return FileVisitResult.CONTINUE;
+ }
+ }
+}
diff --git a/test/lib/jdk/test/lib/InfiniteLoop.java b/test/lib/jdk/test/lib/InfiniteLoop.java
new file mode 100644
index 0000000..15097b6
--- /dev/null
+++ b/test/lib/jdk/test/lib/InfiniteLoop.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2014, 2016, 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 jdk.test.lib;
+
+import java.util.Objects;
+
+/**
+ * Class which runs another Runnable in infinite loop with certain pauses
+ * between cycles.
+ */
+public class InfiniteLoop implements Runnable {
+ private final Runnable target;
+ private final long mills;
+
+
+ /**
+ * @param target a target to run in a loop
+ * @param mills the length of pause time in milliseconds
+ * @throws NullPointerException if target is null
+ * @throws IllegalArgumentException if the value of millis is negative
+ */
+ public InfiniteLoop(Runnable target, long mills) {
+ Objects.requireNonNull(target);
+ if (mills < 0) {
+ throw new IllegalArgumentException("mills < 0");
+ }
+ this.target = target;
+ this.mills = mills;
+ }
+
+ @Override
+ public void run() {
+ try {
+ while (true) {
+ target.run();
+ if (mills > 0) {
+ Thread.sleep(mills);
+ }
+ }
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new Error(e);
+ }
+ }
+}
diff --git a/test/lib/jdk/test/lib/JDKToolFinder.java b/test/lib/jdk/test/lib/JDKToolFinder.java
new file mode 100644
index 0000000..a9a3598
--- /dev/null
+++ b/test/lib/jdk/test/lib/JDKToolFinder.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2013, 2016, 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 jdk.test.lib;
+
+import java.io.FileNotFoundException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+public final class JDKToolFinder {
+
+ private JDKToolFinder() {
+ }
+
+ /**
+ * Returns the full path to an executable in jdk/bin based on System
+ * property {@code test.jdk} or {@code compile.jdk} (both are set by the jtreg test suite)
+ *
+ * @return Full path to an executable in jdk/bin
+ */
+ public static String getJDKTool(String tool) {
+
+ // First try to find the executable in test.jdk
+ try {
+ return getTool(tool, "test.jdk");
+ } catch (FileNotFoundException e) {
+
+ }
+
+ // Now see if it's available in compile.jdk
+ try {
+ return getTool(tool, "compile.jdk");
+ } catch (FileNotFoundException e) {
+ throw new RuntimeException("Failed to find " + tool +
+ ", looked in test.jdk (" + System.getProperty("test.jdk") +
+ ") and compile.jdk (" + System.getProperty("compile.jdk") + ")");
+ }
+ }
+
+ /**
+ * Returns the full path to an executable in jdk/bin based on System
+ * property {@code compile.jdk}
+ *
+ * @return Full path to an executable in jdk/bin
+ */
+ public static String getCompileJDKTool(String tool) {
+ try {
+ return getTool(tool, "compile.jdk");
+ } catch (FileNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Returns the full path to an executable in jdk/bin based on System
+ * property {@code test.jdk}
+ *
+ * @return Full path to an executable in jdk/bin
+ */
+ public static String getTestJDKTool(String tool) {
+ try {
+ return getTool(tool, "test.jdk");
+ } catch (FileNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private static String getTool(String tool, String property) throws FileNotFoundException {
+ String jdkPath = System.getProperty(property);
+
+ if (jdkPath == null) {
+ throw new RuntimeException(
+ "System property '" + property + "' not set. This property is normally set by jtreg. "
+ + "When running test separately, set this property using '-D" + property + "=/path/to/jdk'.");
+ }
+
+ Path toolName = Paths.get("bin", tool + (Platform.isWindows() ? ".exe" : ""));
+
+ Path jdkTool = Paths.get(jdkPath, toolName.toString());
+ if (!jdkTool.toFile().exists()) {
+ throw new FileNotFoundException("Could not find file " + jdkTool.toAbsolutePath());
+ }
+
+ return jdkTool.toAbsolutePath().toString();
+ }
+}
diff --git a/test/lib/jdk/test/lib/JDKToolLauncher.java b/test/lib/jdk/test/lib/JDKToolLauncher.java
new file mode 100644
index 0000000..38e7b45
--- /dev/null
+++ b/test/lib/jdk/test/lib/JDKToolLauncher.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2013, 2016, 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 jdk.test.lib;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import jdk.test.lib.process.ProcessTools;
+
+/**
+ * A utility for constructing command lines for starting JDK tool processes.
+ *
+ * The JDKToolLauncher can in particular be combined with a
+ * java.lang.ProcessBuilder to easily run a JDK tool. For example, the following
+ * code run {@code jmap -heap} against a process with GC logging turned on for
+ * the {@code jmap} process:
+ *
+ * <pre>
+ * {@code
+ * JDKToolLauncher jmap = JDKToolLauncher.create("jmap")
+ * .addVMArg("-XX:+PrintGC");
+ * .addVMArg("-XX:+PrintGCDetails")
+ * .addToolArg("-heap")
+ * .addToolArg(pid);
+ * ProcessBuilder pb = new ProcessBuilder(jmap.getCommand());
+ * Process p = pb.start();
+ * }
+ * </pre>
+ */
+public class JDKToolLauncher {
+ private final String executable;
+ private final List<String> vmArgs = new ArrayList<String>();
+ private final List<String> toolArgs = new ArrayList<String>();
+
+ private JDKToolLauncher(String tool, boolean useCompilerJDK) {
+ if (useCompilerJDK) {
+ executable = JDKToolFinder.getJDKTool(tool);
+ } else {
+ executable = JDKToolFinder.getTestJDKTool(tool);
+ }
+ vmArgs.addAll(Arrays.asList(ProcessTools.getPlatformSpecificVMArgs()));
+ }
+
+ /**
+ * Creates a new JDKToolLauncher for the specified tool. Using tools path
+ * from the compiler JDK.
+ *
+ * @param tool
+ * The name of the tool
+ * @return A new JDKToolLauncher
+ */
+ public static JDKToolLauncher create(String tool) {
+ return new JDKToolLauncher(tool, true);
+ }
+
+ /**
+ * Creates a new JDKToolLauncher for the specified tool in the Tested JDK.
+ *
+ * @param tool
+ * The name of the tool
+ *
+ * @return A new JDKToolLauncher
+ */
+ public static JDKToolLauncher createUsingTestJDK(String tool) {
+ return new JDKToolLauncher(tool, false);
+ }
+
+ /**
+ * Adds an argument to the JVM running the tool.
+ *
+ * The JVM arguments are passed to the underlying JVM running the tool.
+ * Arguments will automatically be prepended with "-J".
+ *
+ * Any platform specific arguments required for running the tool are
+ * automatically added.
+ *
+ *
+ * @param arg
+ * The argument to VM running the tool
+ * @return The JDKToolLauncher instance
+ */
+ public JDKToolLauncher addVMArg(String arg) {
+ vmArgs.add(arg);
+ return this;
+ }
+
+ /**
+ * Adds an argument to the tool.
+ *
+ * @param arg
+ * The argument to the tool
+ * @return The JDKToolLauncher instance
+ */
+ public JDKToolLauncher addToolArg(String arg) {
+ toolArgs.add(arg);
+ return this;
+ }
+
+ /**
+ * Returns the command that can be used for running the tool.
+ *
+ * @return An array whose elements are the arguments of the command.
+ */
+ public String[] getCommand() {
+ List<String> command = new ArrayList<String>();
+ command.add(executable);
+ // Add -J in front of all vmArgs
+ for (String arg : vmArgs) {
+ command.add("-J" + arg);
+ }
+ command.addAll(toolArgs);
+ return command.toArray(new String[command.size()]);
+ }
+}
diff --git a/test/lib/jdk/test/lib/Platform.java b/test/lib/jdk/test/lib/Platform.java
new file mode 100644
index 0000000..26bbf1b
--- /dev/null
+++ b/test/lib/jdk/test/lib/Platform.java
@@ -0,0 +1,268 @@
+/*
+ * Copyright (c) 2013, 2016, 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 jdk.test.lib;
+
+import java.util.regex.Pattern;
+
+public class Platform {
+ public static final String vmName = System.getProperty("java.vm.name");
+ public static final String vmInfo = System.getProperty("java.vm.info");
+ private static final String osVersion = System.getProperty("os.version");
+ private static int osVersionMajor = -1;
+ private static int osVersionMinor = -1;
+ private static final String osName = System.getProperty("os.name");
+ private static final String dataModel = System.getProperty("sun.arch.data.model");
+ private static final String vmVersion = System.getProperty("java.vm.version");
+ private static final String jdkDebug = System.getProperty("jdk.debug");
+ private static final String osArch = System.getProperty("os.arch");
+ private static final String userName = System.getProperty("user.name");
+ private static final String compiler = System.getProperty("sun.management.compiler");
+
+ public static boolean isClient() {
+ return vmName.endsWith(" Client VM");
+ }
+
+ public static boolean isServer() {
+ return vmName.endsWith(" Server VM");
+ }
+
+ public static boolean isGraal() {
+ return vmName.endsWith(" Graal VM");
+ }
+
+ public static boolean isZero() {
+ return vmName.endsWith(" Zero VM");
+ }
+
+ public static boolean isMinimal() {
+ return vmName.endsWith(" Minimal VM");
+ }
+
+ public static boolean isEmbedded() {
+ return vmName.contains("Embedded");
+ }
+
+ public static boolean isEmulatedClient() {
+ return vmInfo.contains(" emulated-client");
+ }
+
+ public static boolean isTieredSupported() {
+ return compiler.contains("Tiered Compilers");
+ }
+
+ public static boolean isInt() {
+ return vmInfo.contains("interpreted");
+ }
+
+ public static boolean isMixed() {
+ return vmInfo.contains("mixed");
+ }
+
+ public static boolean isComp() {
+ return vmInfo.contains("compiled");
+ }
+
+ public static boolean is32bit() {
+ return dataModel.equals("32");
+ }
+
+ public static boolean is64bit() {
+ return dataModel.equals("64");
+ }
+
+ public static boolean isAix() {
+ return isOs("aix");
+ }
+
+ public static boolean isLinux() {
+ return isOs("linux");
+ }
+
+ public static boolean isOSX() {
+ return isOs("mac");
+ }
+
+ public static boolean isSolaris() {
+ return isOs("sunos");
+ }
+
+ public static boolean isWindows() {
+ return isOs("win");
+ }
+
+ private static boolean isOs(String osname) {
+ return osName.toLowerCase().startsWith(osname.toLowerCase());
+ }
+
+ public static String getOsName() {
+ return osName;
+ }
+
+ // Os version support.
+ private static void init_version() {
+ try {
+ final String[] tokens = osVersion.split("\\.");
+ if (tokens.length > 0) {
+ osVersionMajor = Integer.parseInt(tokens[0]);
+ if (tokens.length > 1) {
+ osVersionMinor = Integer.parseInt(tokens[1]);
+ }
+ }
+ } catch (NumberFormatException e) {
+ osVersionMajor = osVersionMinor = 0;
+ }
+ }
+
+ // Returns major version number from os.version system property.
+ // E.g. 5 on Solaris 10 and 3 on SLES 11.3 (for the linux kernel version).
+ public static int getOsVersionMajor() {
+ if (osVersionMajor == -1) init_version();
+ return osVersionMajor;
+ }
+
+ // Returns minor version number from os.version system property.
+ // E.g. 10 on Solaris 10 and 0 on SLES 11.3 (for the linux kernel version).
+ public static int getOsVersionMinor() {
+ if (osVersionMinor == -1) init_version();
+ return osVersionMinor;
+ }
+
+ public static boolean isDebugBuild() {
+ return (jdkDebug.toLowerCase().contains("debug"));
+ }
+
+ public static boolean isSlowDebugBuild() {
+ return (jdkDebug.toLowerCase().equals("slowdebug"));
+ }
+
+ public static boolean isFastDebugBuild() {
+ return (jdkDebug.toLowerCase().equals("fastdebug"));
+ }
+
+ public static String getVMVersion() {
+ return vmVersion;
+ }
+
+ public static boolean isAArch64() {
+ return isArch("aarch64");
+ }
+
+ public static boolean isARM() {
+ return isArch("arm.*");
+ }
+
+ public static boolean isPPC() {
+ return isArch("ppc.*");
+ }
+
+ // Returns true for IBM z System running linux.
+ public static boolean isS390x() {
+ return isArch("s390.*") || isArch("s/390.*") || isArch("zArch_64");
+ }
+
+ // Returns true for sparc and sparcv9.
+ public static boolean isSparc() {
+ return isArch("sparc.*");
+ }
+
+ public static boolean isX64() {
+ // On OSX it's 'x86_64' and on other (Linux, Windows and Solaris) platforms it's 'amd64'
+ return isArch("(amd64)|(x86_64)");
+ }
+
+ public static boolean isX86() {
+ // On Linux it's 'i386', Windows 'x86' without '_64' suffix.
+ return isArch("(i386)|(x86(?!_64))");
+ }
+
+ public static String getOsArch() {
+ return osArch;
+ }
+
+ /**
+ * Return a boolean for whether we expect to be able to attach
+ * the SA to our own processes on this system.
+ */
+ public static boolean shouldSAAttach() throws Exception {
+
+ if (isAix()) {
+ return false; // SA not implemented.
+ } else if (isLinux()) {
+ if (isS390x()) { return false; } // SA not implemented.
+ return canPtraceAttachLinux();
+ } else if (isOSX()) {
+ return canAttachOSX();
+ } else {
+ // Other platforms expected to work:
+ return true;
+ }
+ }
+
+ /**
+ * On Linux, first check the SELinux boolean "deny_ptrace" and return false
+ * as we expect to be denied if that is "1". Then expect permission to attach
+ * if we are root, so return true. Then return false for an expected denial
+ * if "ptrace_scope" is 1, and true otherwise.
+ */
+ public static boolean canPtraceAttachLinux() throws Exception {
+
+ // SELinux deny_ptrace:
+ String deny_ptrace = Utils.fileAsString("/sys/fs/selinux/booleans/deny_ptrace");
+ if (deny_ptrace != null && deny_ptrace.contains("1")) {
+ // ptrace will be denied:
+ return false;
+ }
+
+ // YAMA enhanced security ptrace_scope:
+ // 0 - a process can PTRACE_ATTACH to any other process running under the same uid
+ // 1 - restricted ptrace: a process must be a children of the inferior or user is root
+ // 2 - only processes with CAP_SYS_PTRACE may use ptrace or user is root
+ // 3 - no attach: no processes may use ptrace with PTRACE_ATTACH
+ String ptrace_scope = Utils.fileAsString("/proc/sys/kernel/yama/ptrace_scope");
+ if (ptrace_scope != null) {
+ if (ptrace_scope.startsWith("3")) {
+ return false;
+ }
+ if (!userName.equals("root") && !ptrace_scope.startsWith("0")) {
+ // ptrace will be denied:
+ return false;
+ }
+ }
+ // Otherwise expect to be permitted:
+ return true;
+ }
+
+ /**
+ * On OSX, expect permission to attach only if we are root.
+ */
+ public static boolean canAttachOSX() throws Exception {
+ return userName.equals("root");
+ }
+
+ private static boolean isArch(String archnameRE) {
+ return Pattern.compile(archnameRE, Pattern.CASE_INSENSITIVE)
+ .matcher(osArch)
+ .matches();
+ }
+}
diff --git a/test/lib/jdk/test/lib/SecurityTools.java b/test/lib/jdk/test/lib/SecurityTools.java
new file mode 100644
index 0000000..8e8e6cf
--- /dev/null
+++ b/test/lib/jdk/test/lib/SecurityTools.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * 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 jdk.test.lib;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+public class SecurityTools {
+
+ public static final String RESPONSE_FILE = "security_tools_response.txt";
+
+ private static ProcessBuilder getProcessBuilder(String tool, List<String> args) {
+ JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK(tool)
+ .addVMArg("-Duser.language=en")
+ .addVMArg("-Duser.country=US")
+ .addVMArg("-Djava.security.egd=file:/dev/./urandom");
+ for (String arg : args) {
+ if (arg.startsWith("-J")) {
+ launcher.addVMArg(arg.substring(2));
+ } else {
+ launcher.addToolArg(arg);
+ }
+ }
+ String[] cmds = launcher.getCommand();
+ String cmdLine = Arrays.stream(cmds).collect(Collectors.joining(" "));
+ System.out.println("Command line: [" + cmdLine + "]");
+ return new ProcessBuilder(cmds);
+ }
+
+ // keytool
+
+ public static OutputAnalyzer keytool(List<String> args)
+ throws Exception {
+
+ ProcessBuilder pb = getProcessBuilder("keytool", args);
+
+ Path p = Paths.get(RESPONSE_FILE);
+ if (!Files.exists(p)) {
+ Files.createFile(p);
+ }
+ pb.redirectInput(ProcessBuilder.Redirect.from(new File(RESPONSE_FILE)));
+
+ try {
+ return ProcessTools.executeProcess(pb);
+ } finally {
+ Files.delete(p);
+ }
+ }
+
+ // Only call this if there is no white space in every argument
+ public static OutputAnalyzer keytool(String args) throws Exception {
+ return keytool(args.split("\\s+"));
+ }
+
+ public static OutputAnalyzer keytool(String... args) throws Exception {
+ return keytool(List.of(args));
+ }
+
+ public static void setResponse(String... responses) throws IOException {
+ String text;
+ if (responses.length > 0) {
+ text = Stream.of(responses).collect(
+ Collectors.joining("\n", "", "\n"));
+ } else {
+ text = "";
+ }
+ Files.write(Paths.get(RESPONSE_FILE), text.getBytes());
+ }
+
+ // jarsigner
+
+ public static OutputAnalyzer jarsigner(List<String> args)
+ throws Exception {
+ return ProcessTools.executeProcess(
+ getProcessBuilder("jarsigner", args));
+ }
+
+ // Only call this if there is no white space in every argument
+ public static OutputAnalyzer jarsigner(String args) throws Exception {
+
+ return jarsigner(args.split("\\s+"));
+ }
+
+ public static OutputAnalyzer jarsigner(String... args) throws Exception {
+ return jarsigner(List.of(args));
+ }
+}
+
diff --git a/test/lib/jdk/test/lib/TimeLimitedRunner.java b/test/lib/jdk/test/lib/TimeLimitedRunner.java
new file mode 100644
index 0000000..cea92f3
--- /dev/null
+++ b/test/lib/jdk/test/lib/TimeLimitedRunner.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2014, 2016, 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 jdk.test.lib;
+
+import java.util.Objects;
+import java.util.concurrent.Callable;
+
+/**
+ * Auxiliary class to run target w/ given timeout.
+ */
+public class TimeLimitedRunner implements Callable<Void> {
+ private final long stoptime;
+ private final long timeout;
+ private final double factor;
+ private final Callable<Boolean> target;
+
+ /**
+ * @param timeout a timeout. zero means no time limitation
+ * @param factor a multiplier used to estimate next iteration time
+ * @param target a target to run
+ * @throws NullPointerException if target is null
+ * @throws IllegalArgumentException if timeout is negative or
+ factor isn't positive
+ */
+ public TimeLimitedRunner(long timeout, double factor,
+ Callable<Boolean> target) {
+ Objects.requireNonNull(target, "target must not be null");
+ if (timeout < 0) {
+ throw new IllegalArgumentException("timeout[" + timeout + "] < 0");
+ }
+ if (factor <= 0d) {
+ throw new IllegalArgumentException("factor[" + factor + "] <= 0");
+ }
+ this.stoptime = System.currentTimeMillis() + timeout;
+ this.timeout = timeout;
+ this.factor = factor;
+ this.target = target;
+ }
+
+ /**
+ * Runs @{linkplan target} while it returns true and timeout isn't exceeded
+ */
+ @Override
+ public Void call() throws Exception {
+ long maxDuration = 0L;
+ long iterStart = System.currentTimeMillis();
+ if (timeout != 0 && iterStart > stoptime) {
+ return null;
+ }
+ while (target.call()) {
+ if (timeout != 0) {
+ long iterDuration = System.currentTimeMillis() - iterStart;
+ maxDuration = Math.max(maxDuration, iterDuration);
+ iterStart = System.currentTimeMillis();
+ if (iterStart + (maxDuration * factor) > stoptime) {
+ System.out.println("Not enough time to continue execution. "
+ + "Interrupted.");
+ break;
+ }
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/Utils.java b/test/lib/jdk/test/lib/Utils.java
new file mode 100644
index 0000000..6f83759
--- /dev/null
+++ b/test/lib/jdk/test/lib/Utils.java
@@ -0,0 +1,684 @@
+/*
+ * Copyright (c) 2013, 2016, 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 jdk.test.lib;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.MalformedURLException;
+import java.net.ServerSocket;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.net.UnknownHostException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Objects;
+import java.util.Random;
+import java.util.function.BooleanSupplier;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static jdk.test.lib.Asserts.assertTrue;
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.process.OutputAnalyzer;
+
+/**
+ * Common library for various test helper functions.
+ */
+public final class Utils {
+
+ /**
+ * Returns the value of 'test.class.path' system property.
+ */
+ public static final String TEST_CLASS_PATH = System.getProperty("test.class.path", ".");
+
+ /**
+ * Returns the sequence used by operating system to separate lines.
+ */
+ public static final String NEW_LINE = System.getProperty("line.separator");
+
+ /**
+ * Returns the value of 'test.vm.opts' system property.
+ */
+ public static final String VM_OPTIONS = System.getProperty("test.vm.opts", "").trim();
+
+ /**
+ * Returns the value of 'test.java.opts' system property.
+ */
+ public static final String JAVA_OPTIONS = System.getProperty("test.java.opts", "").trim();
+
+ /**
+ * Returns the value of 'test.src' system property.
+ */
+ public static final String TEST_SRC = System.getProperty("test.src", "").trim();
+
+ /*
+ * Returns the value of 'test.jdk' system property
+ */
+ public static final String TEST_JDK = System.getProperty("test.jdk");
+
+ /**
+ * Returns the value of 'test.classes' system property
+ */
+ public static final String TEST_CLASSES = System.getProperty("test.classes", ".");
+ /**
+ * Defines property name for seed value.
+ */
+ public static final String SEED_PROPERTY_NAME = "jdk.test.lib.random.seed";
+
+ /* (non-javadoc)
+ * Random generator with (or without) predefined seed. Depends on
+ * "jdk.test.lib.random.seed" property value.
+ */
+ private static volatile Random RANDOM_GENERATOR;
+
+ /**
+ * Contains the seed value used for {@link java.util.Random} creation.
+ */
+ public static final long SEED = Long.getLong(SEED_PROPERTY_NAME, new Random().nextLong());
+ /**
+ * Returns the value of 'test.timeout.factor' system property
+ * converted to {@code double}.
+ */
+ public static final double TIMEOUT_FACTOR;
+ static {
+ String toFactor = System.getProperty("test.timeout.factor", "1.0");
+ TIMEOUT_FACTOR = Double.parseDouble(toFactor);
+ }
+
+ /**
+ * Returns the value of JTREG default test timeout in milliseconds
+ * converted to {@code long}.
+ */
+ public static final long DEFAULT_TEST_TIMEOUT = TimeUnit.SECONDS.toMillis(120);
+
+ private Utils() {
+ // Private constructor to prevent class instantiation
+ }
+
+ /**
+ * Returns the list of VM options.
+ *
+ * @return List of VM options
+ */
+ public static List<String> getVmOptions() {
+ return Arrays.asList(safeSplitString(VM_OPTIONS));
+ }
+
+ /**
+ * Returns the list of VM options with -J prefix.
+ *
+ * @return The list of VM options with -J prefix
+ */
+ public static List<String> getForwardVmOptions() {
+ String[] opts = safeSplitString(VM_OPTIONS);
+ for (int i = 0; i < opts.length; i++) {
+ opts[i] = "-J" + opts[i];
+ }
+ return Arrays.asList(opts);
+ }
+
+ /**
+ * Returns the default JTReg arguments for a jvm running a test.
+ * This is the combination of JTReg arguments test.vm.opts and test.java.opts.
+ * @return An array of options, or an empty array if no options.
+ */
+ public static String[] getTestJavaOpts() {
+ List<String> opts = new ArrayList<String>();
+ Collections.addAll(opts, safeSplitString(VM_OPTIONS));
+ Collections.addAll(opts, safeSplitString(JAVA_OPTIONS));
+ return opts.toArray(new String[0]);
+ }
+
+ /**
+ * Combines given arguments with default JTReg arguments for a jvm running a test.
+ * This is the combination of JTReg arguments test.vm.opts and test.java.opts
+ * @return The combination of JTReg test java options and user args.
+ */
+ public static String[] addTestJavaOpts(String... userArgs) {
+ List<String> opts = new ArrayList<String>();
+ Collections.addAll(opts, getTestJavaOpts());
+ Collections.addAll(opts, userArgs);
+ return opts.toArray(new String[0]);
+ }
+
+ /**
+ * Removes any options specifying which GC to use, for example "-XX:+UseG1GC".
+ * Removes any options matching: -XX:(+/-)Use*GC
+ * Used when a test need to set its own GC version. Then any
+ * GC specified by the framework must first be removed.
+ * @return A copy of given opts with all GC options removed.
+ */
+ private static final Pattern useGcPattern = Pattern.compile(
+ "(?:\\-XX\\:[\\+\\-]Use.+GC)"
+ + "|(?:\\-Xconcgc)");
+ public static List<String> removeGcOpts(List<String> opts) {
+ List<String> optsWithoutGC = new ArrayList<String>();
+ for (String opt : opts) {
+ if (useGcPattern.matcher(opt).matches()) {
+ System.out.println("removeGcOpts: removed " + opt);
+ } else {
+ optsWithoutGC.add(opt);
+ }
+ }
+ return optsWithoutGC;
+ }
+
+ /**
+ * Returns the default JTReg arguments for a jvm running a test without
+ * options that matches regular expressions in {@code filters}.
+ * This is the combination of JTReg arguments test.vm.opts and test.java.opts.
+ * @param filters Regular expressions used to filter out options.
+ * @return An array of options, or an empty array if no options.
+ */
+ public static String[] getFilteredTestJavaOpts(String... filters) {
+ String options[] = getTestJavaOpts();
+
+ if (filters.length == 0) {
+ return options;
+ }
+
+ List<String> filteredOptions = new ArrayList<String>(options.length);
+ Pattern patterns[] = new Pattern[filters.length];
+ for (int i = 0; i < filters.length; i++) {
+ patterns[i] = Pattern.compile(filters[i]);
+ }
+
+ for (String option : options) {
+ boolean matched = false;
+ for (int i = 0; i < patterns.length && !matched; i++) {
+ Matcher matcher = patterns[i].matcher(option);
+ matched = matcher.find();
+ }
+ if (!matched) {
+ filteredOptions.add(option);
+ }
+ }
+
+ return filteredOptions.toArray(new String[filteredOptions.size()]);
+ }
+
+ /**
+ * Splits a string by white space.
+ * Works like String.split(), but returns an empty array
+ * if the string is null or empty.
+ */
+ private static String[] safeSplitString(String s) {
+ if (s == null || s.trim().isEmpty()) {
+ return new String[] {};
+ }
+ return s.trim().split("\\s+");
+ }
+
+ /**
+ * @return The full command line for the ProcessBuilder.
+ */
+ public static String getCommandLine(ProcessBuilder pb) {
+ StringBuilder cmd = new StringBuilder();
+ for (String s : pb.command()) {
+ cmd.append(s).append(" ");
+ }
+ return cmd.toString();
+ }
+
+ /**
+ * Returns the free port on the local host.
+ * The function will spin until a valid port number is found.
+ *
+ * @return The port number
+ * @throws InterruptedException if any thread has interrupted the current thread
+ * @throws IOException if an I/O error occurs when opening the socket
+ */
+ public static int getFreePort() throws InterruptedException, IOException {
+ int port = -1;
+
+ while (port <= 0) {
+ Thread.sleep(100);
+
+ ServerSocket serverSocket = null;
+ try {
+ serverSocket = new ServerSocket(0);
+ port = serverSocket.getLocalPort();
+ } finally {
+ serverSocket.close();
+ }
+ }
+
+ return port;
+ }
+
+ /**
+ * Returns the name of the local host.
+ *
+ * @return The host name
+ * @throws UnknownHostException if IP address of a host could not be determined
+ */
+ public static String getHostname() throws UnknownHostException {
+ InetAddress inetAddress = InetAddress.getLocalHost();
+ String hostName = inetAddress.getHostName();
+
+ assertTrue((hostName != null && !hostName.isEmpty()),
+ "Cannot get hostname");
+
+ return hostName;
+ }
+
+ /**
+ * Uses "jcmd -l" to search for a jvm pid. This function will wait
+ * forever (until jtreg timeout) for the pid to be found.
+ * @param key Regular expression to search for
+ * @return The found pid.
+ */
+ public static int waitForJvmPid(String key) throws Throwable {
+ final long iterationSleepMillis = 250;
+ System.out.println("waitForJvmPid: Waiting for key '" + key + "'");
+ System.out.flush();
+ while (true) {
+ int pid = tryFindJvmPid(key);
+ if (pid >= 0) {
+ return pid;
+ }
+ Thread.sleep(iterationSleepMillis);
+ }
+ }
+
+ /**
+ * Searches for a jvm pid in the output from "jcmd -l".
+ *
+ * Example output from jcmd is:
+ * 12498 sun.tools.jcmd.JCmd -l
+ * 12254 /tmp/jdk8/tl/jdk/JTwork/classes/com/sun/tools/attach/Application.jar
+ *
+ * @param key A regular expression to search for.
+ * @return The found pid, or -1 if not found.
+ * @throws Exception If multiple matching jvms are found.
+ */
+ public static int tryFindJvmPid(String key) throws Throwable {
+ OutputAnalyzer output = null;
+ try {
+ JDKToolLauncher jcmdLauncher = JDKToolLauncher.create("jcmd");
+ jcmdLauncher.addToolArg("-l");
+ output = ProcessTools.executeProcess(jcmdLauncher.getCommand());
+ output.shouldHaveExitValue(0);
+
+ // Search for a line starting with numbers (pid), follwed by the key.
+ Pattern pattern = Pattern.compile("([0-9]+)\\s.*(" + key + ").*\\r?\\n");
+ Matcher matcher = pattern.matcher(output.getStdout());
+
+ int pid = -1;
+ if (matcher.find()) {
+ pid = Integer.parseInt(matcher.group(1));
+ System.out.println("findJvmPid.pid: " + pid);
+ if (matcher.find()) {
+ throw new Exception("Found multiple JVM pids for key: " + key);
+ }
+ }
+ return pid;
+ } catch (Throwable t) {
+ System.out.println(String.format("Utils.findJvmPid(%s) failed: %s", key, t));
+ throw t;
+ }
+ }
+
+ /**
+ * Adjusts the provided timeout value for the TIMEOUT_FACTOR
+ * @param tOut the timeout value to be adjusted
+ * @return The timeout value adjusted for the value of "test.timeout.factor"
+ * system property
+ */
+ public static long adjustTimeout(long tOut) {
+ return Math.round(tOut * Utils.TIMEOUT_FACTOR);
+ }
+
+ /**
+ * Return the contents of the named file as a single String,
+ * or null if not found.
+ * @param filename name of the file to read
+ * @return String contents of file, or null if file not found.
+ * @throws IOException
+ * if an I/O error occurs reading from the file or a malformed or
+ * unmappable byte sequence is read
+ */
+ public static String fileAsString(String filename) throws IOException {
+ Path filePath = Paths.get(filename);
+ if (!Files.exists(filePath)) return null;
+ return new String(Files.readAllBytes(filePath));
+ }
+
+ private static final char[] hexArray = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
+
+ /**
+ * Returns hex view of byte array
+ *
+ * @param bytes byte array to process
+ * @return Space separated hexadecimal string representation of bytes
+ */
+
+ public static String toHexString(byte[] bytes) {
+ char[] hexView = new char[bytes.length * 3];
+ int i = 0;
+ for (byte b : bytes) {
+ hexView[i++] = hexArray[(b >> 4) & 0x0F];
+ hexView[i++] = hexArray[b & 0x0F];
+ hexView[i++] = ' ';
+ }
+ return new String(hexView);
+ }
+
+ /**
+ * Returns {@link java.util.Random} generator initialized with particular seed.
+ * The seed could be provided via system property {@link Utils#SEED_PROPERTY_NAME}
+ * In case no seed is provided, the method uses a random number.
+ * The used seed printed to stdout.
+ * @return {@link java.util.Random} generator with particular seed.
+ */
+ public static Random getRandomInstance() {
+ if (RANDOM_GENERATOR == null) {
+ synchronized (Utils.class) {
+ if (RANDOM_GENERATOR == null) {
+ RANDOM_GENERATOR = new Random(SEED);
+ System.out.printf("For random generator using seed: %d%n", SEED);
+ System.out.printf("To re-run test with same seed value please add \"-D%s=%d\" to command line.%n", SEED_PROPERTY_NAME, SEED);
+ }
+ }
+ }
+ return RANDOM_GENERATOR;
+ }
+
+ /**
+ * Returns random element of non empty collection
+ *
+ * @param <T> a type of collection element
+ * @param collection collection of elements
+ * @return random element of collection
+ * @throws IllegalArgumentException if collection is empty
+ */
+ public static <T> T getRandomElement(Collection<T> collection)
+ throws IllegalArgumentException {
+ if (collection.isEmpty()) {
+ throw new IllegalArgumentException("Empty collection");
+ }
+ Random random = getRandomInstance();
+ int elementIndex = 1 + random.nextInt(collection.size() - 1);
+ Iterator<T> iterator = collection.iterator();
+ while (--elementIndex != 0) {
+ iterator.next();
+ }
+ return iterator.next();
+ }
+
+ /**
+ * Returns random element of non empty array
+ *
+ * @param <T> a type of array element
+ * @param array array of elements
+ * @return random element of array
+ * @throws IllegalArgumentException if array is empty
+ */
+ public static <T> T getRandomElement(T[] array)
+ throws IllegalArgumentException {
+ if (array == null || array.length == 0) {
+ throw new IllegalArgumentException("Empty or null array");
+ }
+ Random random = getRandomInstance();
+ return array[random.nextInt(array.length)];
+ }
+
+ /**
+ * Wait for condition to be true
+ *
+ * @param condition, a condition to wait for
+ */
+ public static final void waitForCondition(BooleanSupplier condition) {
+ waitForCondition(condition, -1L, 100L);
+ }
+
+ /**
+ * Wait until timeout for condition to be true
+ *
+ * @param condition, a condition to wait for
+ * @param timeout a time in milliseconds to wait for condition to be true
+ * specifying -1 will wait forever
+ * @return condition value, to determine if wait was successful
+ */
+ public static final boolean waitForCondition(BooleanSupplier condition,
+ long timeout) {
+ return waitForCondition(condition, timeout, 100L);
+ }
+
+ /**
+ * Wait until timeout for condition to be true for specified time
+ *
+ * @param condition, a condition to wait for
+ * @param timeout a time in milliseconds to wait for condition to be true,
+ * specifying -1 will wait forever
+ * @param sleepTime a time to sleep value in milliseconds
+ * @return condition value, to determine if wait was successful
+ */
+ public static final boolean waitForCondition(BooleanSupplier condition,
+ long timeout, long sleepTime) {
+ long startTime = System.currentTimeMillis();
+ while (!(condition.getAsBoolean() || (timeout != -1L
+ && ((System.currentTimeMillis() - startTime) > timeout)))) {
+ try {
+ Thread.sleep(sleepTime);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new Error(e);
+ }
+ }
+ return condition.getAsBoolean();
+ }
+
+ /**
+ * Interface same as java.lang.Runnable but with
+ * method {@code run()} able to throw any Throwable.
+ */
+ public static interface ThrowingRunnable {
+ void run() throws Throwable;
+ }
+
+ /**
+ * Filters out an exception that may be thrown by the given
+ * test according to the given filter.
+ *
+ * @param test - method that is invoked and checked for exception.
+ * @param filter - function that checks if the thrown exception matches
+ * criteria given in the filter's implementation.
+ * @return - exception that matches the filter if it has been thrown or
+ * {@code null} otherwise.
+ * @throws Throwable - if test has thrown an exception that does not
+ * match the filter.
+ */
+ public static Throwable filterException(ThrowingRunnable test,
+ Function<Throwable, Boolean> filter) throws Throwable {
+ try {
+ test.run();
+ } catch (Throwable t) {
+ if (filter.apply(t)) {
+ return t;
+ } else {
+ throw t;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Ensures a requested class is loaded
+ * @param aClass class to load
+ */
+ public static void ensureClassIsLoaded(Class<?> aClass) {
+ if (aClass == null) {
+ throw new Error("Requested null class");
+ }
+ try {
+ Class.forName(aClass.getName(), /* initialize = */ true,
+ ClassLoader.getSystemClassLoader());
+ } catch (ClassNotFoundException e) {
+ throw new Error("Class not found", e);
+ }
+ }
+ /**
+ * @param parent a class loader to be the parent for the returned one
+ * @return an UrlClassLoader with urls made of the 'test.class.path' jtreg
+ * property and with the given parent
+ */
+ public static URLClassLoader getTestClassPathURLClassLoader(ClassLoader parent) {
+ URL[] urls = Arrays.stream(TEST_CLASS_PATH.split(File.pathSeparator))
+ .map(Paths::get)
+ .map(Path::toUri)
+ .map(x -> {
+ try {
+ return x.toURL();
+ } catch (MalformedURLException ex) {
+ throw new Error("Test issue. JTREG property"
+ + " 'test.class.path'"
+ + " is not defined correctly", ex);
+ }
+ }).toArray(URL[]::new);
+ return new URLClassLoader(urls, parent);
+ }
+
+ /**
+ * Runs runnable and checks that it throws expected exception. If exceptionException is null it means
+ * that we expect no exception to be thrown.
+ * @param runnable what we run
+ * @param expectedException expected exception
+ */
+ public static void runAndCheckException(Runnable runnable, Class<? extends Throwable> expectedException) {
+ runAndCheckException(runnable, t -> {
+ if (t == null) {
+ if (expectedException != null) {
+ throw new AssertionError("Didn't get expected exception " + expectedException.getSimpleName());
+ }
+ } else {
+ String message = "Got unexpected exception " + t.getClass().getSimpleName();
+ if (expectedException == null) {
+ throw new AssertionError(message, t);
+ } else if (!expectedException.isAssignableFrom(t.getClass())) {
+ message += " instead of " + expectedException.getSimpleName();
+ throw new AssertionError(message, t);
+ }
+ }
+ });
+ }
+
+ /**
+ * Runs runnable and makes some checks to ensure that it throws expected exception.
+ * @param runnable what we run
+ * @param checkException a consumer which checks that we got expected exception and raises a new exception otherwise
+ */
+ public static void runAndCheckException(Runnable runnable, Consumer<Throwable> checkException) {
+ try {
+ runnable.run();
+ checkException.accept(null);
+ } catch (Throwable t) {
+ checkException.accept(t);
+ }
+ }
+
+ /**
+ * Converts to VM type signature
+ *
+ * @param type Java type to convert
+ * @return string representation of VM type
+ */
+ public static String toJVMTypeSignature(Class<?> type) {
+ if (type.isPrimitive()) {
+ if (type == boolean.class) {
+ return "Z";
+ } else if (type == byte.class) {
+ return "B";
+ } else if (type == char.class) {
+ return "C";
+ } else if (type == double.class) {
+ return "D";
+ } else if (type == float.class) {
+ return "F";
+ } else if (type == int.class) {
+ return "I";
+ } else if (type == long.class) {
+ return "J";
+ } else if (type == short.class) {
+ return "S";
+ } else if (type == void.class) {
+ return "V";
+ } else {
+ throw new Error("Unsupported type: " + type);
+ }
+ }
+ String result = type.getName().replaceAll("\\.", "/");
+ if (!type.isArray()) {
+ return "L" + result + ";";
+ }
+ return result;
+ }
+
+ public static Object[] getNullValues(Class<?>... types) {
+ Object[] result = new Object[types.length];
+ int i = 0;
+ for (Class<?> type : types) {
+ result[i++] = NULL_VALUES.get(type);
+ }
+ return result;
+ }
+ private static Map<Class<?>, Object> NULL_VALUES = new HashMap<>();
+ static {
+ NULL_VALUES.put(boolean.class, false);
+ NULL_VALUES.put(byte.class, (byte) 0);
+ NULL_VALUES.put(short.class, (short) 0);
+ NULL_VALUES.put(char.class, '\0');
+ NULL_VALUES.put(int.class, 0);
+ NULL_VALUES.put(long.class, 0L);
+ NULL_VALUES.put(float.class, 0.0f);
+ NULL_VALUES.put(double.class, 0.0d);
+ }
+
+ /**
+ * Returns mandatory property value
+ * @param propName is a name of property to request
+ * @return a String with requested property value
+ */
+ public static String getMandatoryProperty(String propName) {
+ Objects.requireNonNull(propName, "Requested null property");
+ String prop = System.getProperty(propName);
+ Objects.requireNonNull(prop,
+ String.format("A mandatory property '%s' isn't set", propName));
+ return prop;
+ }
+}
+
diff --git a/test/lib/jdk/test/lib/apps/LingeredApp.java b/test/lib/jdk/test/lib/apps/LingeredApp.java
new file mode 100644
index 0000000..22a123c
--- /dev/null
+++ b/test/lib/jdk/test/lib/apps/LingeredApp.java
@@ -0,0 +1,491 @@
+/*
+ * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * 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 jdk.test.lib.apps;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.file.Files;
+import java.nio.file.NoSuchFileException;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.nio.file.attribute.FileTime;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+/**
+ * This is a framework to launch an app that could be synchronized with caller
+ * to make further attach actions reliable across supported platforms
+
+ * Caller example:
+ * SmartTestApp a = SmartTestApp.startApp(cmd);
+ * // do something
+ * a.stopApp();
+ *
+ * or fine grained control
+ *
+ * a = new SmartTestApp("MyLock.lck");
+ * a.createLock();
+ * a.runApp();
+ * a.waitAppReady();
+ * // do something
+ * a.deleteLock();
+ * a.waitAppTerminate();
+ *
+ * Then you can work with app output and process object
+ *
+ * output = a.getAppOutput();
+ * process = a.getProcess();
+ *
+ */
+public class LingeredApp {
+
+ private static final long spinDelay = 1000;
+
+ private long lockCreationTime;
+ private final ArrayList<String> storedAppOutput;
+
+ protected Process appProcess;
+ protected static final int appWaitTime = 100;
+ protected final String lockFileName;
+
+ /*
+ * Drain child process output, store it into string array
+ */
+ class InputGobbler extends Thread {
+
+ InputStream is;
+ List<String> astr;
+
+ InputGobbler(InputStream is, List<String> astr) {
+ this.is = is;
+ this.astr = astr;
+ }
+
+ public void run() {
+ try {
+ InputStreamReader isr = new InputStreamReader(is);
+ BufferedReader br = new BufferedReader(isr);
+ String line = null;
+ while ((line = br.readLine()) != null) {
+ astr.add(line);
+ }
+ } catch (IOException ex) {
+ // pass
+ }
+ }
+ }
+
+ /**
+ * Create LingeredApp object on caller side. Lock file have be a valid filename
+ * at writable location
+ *
+ * @param lockFileName - the name of lock file
+ */
+ public LingeredApp(String lockFileName) {
+ this.lockFileName = lockFileName;
+ this.storedAppOutput = new ArrayList<String>();
+ }
+
+ public LingeredApp() {
+ final String lockName = UUID.randomUUID().toString() + ".lck";
+ this.lockFileName = lockName;
+ this.storedAppOutput = new ArrayList<String>();
+ }
+
+ /**
+ *
+ * @return name of lock file
+ */
+ public String getLockFileName() {
+ return this.lockFileName;
+ }
+
+ /**
+ *
+ * @return name of testapp
+ */
+ public String getAppName() {
+ return this.getClass().getName();
+ }
+
+ /**
+ *
+ * @return pid of java process running testapp
+ */
+ public long getPid() {
+ if (appProcess == null) {
+ throw new RuntimeException("Process is not alive");
+ }
+ return appProcess.pid();
+ }
+
+ /**
+ *
+ * @return process object
+ */
+ public Process getProcess() {
+ return appProcess;
+ }
+
+ /**
+ *
+ * @return application output as string array. Empty array if application produced no output
+ */
+ public List<String> getAppOutput() {
+ if (appProcess.isAlive()) {
+ throw new RuntimeException("Process is still alive. Can't get its output.");
+ }
+ return storedAppOutput;
+ }
+
+ /* Make sure all part of the app use the same method to get dates,
+ as different methods could produce different results
+ */
+ private static long epoch() {
+ return new Date().getTime();
+ }
+
+ private static long lastModified(String fileName) throws IOException {
+ Path path = Paths.get(fileName);
+ BasicFileAttributes attr = Files.readAttributes(path, BasicFileAttributes.class);
+ return attr.lastModifiedTime().toMillis();
+ }
+
+ private static void setLastModified(String fileName, long newTime) throws IOException {
+ Path path = Paths.get(fileName);
+ FileTime fileTime = FileTime.fromMillis(newTime);
+ Files.setLastModifiedTime(path, fileTime);
+ }
+
+ /**
+ * create lock
+ *
+ * @throws IOException
+ */
+ public void createLock() throws IOException {
+ Path path = Paths.get(lockFileName);
+ // Files.deleteIfExists(path);
+ Files.createFile(path);
+ lockCreationTime = lastModified(lockFileName);
+ }
+
+ /**
+ * Delete lock
+ *
+ * @throws IOException
+ */
+ public void deleteLock() throws IOException {
+ try {
+ Path path = Paths.get(lockFileName);
+ Files.delete(path);
+ } catch (NoSuchFileException ex) {
+ // Lock already deleted. Ignore error
+ }
+ }
+
+ public void waitAppTerminate() {
+ while (true) {
+ try {
+ appProcess.waitFor();
+ break;
+ } catch (InterruptedException ex) {
+ // pass
+ }
+ }
+ }
+
+ /**
+ * The app touches the lock file when it's started
+ * wait while it happens. Caller have to delete lock on wait error.
+ *
+ * @param timeout
+ * @throws java.io.IOException
+ */
+ public void waitAppReady(long timeout) throws IOException {
+ long here = epoch();
+ while (true) {
+ long epoch = epoch();
+ if (epoch - here > (timeout * 1000)) {
+ throw new IOException("App waiting timeout");
+ }
+
+ // Live process should touch lock file every second
+ long lm = lastModified(lockFileName);
+ if (lm > lockCreationTime) {
+ break;
+ }
+
+ // Make sure process didn't already exit
+ if (!appProcess.isAlive()) {
+ throw new IOException("App exited unexpectedly with " + appProcess.exitValue());
+ }
+
+ try {
+ Thread.sleep(spinDelay);
+ } catch (InterruptedException ex) {
+ // pass
+ }
+ }
+ }
+
+ /**
+ * Analyze an environment and prepare a command line to
+ * run the app, app name should be added explicitly
+ */
+ public List<String> runAppPrepare(List<String> vmArguments) {
+ // We should always use testjava or throw an exception,
+ // so we can't use JDKToolFinder.getJDKTool("java");
+ // that falls back to compile java on error
+ String jdkPath = System.getProperty("test.jdk");
+ if (jdkPath == null) {
+ // we are not under jtreg, try env
+ Map<String, String> env = System.getenv();
+ jdkPath = env.get("TESTJAVA");
+ }
+
+ if (jdkPath == null) {
+ throw new RuntimeException("Can't determine jdk path neither test.jdk property no TESTJAVA env are set");
+ }
+
+ String osname = System.getProperty("os.name");
+ String javapath = jdkPath + ((osname.startsWith("window")) ? "/bin/java.exe" : "/bin/java");
+
+ List<String> cmd = new ArrayList<String>();
+ cmd.add(javapath);
+
+
+ if (vmArguments == null) {
+ // Propagate test.vm.options to LingeredApp, filter out possible empty options
+ String testVmOpts[] = System.getProperty("test.vm.opts","").split("\\s+");
+ for (String s : testVmOpts) {
+ if (!s.equals("")) {
+ cmd.add(s);
+ }
+ }
+ }
+ else{
+ // Lets user manage LingeredApp options
+ cmd.addAll(vmArguments);
+ }
+
+ // Make sure we set correct classpath to run the app
+ cmd.add("-cp");
+ String classpath = System.getProperty("test.class.path");
+ cmd.add((classpath == null) ? "." : classpath);
+
+ return cmd;
+ }
+
+ /**
+ * Assemble command line to a printable string
+ */
+ public void printCommandLine(List<String> cmd) {
+ // A bit of verbosity
+ StringBuilder cmdLine = new StringBuilder();
+ for (String strCmd : cmd) {
+ cmdLine.append("'").append(strCmd).append("' ");
+ }
+
+ System.out.println("Command line: [" + cmdLine.toString() + "]");
+ }
+
+ public void startGobblerPipe() {
+ // Create pipe reader for process, and read stdin and stderr to array of strings
+ InputGobbler gb = new InputGobbler(appProcess.getInputStream(), storedAppOutput);
+ gb.start();
+ }
+
+ /**
+ * Run the app.
+ *
+ * @param vmArguments
+ * @throws IOException
+ */
+ public void runApp(List<String> vmArguments)
+ throws IOException {
+
+ List<String> cmd = runAppPrepare(vmArguments);
+
+ cmd.add(this.getAppName());
+ cmd.add(lockFileName);
+
+ printCommandLine(cmd);
+
+ ProcessBuilder pb = new ProcessBuilder(cmd);
+ // we don't expect any error output but make sure we are not stuck on pipe
+ // pb.redirectErrorStream(false);
+ // ProcessBuilder.start can throw IOException
+ pb.redirectError(ProcessBuilder.Redirect.INHERIT);
+ appProcess = pb.start();
+
+ startGobblerPipe();
+ }
+
+ /**
+ * Delete lock file that signals app to terminate, then
+ * wait until app is actually terminated.
+ * @throws IOException
+ */
+ public void stopApp() throws IOException {
+ deleteLock();
+ // The startApp() of the derived app can throw
+ // an exception before the LA actually starts
+ if (appProcess != null) {
+ waitAppTerminate();
+ int exitcode = appProcess.exitValue();
+ if (exitcode != 0) {
+ throw new IOException("LingeredApp terminated with non-zero exit code " + exitcode);
+ }
+ }
+ }
+
+ /**
+ * High level interface for test writers
+ */
+ /**
+ * Factory method that creates LingeredApp object with ready to use application
+ * lock name is autogenerated
+ * @param cmd - vm options, could be null to auto add testvm.options
+ * @return LingeredApp object
+ * @throws IOException
+ */
+ public static LingeredApp startApp(List<String> cmd) throws IOException {
+ LingeredApp a = new LingeredApp();
+ a.createLock();
+ try {
+ a.runApp(cmd);
+ a.waitAppReady(appWaitTime);
+ } catch (Exception ex) {
+ a.deleteLock();
+ throw ex;
+ }
+
+ return a;
+ }
+
+ /**
+ * Factory method that starts pre-created LingeredApp
+ * lock name is autogenerated
+ * @param cmd - vm options, could be null to auto add testvm.options
+ * @param theApp - app to start
+ * @return LingeredApp object
+ * @throws IOException
+ */
+
+ public static void startApp(List<String> cmd, LingeredApp theApp) throws IOException {
+ theApp.createLock();
+ try {
+ theApp.runApp(cmd);
+ theApp.waitAppReady(appWaitTime);
+ } catch (Exception ex) {
+ theApp.deleteLock();
+ throw ex;
+ }
+ }
+
+ public static LingeredApp startApp() throws IOException {
+ return startApp(null);
+ }
+
+ public static void stopApp(LingeredApp app) throws IOException {
+ if (app != null) {
+ // LingeredApp can throw an exception during the intialization,
+ // make sure we don't have cascade NPE
+ app.stopApp();
+ }
+ }
+
+ /**
+ * LastModified time might not work correctly in some cases it might
+ * cause later failures
+ */
+
+ public static boolean isLastModifiedWorking() {
+ boolean sane = true;
+ try {
+ long lm = lastModified(".");
+ if (lm == 0) {
+ System.err.println("SANITY Warning! The lastModifiedTime() doesn't work on this system, it returns 0");
+ sane = false;
+ }
+
+ long now = epoch();
+ if (lm > now) {
+ System.err.println("SANITY Warning! The Clock is wrong on this system lastModifiedTime() > getTime()");
+ sane = false;
+ }
+
+ setLastModified(".", epoch());
+ long lm1 = lastModified(".");
+ if (lm1 <= lm) {
+ System.err.println("SANITY Warning! The setLastModified doesn't work on this system");
+ sane = false;
+ }
+ }
+ catch(IOException e) {
+ System.err.println("SANITY Warning! IOException during sanity check " + e);
+ sane = false;
+ }
+
+ return sane;
+ }
+
+ /**
+ * This part is the application it self
+ */
+ public static void main(String args[]) {
+
+ if (args.length != 1) {
+ System.err.println("Lock file name is not specified");
+ System.exit(7);
+ }
+
+ String theLockFileName = args[0];
+
+ try {
+ Path path = Paths.get(theLockFileName);
+
+ while (Files.exists(path)) {
+ // Touch the lock to indicate our readiness
+ setLastModified(theLockFileName, epoch());
+ Thread.sleep(spinDelay);
+ }
+ } catch (NoSuchFileException ex) {
+ // Lock deleted while we are setting last modified time.
+ // Ignore error and lets the app exits
+ } catch (Exception ex) {
+ System.err.println("LingeredApp ERROR: " + ex);
+ // Leave exit_code = 1 to Java launcher
+ System.exit(3);
+ }
+
+ System.exit(0);
+ }
+}
diff --git a/test/lib/jdk/test/lib/apps/LingeredAppWithDeadlock.java b/test/lib/jdk/test/lib/apps/LingeredAppWithDeadlock.java
new file mode 100644
index 0000000..2b52c15
--- /dev/null
+++ b/test/lib/jdk/test/lib/apps/LingeredAppWithDeadlock.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2005, 2016, 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 jdk.test.lib.apps;
+
+import java.util.concurrent.Phaser;
+
+public class LingeredAppWithDeadlock extends LingeredApp {
+
+ private static final Object Lock1 = new Object();
+ private static final Object Lock2 = new Object();
+
+ private static volatile int reachCount = 0;
+
+ private static final Phaser p = new Phaser(2);
+
+ private static class ThreadOne extends Thread {
+ public void run() {
+ // wait Lock2 is locked
+ p.arriveAndAwaitAdvance();
+ synchronized (Lock1) {
+ // signal Lock1 is locked
+ p.arriveAndAwaitAdvance();
+ synchronized (Lock2) {
+ reachCount += 1;
+ }
+ }
+ }
+ }
+
+ private static class ThreadTwo extends Thread {
+ public void run() {
+ synchronized (Lock2) {
+ // signal Lock2 is locked
+ p.arriveAndAwaitAdvance();
+ // wait Lock1 is locked
+ p.arriveAndAwaitAdvance();
+ synchronized (Lock1) {
+ reachCount += 1;
+ }
+ }
+ }
+ }
+
+ public static void main(String args[]) {
+ if (args.length != 1) {
+ System.err.println("Lock file name is not specified");
+ System.exit(7);
+ }
+
+ // Run two theads that should come to deadlock
+ new ThreadOne().start();
+ new ThreadTwo().start();
+
+ if (reachCount > 0) {
+ // Not able to deadlock, exiting
+ System.exit(3);
+ }
+
+ LingeredApp.main(args);
+ }
+ }
diff --git a/test/lib/jdk/test/lib/cli/CPUSpecificCommandLineOptionTest.java b/test/lib/jdk/test/lib/cli/CPUSpecificCommandLineOptionTest.java
new file mode 100644
index 0000000..121d81d
--- /dev/null
+++ b/test/lib/jdk/test/lib/cli/CPUSpecificCommandLineOptionTest.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2014, 2016, 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 jdk.test.lib.cli;
+
+import jdk.test.lib.cli.predicate.CPUSpecificPredicate;
+
+/**
+ * Base class for command line options tests that
+ * requires specific CPU arch or specific CPU features.
+ */
+public abstract class CPUSpecificCommandLineOptionTest
+ extends CommandLineOptionTest {
+ /**
+ * Creates new CPU specific test instance that does not
+ * require any CPU features.
+ *
+ * @param cpuArchPattern Regular expression that should
+ * match os.arch.
+ */
+ public CPUSpecificCommandLineOptionTest(String cpuArchPattern) {
+ this(cpuArchPattern, null, null);
+ }
+
+ /**
+ * Creates new CPU specific test instance that does not
+ * require from CPU support of {@code supportedCPUFeatures} features
+ * and no support of {@code unsupportedCPUFeatures}.
+ *
+ * @param cpuArchPattern Regular expression that should
+ * match os.arch.
+ * @param supportedCPUFeatures Array with names of features that
+ * should be supported by CPU. If {@code null},
+ * then no features have to be supported.
+ * @param unsupportedCPUFeatures Array with names of features that
+ * should not be supported by CPU.
+ * If {@code null}, then CPU may support any
+ * features.
+ */
+ public CPUSpecificCommandLineOptionTest(String cpuArchPattern,
+ String supportedCPUFeatures[], String unsupportedCPUFeatures[]) {
+ super(new CPUSpecificPredicate(cpuArchPattern, supportedCPUFeatures,
+ unsupportedCPUFeatures));
+ }
+}
diff --git a/test/lib/jdk/test/lib/cli/CommandLineOptionTest.java b/test/lib/jdk/test/lib/cli/CommandLineOptionTest.java
new file mode 100644
index 0000000..8c57487
--- /dev/null
+++ b/test/lib/jdk/test/lib/cli/CommandLineOptionTest.java
@@ -0,0 +1,544 @@
+/*
+ * Copyright (c) 2014, 2016, 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 jdk.test.lib.cli;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.function.BooleanSupplier;
+
+import jdk.test.lib.process.ExitCode;
+import jdk.test.lib.process.ProcessTools;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.Platform;
+import jdk.test.lib.Utils;
+
+/**
+ * Base class for command line option tests.
+ */
+public abstract class CommandLineOptionTest {
+ public static final String UNLOCK_DIAGNOSTIC_VM_OPTIONS
+ = "-XX:+UnlockDiagnosticVMOptions";
+ public static final String UNLOCK_EXPERIMENTAL_VM_OPTIONS
+ = "-XX:+UnlockExperimentalVMOptions";
+ protected static final String UNRECOGNIZED_OPTION_ERROR_FORMAT
+ = "Unrecognized VM option '[+-]?%s(=.*)?'";
+ protected static final String EXPERIMENTAL_OPTION_ERROR_FORMAT
+ = "VM option '%s' is experimental and must be enabled via "
+ + "-XX:\\+UnlockExperimentalVMOptions.";
+ protected static final String DIAGNOSTIC_OPTION_ERROR_FORMAT
+ = " VM option '%s' is diagnostic and must be enabled via "
+ + "-XX:\\+UnlockDiagnosticVMOptions.";
+ private static final String PRINT_FLAGS_FINAL_FORMAT = "%s\\s*:?=\\s*%s";
+
+ /**
+ * Verifies that JVM startup behavior matches our expectations.
+ *
+ * @param option an option that should be passed to JVM
+ * @param expectedMessages an array of patterns that should occur
+ * in JVM output. If {@code null} then
+ * JVM output could be empty.
+ * @param unexpectedMessages an array of patterns that should not
+ * occur in JVM output. If {@code null} then
+ * JVM output could be empty.
+ * @param exitErrorMessage message that will be shown if exit code is not
+ * as expected.
+ * @param wrongWarningMessage message that will be shown if warning
+ * messages are not as expected.
+ * @param exitCode expected exit code.
+ * @throws Throwable if verification fails or some other issues occur.
+ */
+ public static void verifyJVMStartup(String option,
+ String expectedMessages[], String unexpectedMessages[],
+ String exitErrorMessage, String wrongWarningMessage,
+ ExitCode exitCode) throws Throwable {
+ CommandLineOptionTest.verifyJVMStartup(expectedMessages,
+ unexpectedMessages, exitErrorMessage,
+ wrongWarningMessage, exitCode, false, option);
+ }
+
+ /**
+ * Verifies that JVM startup behavior matches our expectations.
+ *
+ * @param expectedMessages an array of patterns that should occur
+ * in JVM output. If {@code null} then
+ * JVM output could be empty.
+ * @param unexpectedMessages an array of patterns that should not
+ * occur in JVM output. If {@code null} then
+ * JVM output could be empty.
+ * @param exitErrorMessage message that will be shown if exit code is not
+ * as expected.
+ * @param wrongWarningMessage message that will be shown if warning
+ * messages are not as expected.
+ * @param exitCode expected exit code.
+ * @param addTestVMOptions if {@code true} then test VM options will be
+ * passed to VM.
+ * @param options options that should be passed to VM in addition to mode
+ * flag.
+ * @throws Throwable if verification fails or some other issues occur.
+ */
+ public static void verifyJVMStartup(String expectedMessages[],
+ String unexpectedMessages[], String exitErrorMessage,
+ String wrongWarningMessage, ExitCode exitCode,
+ boolean addTestVMOptions, String... options)
+ throws Throwable {
+ List<String> finalOptions = new ArrayList<>();
+ if (addTestVMOptions) {
+ Collections.addAll(finalOptions, ProcessTools.getVmInputArgs());
+ Collections.addAll(finalOptions, Utils.getTestJavaOpts());
+ }
+ Collections.addAll(finalOptions, options);
+ finalOptions.add("-version");
+
+ ProcessBuilder processBuilder
+ = ProcessTools.createJavaProcessBuilder(finalOptions.toArray(
+ new String[finalOptions.size()]));
+ OutputAnalyzer outputAnalyzer
+ = new OutputAnalyzer(processBuilder.start());
+
+ try {
+ outputAnalyzer.shouldHaveExitValue(exitCode.value);
+ } catch (RuntimeException e) {
+ String errorMessage = String.format(
+ "JVM process should have exit value '%d'.%n%s",
+ exitCode.value, exitErrorMessage);
+ throw new AssertionError(errorMessage, e);
+ }
+
+ verifyOutput(expectedMessages, unexpectedMessages,
+ wrongWarningMessage, outputAnalyzer);
+ }
+
+ /**
+ * Verifies that JVM startup behavior matches our expectations.
+ *
+ * @param expectedMessages an array of patterns that should occur in JVM
+ * output. If {@code null} then
+ * JVM output could be empty.
+ * @param unexpectedMessages an array of patterns that should not occur
+ * in JVM output. If {@code null} then
+ * JVM output could be empty.
+ * @param wrongWarningMessage message that will be shown if messages are
+ * not as expected.
+ * @param outputAnalyzer OutputAnalyzer instance
+ * @throws AssertionError if verification fails.
+ */
+ public static void verifyOutput(String[] expectedMessages,
+ String[] unexpectedMessages, String wrongWarningMessage,
+ OutputAnalyzer outputAnalyzer) {
+ if (expectedMessages != null) {
+ for (String expectedMessage : expectedMessages) {
+ try {
+ outputAnalyzer.shouldMatch(expectedMessage);
+ } catch (RuntimeException e) {
+ String errorMessage = String.format(
+ "Expected message not found: '%s'.%n%s",
+ expectedMessage, wrongWarningMessage);
+ throw new AssertionError(errorMessage, e);
+ }
+ }
+ }
+
+ if (unexpectedMessages != null) {
+ for (String unexpectedMessage : unexpectedMessages) {
+ try {
+ outputAnalyzer.shouldNotMatch(unexpectedMessage);
+ } catch (RuntimeException e) {
+ String errorMessage = String.format(
+ "Unexpected message found: '%s'.%n%s",
+ unexpectedMessage, wrongWarningMessage);
+ throw new AssertionError(errorMessage, e);
+ }
+ }
+ }
+ }
+
+ /**
+ * Verifies that JVM startup behavior matches our expectations when type
+ * of newly started VM is the same as the type of current.
+ *
+ * @param expectedMessages an array of patterns that should occur
+ * in JVM output. If {@code null} then
+ * JVM output could be empty.
+ * @param unexpectedMessages an array of patterns that should not
+ * occur in JVM output. If {@code null} then
+ * JVM output could be empty.
+ * @param exitErrorMessage Message that will be shown if exit value is not
+ * as expected.
+ * @param wrongWarningMessage message that will be shown if warning
+ * messages are not as expected.
+ * @param exitCode expected exit code.
+ * @param options options that should be passed to VM in addition to mode
+ * flag.
+ * @throws Throwable if verification fails or some other issues occur.
+ */
+ public static void verifySameJVMStartup(String expectedMessages[],
+ String unexpectedMessages[], String exitErrorMessage,
+ String wrongWarningMessage, ExitCode exitCode, String... options)
+ throws Throwable {
+ List<String> finalOptions = new ArrayList<>();
+ finalOptions.add(CommandLineOptionTest.getVMTypeOption());
+ String extraFlagForEmulated = CommandLineOptionTest.getVMTypeOptionForEmulated();
+ if (extraFlagForEmulated != null) {
+ finalOptions.add(extraFlagForEmulated);
+ }
+ Collections.addAll(finalOptions, options);
+
+ CommandLineOptionTest.verifyJVMStartup(expectedMessages,
+ unexpectedMessages, exitErrorMessage,
+ wrongWarningMessage, exitCode, false,
+ finalOptions.toArray(new String[finalOptions.size()]));
+ }
+
+ /**
+ * Verifies that value of specified JVM option is the same as
+ * expected value.
+ * This method filter out option with {@code optionName}
+ * name from test java options.
+ *
+ * @param optionName a name of tested option.
+ * @param expectedValue expected value of tested option.
+ * @param optionErrorString message will be shown if option value is not as
+ * expected.
+ * @param additionalVMOpts additional options that should be
+ * passed to JVM.
+ * @throws Throwable if verification fails or some other issues occur.
+ */
+ public static void verifyOptionValue(String optionName,
+ String expectedValue, String optionErrorString,
+ String... additionalVMOpts) throws Throwable {
+ verifyOptionValue(optionName, expectedValue, optionErrorString,
+ true, additionalVMOpts);
+ }
+
+ /**
+ * Verifies that value of specified JVM option is the same as
+ * expected value.
+ * This method filter out option with {@code optionName}
+ * name from test java options.
+ *
+ * @param optionName a name of tested option.
+ * @param expectedValue expected value of tested option.
+ * @param addTestVmOptions if {@code true}, then test VM options
+ * will be used.
+ * @param optionErrorString message will be shown if option value is not as
+ * expected.
+ * @param additionalVMOpts additional options that should be
+ * passed to JVM.
+ * @throws Throwable if verification fails or some other issues
+ * occur.
+ */
+ public static void verifyOptionValue(String optionName,
+ String expectedValue, String optionErrorString,
+ boolean addTestVmOptions, String... additionalVMOpts)
+ throws Throwable {
+ List<String> vmOpts = new ArrayList<>();
+
+ if (addTestVmOptions) {
+ Collections.addAll(vmOpts,
+ Utils.getFilteredTestJavaOpts(optionName));
+ }
+ Collections.addAll(vmOpts, additionalVMOpts);
+ Collections.addAll(vmOpts, "-XX:+PrintFlagsFinal", "-version");
+
+ ProcessBuilder processBuilder = ProcessTools.createJavaProcessBuilder(
+ vmOpts.toArray(new String[vmOpts.size()]));
+
+ OutputAnalyzer outputAnalyzer
+ = new OutputAnalyzer(processBuilder.start());
+
+ try {
+ outputAnalyzer.shouldHaveExitValue(0);
+ } catch (RuntimeException e) {
+ String errorMessage = String.format(
+ "JVM should start with option '%s' without errors.",
+ optionName);
+ throw new AssertionError(errorMessage, e);
+ }
+ verifyOptionValue(optionName, expectedValue, optionErrorString,
+ outputAnalyzer);
+ }
+
+ /**
+ * Verifies that value of specified JVM option is the same as
+ * expected value.
+ *
+ * @param optionName a name of tested option.
+ * @param expectedValue expected value of tested option.
+ * @param optionErrorString message will be shown if option value is not
+ * as expected.
+ * @param outputAnalyzer OutputAnalyzer instance
+ * @throws AssertionError if verification fails
+ */
+ public static void verifyOptionValue(String optionName,
+ String expectedValue, String optionErrorString,
+ OutputAnalyzer outputAnalyzer) {
+ try {
+ outputAnalyzer.shouldMatch(String.format(
+ CommandLineOptionTest.PRINT_FLAGS_FINAL_FORMAT,
+ optionName, expectedValue));
+ } catch (RuntimeException e) {
+ String errorMessage = String.format(
+ "Option '%s' is expected to have '%s' value%n%s",
+ optionName, expectedValue,
+ optionErrorString);
+ throw new AssertionError(errorMessage, e);
+ }
+ }
+
+ /**
+ * Start VM with given options and values.
+ * Generates command line option flags from
+ * {@code optionNames} and {@code optionValues}.
+ *
+ * @param optionNames names of options to pass in
+ * @param optionValues values of option
+ * @param additionalVMOpts additional options that should be
+ * passed to JVM.
+ * @return output from vm process
+ */
+ public static OutputAnalyzer startVMWithOptions(String[] optionNames,
+ String[] optionValues,
+ String... additionalVMOpts) throws Throwable {
+ List<String> vmOpts = new ArrayList<>();
+ if (optionNames == null || optionValues == null || optionNames.length != optionValues.length) {
+ throw new IllegalArgumentException("optionNames and/or optionValues");
+ }
+
+ for (int i = 0; i < optionNames.length; i++) {
+ vmOpts.add(prepareFlag(optionNames[i], optionValues[i]));
+ }
+ Collections.addAll(vmOpts, additionalVMOpts);
+ Collections.addAll(vmOpts, "-version");
+
+ ProcessBuilder processBuilder = ProcessTools.createJavaProcessBuilder(
+ vmOpts.toArray(new String[vmOpts.size()]));
+
+ return new OutputAnalyzer(processBuilder.start());
+ }
+
+ /**
+ * Verifies from the output that values of specified JVM options were the same as
+ * expected values.
+ *
+ * @param outputAnalyzer search output for expect options and values.
+ * @param optionNames names of tested options.
+ * @param expectedValues expected values of tested options.
+ * @throws Throwable if verification fails or some other issues occur.
+ */
+ public static void verifyOptionValuesFromOutput(OutputAnalyzer outputAnalyzer,
+ String[] optionNames,
+ String[] expectedValues) throws Throwable {
+ outputAnalyzer.shouldHaveExitValue(0);
+ for (int i = 0; i < optionNames.length; i++) {
+ outputAnalyzer.shouldMatch(String.format(
+ CommandLineOptionTest.PRINT_FLAGS_FINAL_FORMAT,
+ optionNames[i], expectedValues[i]));
+ }
+ }
+
+ /**
+ * Verifies that value of specified JVM options are the same as
+ * expected values.
+ * Generates command line option flags from
+ * {@code optionNames} and {@code expectedValues}.
+ *
+ * @param optionNames names of tested options.
+ * @param expectedValues expected values of tested options.
+ * @throws Throwable if verification fails or some other issues occur.
+ */
+ public static void verifyOptionValues(String[] optionNames,
+ String[] expectedValues) throws Throwable {
+ OutputAnalyzer outputAnalyzer = startVMWithOptions(optionNames, expectedValues, "-XX:+PrintFlagsFinal");
+ verifyOptionValuesFromOutput(outputAnalyzer, optionNames, expectedValues);
+ }
+
+ /**
+ * Verifies that value of specified JVM when type of newly started VM
+ * is the same as the type of current.
+ * This method filter out option with {@code optionName}
+ * name from test java options.
+ * Only mode flag will be passed to VM in addition to
+ * {@code additionalVMOpts}
+ *
+ * @param optionName name of tested option.
+ * @param expectedValue expected value of tested option.
+ * @param optionErrorString message to show if option has another value
+ * @param additionalVMOpts additional options that should be
+ * passed to JVM.
+ * @throws Throwable if verification fails or some other issues occur.
+ */
+ public static void verifyOptionValueForSameVM(String optionName,
+ String expectedValue, String optionErrorString,
+ String... additionalVMOpts) throws Throwable {
+ List<String> finalOptions = new ArrayList<>();
+ finalOptions.add(CommandLineOptionTest.getVMTypeOption());
+ String extraFlagForEmulated = CommandLineOptionTest.getVMTypeOptionForEmulated();
+ if (extraFlagForEmulated != null) {
+ finalOptions.add(extraFlagForEmulated);
+ }
+ Collections.addAll(finalOptions, additionalVMOpts);
+
+ CommandLineOptionTest.verifyOptionValue(optionName, expectedValue,
+ optionErrorString, false,
+ finalOptions.toArray(new String[finalOptions.size()]));
+ }
+
+ /**
+ * Prepares boolean command line flag with name {@code name} according
+ * to it's {@code value}.
+ *
+ * @param name the name of option to be prepared
+ * @param value the value of option
+ * @return prepared command line flag
+ */
+ public static String prepareBooleanFlag(String name, boolean value) {
+ return String.format("-XX:%c%s", (value ? '+' : '-'), name);
+ }
+
+ /**
+ * Prepares numeric command line flag with name {@code name} by setting
+ * it's value to {@code value}.
+ *
+ * @param name the name of option to be prepared
+ * @param value the value of option
+ * @return prepared command line flag
+ */
+ public static String prepareNumericFlag(String name, Number value) {
+ return String.format("-XX:%s=%s", name, value.toString());
+ }
+
+ /**
+ * Prepares generic command line flag with name {@code name} by setting
+ * it's value to {@code value}.
+ *
+ * @param name the name of option to be prepared
+ * @param value the value of option ("+" or "-" can be used instead of "true" or "false")
+ * @return prepared command line flag
+ */
+ public static String prepareFlag(String name, String value) {
+ if (value.equals("+") || value.equalsIgnoreCase("true")) {
+ return "-XX:+" + name;
+ } else if (value.equals("-") || value.equalsIgnoreCase("false")) {
+ return "-XX:-" + name;
+ } else {
+ return "-XX:" + name + "=" + value;
+ }
+ }
+
+ /**
+ * Returns message that should occur in VM output if option
+ * {@code optionName} if unrecognized.
+ *
+ * @param optionName the name of option for which message should be returned
+ * @return message saying that option {@code optionName} is unrecognized
+ */
+ public static String getUnrecognizedOptionErrorMessage(String optionName) {
+ return String.format(
+ CommandLineOptionTest.UNRECOGNIZED_OPTION_ERROR_FORMAT,
+ optionName);
+ }
+
+ /**
+ * Returns message that should occur in VM output if option
+ * {@code optionName} is experimental and
+ * -XX:+UnlockExperimentalVMOptions was not passed to VM.
+ *
+ * @param optionName the name of option for which message should be returned
+ * @return message saying that option {@code optionName} is experimental
+ */
+ public static String getExperimentalOptionErrorMessage(String optionName) {
+ return String.format(
+ CommandLineOptionTest.EXPERIMENTAL_OPTION_ERROR_FORMAT,
+ optionName);
+ }
+
+ /**
+ * Returns message that should occur in VM output if option
+ * {@code optionName} is diagnostic and -XX:+UnlockDiagnosticVMOptions
+ * was not passed to VM.
+ *
+ * @param optionName the name of option for which message should be returned
+ * @return message saying that option {@code optionName} is diganostic
+ */
+ public static String getDiagnosticOptionErrorMessage(String optionName) {
+ return String.format(
+ CommandLineOptionTest.DIAGNOSTIC_OPTION_ERROR_FORMAT,
+ optionName);
+ }
+
+ /**
+ * @return option required to start a new VM with the same type as current.
+ * @throws RuntimeException when VM type is unknown.
+ */
+ private static String getVMTypeOption() {
+ if (Platform.isServer()) {
+ return "-server";
+ } else if (Platform.isClient()) {
+ return "-client";
+ } else if (Platform.isMinimal()) {
+ return "-minimal";
+ } else if (Platform.isGraal()) {
+ return "-graal";
+ }
+ throw new RuntimeException("Unknown VM mode.");
+ }
+
+ /**
+ * @return addtional VMoptions(Emulated related) required to start a new VM with the same type as current.
+ */
+ private static String getVMTypeOptionForEmulated() {
+ if (Platform.isServer() && !Platform.isEmulatedClient()) {
+ return "-XX:-NeverActAsServerClassMachine";
+ } else if (Platform.isEmulatedClient()) {
+ return "-XX:+NeverActAsServerClassMachine";
+ }
+ return null;
+ }
+
+ private final BooleanSupplier predicate;
+
+ /**
+ * Constructs new CommandLineOptionTest that will be executed only if
+ * predicate {@code predicate} return {@code true}.
+ * @param predicate a predicate responsible for test's preconditions check.
+ */
+ public CommandLineOptionTest(BooleanSupplier predicate) {
+ this.predicate = predicate;
+ }
+
+ /**
+ * Runs command line option test.
+ */
+ public final void test() throws Throwable {
+ if (predicate.getAsBoolean()) {
+ runTestCases();
+ }
+ }
+
+ /**
+ * @throws Throwable if some issue happened during test cases execution.
+ */
+ protected abstract void runTestCases() throws Throwable;
+}
diff --git a/test/lib/jdk/test/lib/cli/predicate/AndPredicate.java b/test/lib/jdk/test/lib/cli/predicate/AndPredicate.java
new file mode 100644
index 0000000..8425ed9
--- /dev/null
+++ b/test/lib/jdk/test/lib/cli/predicate/AndPredicate.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2014, 2016, 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 jdk.test.lib.cli.predicate;
+
+import java.util.function.BooleanSupplier;
+
+public class AndPredicate implements BooleanSupplier {
+ private final BooleanSupplier a;
+ private final BooleanSupplier b;
+ private final BooleanSupplier c;
+
+ public AndPredicate(BooleanSupplier a, BooleanSupplier b) {
+ this.a = a;
+ this.b = b;
+ this.c = () -> true; // Boolean.TRUE::booleanValue
+ }
+
+ public AndPredicate(BooleanSupplier a, BooleanSupplier b, BooleanSupplier c) {
+ this.a = a;
+ this.b = b;
+ this.c = c;
+ }
+
+ @Override
+ public boolean getAsBoolean() {
+ return a.getAsBoolean() && b.getAsBoolean() && c.getAsBoolean();
+ }
+}
diff --git a/test/lib/jdk/test/lib/cli/predicate/CPUSpecificPredicate.java b/test/lib/jdk/test/lib/cli/predicate/CPUSpecificPredicate.java
new file mode 100644
index 0000000..69f753f
--- /dev/null
+++ b/test/lib/jdk/test/lib/cli/predicate/CPUSpecificPredicate.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2014, 2016, 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 jdk.test.lib.cli.predicate;
+
+import jdk.test.lib.Platform;
+import sun.hotspot.cpuinfo.CPUInfo;
+
+import java.util.function.BooleanSupplier;
+
+public class CPUSpecificPredicate implements BooleanSupplier {
+ private final String cpuArchPattern;
+ private final String supportedCPUFeatures[];
+ private final String unsupportedCPUFeatures[];
+
+ public CPUSpecificPredicate(String cpuArchPattern,
+ String supportedCPUFeatures[],
+ String unsupportedCPUFeatures[]) {
+ this.cpuArchPattern = cpuArchPattern;
+ this.supportedCPUFeatures = supportedCPUFeatures;
+ this.unsupportedCPUFeatures = unsupportedCPUFeatures;
+ }
+
+ @Override
+ public boolean getAsBoolean() {
+ if (!Platform.getOsArch().matches(cpuArchPattern)) {
+ System.out.println("CPU arch " + Platform.getOsArch() + " does not match " + cpuArchPattern);
+ return false;
+ }
+
+ if (supportedCPUFeatures != null) {
+ for (String feature : supportedCPUFeatures) {
+ if (!CPUInfo.hasFeature(feature)) {
+ System.out.println("CPU does not support " + feature
+ + " feature");
+ return false;
+ }
+ }
+ }
+
+ if (unsupportedCPUFeatures != null) {
+ for (String feature : unsupportedCPUFeatures) {
+ if (CPUInfo.hasFeature(feature)) {
+ System.out.println("CPU support " + feature + " feature");
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+}
diff --git a/test/lib/jdk/test/lib/cli/predicate/NotPredicate.java b/test/lib/jdk/test/lib/cli/predicate/NotPredicate.java
new file mode 100644
index 0000000..e5a1bc9
--- /dev/null
+++ b/test/lib/jdk/test/lib/cli/predicate/NotPredicate.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2014, 2016, 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 jdk.test.lib.cli.predicate;
+
+import java.util.function.BooleanSupplier;
+
+public class NotPredicate implements BooleanSupplier {
+ private final BooleanSupplier s;
+
+ public NotPredicate(BooleanSupplier s) {
+ this.s = s;
+ }
+
+ @Override
+ public boolean getAsBoolean() {
+ return !s.getAsBoolean();
+ }
+}
diff --git a/test/lib/jdk/test/lib/cli/predicate/OrPredicate.java b/test/lib/jdk/test/lib/cli/predicate/OrPredicate.java
new file mode 100644
index 0000000..b723f39
--- /dev/null
+++ b/test/lib/jdk/test/lib/cli/predicate/OrPredicate.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2014, 2016, 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 jdk.test.lib.cli.predicate;
+
+import java.util.function.BooleanSupplier;
+
+public class OrPredicate implements BooleanSupplier {
+ private final BooleanSupplier a;
+ private final BooleanSupplier b;
+
+ public OrPredicate(BooleanSupplier a, BooleanSupplier b) {
+ this.a = a;
+ this.b = b;
+ }
+
+ @Override
+ public boolean getAsBoolean() {
+ return a.getAsBoolean() || b.getAsBoolean();
+ }
+}
diff --git a/test/lib/jdk/test/lib/compiler/InMemoryJavaCompiler.java b/test/lib/jdk/test/lib/compiler/InMemoryJavaCompiler.java
new file mode 100644
index 0000000..e174b32
--- /dev/null
+++ b/test/lib/jdk/test/lib/compiler/InMemoryJavaCompiler.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright (c) 2013, 2016, 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 jdk.test.lib.compiler;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.tools.ForwardingJavaFileManager;
+import javax.tools.FileObject;
+import javax.tools.JavaCompiler;
+import javax.tools.JavaCompiler.CompilationTask;
+import javax.tools.JavaFileObject;
+import javax.tools.JavaFileObject.Kind;
+import javax.tools.SimpleJavaFileObject;
+import javax.tools.StandardLocation;
+import javax.tools.ToolProvider;
+
+/**
+ * {@code InMemoryJavaCompiler} can be used for compiling a {@link
+ * CharSequence} to a {@code byte[]}.
+ *
+ * The compiler will not use the file system at all, instead using a {@link
+ * ByteArrayOutputStream} for storing the byte code. For the source code, any
+ * kind of {@link CharSequence} can be used, e.g. {@link String}, {@link
+ * StringBuffer} or {@link StringBuilder}.
+ *
+ * The {@code InMemoryCompiler} can easily be used together with a {@code
+ * ByteClassLoader} to easily compile and load source code in a {@link String}:
+ *
+ * <pre>
+ * {@code
+ * import jdk.test.lib.compiler.InMemoryJavaCompiler;
+ * import jdk.test.lib.ByteClassLoader;
+ *
+ * class Example {
+ * public static void main(String[] args) {
+ * String className = "Foo";
+ * String sourceCode = "public class " + className + " {" +
+ * " public void bar() {" +
+ * " System.out.println("Hello from bar!");" +
+ * " }" +
+ * "}";
+ * byte[] byteCode = InMemoryJavaCompiler.compile(className, sourceCode);
+ * Class fooClass = ByteClassLoader.load(className, byteCode);
+ * }
+ * }
+ * }
+ * </pre>
+ */
+public class InMemoryJavaCompiler {
+ private static class MemoryJavaFileObject extends SimpleJavaFileObject {
+ private final String className;
+ private final CharSequence sourceCode;
+ private final ByteArrayOutputStream byteCode;
+
+ public MemoryJavaFileObject(String className, CharSequence sourceCode) {
+ super(URI.create("string:///" + className.replace('.','/') + Kind.SOURCE.extension), Kind.SOURCE);
+ this.className = className;
+ this.sourceCode = sourceCode;
+ this.byteCode = new ByteArrayOutputStream();
+ }
+
+ @Override
+ public CharSequence getCharContent(boolean ignoreEncodingErrors) {
+ return sourceCode;
+ }
+
+ @Override
+ public OutputStream openOutputStream() throws IOException {
+ return byteCode;
+ }
+
+ public byte[] getByteCode() {
+ return byteCode.toByteArray();
+ }
+
+ public String getClassName() {
+ return className;
+ }
+ }
+
+ private static class FileManagerWrapper extends ForwardingJavaFileManager {
+ private static final Location PATCH_LOCATION = new Location() {
+ @Override
+ public String getName() {
+ return "patch module location";
+ }
+
+ @Override
+ public boolean isOutputLocation() {
+ return false;
+ }
+ };
+ private final MemoryJavaFileObject file;
+ private final String moduleOverride;
+
+ public FileManagerWrapper(MemoryJavaFileObject file, String moduleOverride) {
+ super(getCompiler().getStandardFileManager(null, null, null));
+ this.file = file;
+ this.moduleOverride = moduleOverride;
+ }
+
+ @Override
+ public JavaFileObject getJavaFileForOutput(Location location, String className,
+ Kind kind, FileObject sibling)
+ throws IOException {
+ if (!file.getClassName().equals(className)) {
+ throw new IOException("Expected class with name " + file.getClassName() +
+ ", but got " + className);
+ }
+ return file;
+ }
+
+ @Override
+ public Location getLocationForModule(Location location, JavaFileObject fo) throws IOException {
+ if (fo == file && moduleOverride != null) {
+ return PATCH_LOCATION;
+ }
+ return super.getLocationForModule(location, fo);
+ }
+
+ @Override
+ public String inferModuleName(Location location) throws IOException {
+ if (location == PATCH_LOCATION) {
+ return moduleOverride;
+ }
+ return super.inferModuleName(location);
+ }
+
+ @Override
+ public boolean hasLocation(Location location) {
+ return super.hasLocation(location) || location == StandardLocation.PATCH_MODULE_PATH;
+ }
+
+ }
+
+ /**
+ * Compiles the class with the given name and source code.
+ *
+ * @param className The name of the class
+ * @param sourceCode The source code for the class with name {@code className}
+ * @param options additional command line options
+ * @throws RuntimeException if the compilation did not succeed
+ * @return The resulting byte code from the compilation
+ */
+ public static byte[] compile(String className, CharSequence sourceCode, String... options) {
+ MemoryJavaFileObject file = new MemoryJavaFileObject(className, sourceCode);
+ CompilationTask task = getCompilationTask(file, options);
+
+ if(!task.call()) {
+ throw new RuntimeException("Could not compile " + className + " with source code " + sourceCode);
+ }
+
+ return file.getByteCode();
+ }
+
+ private static JavaCompiler getCompiler() {
+ return ToolProvider.getSystemJavaCompiler();
+ }
+
+ private static CompilationTask getCompilationTask(MemoryJavaFileObject file, String... options) {
+ List<String> opts = new ArrayList<>();
+ String moduleOverride = null;
+ for (String opt : options) {
+ if (opt.startsWith("-Xmodule:")) {
+ moduleOverride = opt.substring("-Xmodule:".length());
+ } else {
+ opts.add(opt);
+ }
+ }
+ return getCompiler().getTask(null, new FileManagerWrapper(file, moduleOverride), null, opts, null, Arrays.asList(file));
+ }
+}
diff --git a/test/lib/jdk/test/lib/dcmd/CommandExecutor.java b/test/lib/jdk/test/lib/dcmd/CommandExecutor.java
new file mode 100644
index 0000000..e8c5791
--- /dev/null
+++ b/test/lib/jdk/test/lib/dcmd/CommandExecutor.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2015, 2016, 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 jdk.test.lib.dcmd;
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+/**
+ * Abstract base class for Diagnostic Command executors
+ */
+public abstract class CommandExecutor {
+
+ /**
+ * Execute a diagnostic command
+ *
+ * @param cmd The diagnostic command to execute
+ * @return an {@link jdk.testlibrary.OutputAnalyzer} encapsulating the output of the command
+ * @throws CommandExecutorException if there is an exception on the "calling side" while trying to execute the
+ * Diagnostic Command. Exceptions thrown on the remote side are available as textual representations in
+ * stderr, regardless of the specific executor used.
+ */
+ public final OutputAnalyzer execute(String cmd) throws CommandExecutorException {
+ return execute(cmd, false);
+ }
+
+ /**
+ * Execute a diagnostic command
+ *
+ * @param cmd The diagnostic command to execute
+ * @param silent Do not print the command output
+ * @return an {@link jdk.testlibrary.OutputAnalyzer} encapsulating the output of the command
+ * @throws CommandExecutorException if there is an exception on the "calling side" while trying to execute the
+ * Diagnostic Command. Exceptions thrown on the remote side are available as textual representations in
+ * stderr, regardless of the specific executor used.
+ */
+ public final OutputAnalyzer execute(String cmd, boolean silent) throws CommandExecutorException {
+ if (!silent) {
+ System.out.printf("Running DCMD '%s' through '%s'%n", cmd, this.getClass().getSimpleName());
+ }
+
+ OutputAnalyzer oa = executeImpl(cmd);
+
+ if (!silent) {
+ System.out.println("---------------- stdout ----------------");
+ System.out.println(oa.getStdout());
+ System.out.println("---------------- stderr ----------------");
+ System.out.println(oa.getStderr());
+ System.out.println("----------------------------------------");
+ System.out.println();
+ }
+ return oa;
+ }
+
+ protected abstract OutputAnalyzer executeImpl(String cmd) throws CommandExecutorException;
+}
diff --git a/test/lib/jdk/test/lib/dcmd/CommandExecutorException.java b/test/lib/jdk/test/lib/dcmd/CommandExecutorException.java
new file mode 100644
index 0000000..89aa1b3
--- /dev/null
+++ b/test/lib/jdk/test/lib/dcmd/CommandExecutorException.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2015, 2016, 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 jdk.test.lib.dcmd;
+
+/**
+ * CommandExecutorException encapsulates exceptions thrown (on the "calling side") from the execution of Diagnostic
+ * Commands
+ */
+public class CommandExecutorException extends RuntimeException {
+ private static final long serialVersionUID = -7039597746579144280L;
+
+ public CommandExecutorException(String message, Throwable e) {
+ super(message, e);
+ }
+}
diff --git a/test/lib/jdk/test/lib/dcmd/FileJcmdExecutor.java b/test/lib/jdk/test/lib/dcmd/FileJcmdExecutor.java
new file mode 100644
index 0000000..563b65f
--- /dev/null
+++ b/test/lib/jdk/test/lib/dcmd/FileJcmdExecutor.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2015, 2016, 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 jdk.test.lib.dcmd;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Executes Diagnostic Commands on the target VM (specified by pid) using the jcmd tool and its ability to read
+ * Diagnostic Commands from a file.
+ */
+public class FileJcmdExecutor extends PidJcmdExecutor {
+
+ /**
+ * Instantiates a new FileJcmdExecutor targeting the current VM
+ */
+ public FileJcmdExecutor() {
+ super();
+ }
+
+ /**
+ * Instantiates a new FileJcmdExecutor targeting the VM indicated by the given pid
+ *
+ * @param target Pid of the target VM
+ */
+ public FileJcmdExecutor(String target) {
+ super(target);
+ }
+
+ protected List<String> createCommandLine(String cmd) throws CommandExecutorException {
+ File cmdFile = createTempFile();
+ writeCommandToTemporaryFile(cmd, cmdFile);
+
+ return Arrays.asList(jcmdBinary, Long.toString(pid),
+ "-f", cmdFile.getAbsolutePath());
+ }
+
+ private void writeCommandToTemporaryFile(String cmd, File cmdFile) {
+ try (PrintWriter pw = new PrintWriter(cmdFile)) {
+ pw.println(cmd);
+ } catch (IOException e) {
+ String message = "Could not write to file: " + cmdFile.getAbsolutePath();
+ throw new CommandExecutorException(message, e);
+ }
+ }
+
+ private File createTempFile() {
+ try {
+ File cmdFile = File.createTempFile("input", "jcmd");
+ cmdFile.deleteOnExit();
+ return cmdFile;
+ } catch (IOException e) {
+ throw new CommandExecutorException("Could not create temporary file", e);
+ }
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/dcmd/JMXExecutor.java b/test/lib/jdk/test/lib/dcmd/JMXExecutor.java
new file mode 100644
index 0000000..677b5db
--- /dev/null
+++ b/test/lib/jdk/test/lib/dcmd/JMXExecutor.java
@@ -0,0 +1,187 @@
+/*
+ * Copyright (c) 2015, 2016, 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 jdk.test.lib.dcmd;
+
+import jdk.test.lib.process.OutputAnalyzer;
+
+import javax.management.*;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import java.lang.management.ManagementFactory;
+
+import java.util.HashMap;
+
+/**
+ * Executes Diagnostic Commands on the target VM (specified by a host/port combination or a full JMX Service URL) using
+ * the JMX interface. If the target is not the current VM, the JMX Remote interface must be enabled beforehand.
+ */
+public class JMXExecutor extends CommandExecutor {
+
+ private final MBeanServerConnection mbs;
+
+ /**
+ * Instantiates a new JMXExecutor targeting the current VM
+ */
+ public JMXExecutor() {
+ super();
+ mbs = ManagementFactory.getPlatformMBeanServer();
+ }
+
+ /**
+ * Instantiates a new JMXExecutor targeting the VM indicated by the given host/port combination or a full JMX
+ * Service URL
+ *
+ * @param target a host/port combination on the format "host:port" or a full JMX Service URL of the target VM
+ */
+ public JMXExecutor(String target) {
+ String urlStr;
+
+ if (target.matches("^\\w[\\w\\-]*(\\.[\\w\\-]+)*:\\d+$")) {
+ /* Matches "hostname:port" */
+ urlStr = String.format("service:jmx:rmi:///jndi/rmi://%s/jmxrmi", target);
+ } else if (target.startsWith("service:")) {
+ urlStr = target;
+ } else {
+ throw new IllegalArgumentException("Could not recognize target string: " + target);
+ }
+
+ try {
+ JMXServiceURL url = new JMXServiceURL(urlStr);
+ JMXConnector c = JMXConnectorFactory.connect(url, new HashMap<>());
+ mbs = c.getMBeanServerConnection();
+ } catch (IOException e) {
+ throw new CommandExecutorException("Could not initiate connection to target: " + target, e);
+ }
+ }
+
+ protected OutputAnalyzer executeImpl(String cmd) throws CommandExecutorException {
+ String stdout = "";
+ String stderr = "";
+
+ String[] cmdParts = cmd.split(" ", 2);
+ String operation = commandToMethodName(cmdParts[0]);
+ Object[] dcmdArgs = produceArguments(cmdParts);
+ String[] signature = {String[].class.getName()};
+
+ ObjectName beanName = getMBeanName();
+
+ try {
+ stdout = (String) mbs.invoke(beanName, operation, dcmdArgs, signature);
+ }
+
+ /* Failures on the "local" side, the one invoking the command. */
+ catch (ReflectionException e) {
+ Throwable cause = e.getCause();
+ if (cause instanceof NoSuchMethodException) {
+ /* We want JMXExecutor to match the behavior of the other CommandExecutors */
+ String message = "Unknown diagnostic command: " + operation;
+ stderr = exceptionTraceAsString(new IllegalArgumentException(message, e));
+ } else {
+ rethrowExecutorException(operation, dcmdArgs, e);
+ }
+ }
+
+ /* Failures on the "local" side, the one invoking the command. */
+ catch (InstanceNotFoundException | IOException e) {
+ rethrowExecutorException(operation, dcmdArgs, e);
+ }
+
+ /* Failures on the remote side, the one executing the invoked command. */
+ catch (MBeanException e) {
+ stdout = exceptionTraceAsString(e);
+ }
+
+ return new OutputAnalyzer(stdout, stderr);
+ }
+
+ private void rethrowExecutorException(String operation, Object[] dcmdArgs,
+ Exception e) throws CommandExecutorException {
+ String message = String.format("Could not invoke: %s %s", operation,
+ String.join(" ", (String[]) dcmdArgs[0]));
+ throw new CommandExecutorException(message, e);
+ }
+
+ private ObjectName getMBeanName() throws CommandExecutorException {
+ String MBeanName = "com.sun.management:type=DiagnosticCommand";
+
+ try {
+ return new ObjectName(MBeanName);
+ } catch (MalformedObjectNameException e) {
+ String message = "MBean not found: " + MBeanName;
+ throw new CommandExecutorException(message, e);
+ }
+ }
+
+ private Object[] produceArguments(String[] cmdParts) {
+ Object[] dcmdArgs = {new String[0]}; /* Default: No arguments */
+
+ if (cmdParts.length == 2) {
+ dcmdArgs[0] = cmdParts[1].split(" ");
+ }
+ return dcmdArgs;
+ }
+
+ /**
+ * Convert from diagnostic command to MBean method name
+ *
+ * Examples:
+ * help --> help
+ * VM.version --> vmVersion
+ * VM.command_line --> vmCommandLine
+ */
+ private static String commandToMethodName(String cmd) {
+ String operation = "";
+ boolean up = false; /* First letter is to be lower case */
+
+ /*
+ * If a '.' or '_' is encountered it is not copied,
+ * instead the next character will be converted to upper case
+ */
+ for (char c : cmd.toCharArray()) {
+ if (('.' == c) || ('_' == c)) {
+ up = true;
+ } else if (up) {
+ operation = operation.concat(Character.toString(c).toUpperCase());
+ up = false;
+ } else {
+ operation = operation.concat(Character.toString(c).toLowerCase());
+ }
+ }
+
+ return operation;
+ }
+
+ private static String exceptionTraceAsString(Throwable cause) {
+ StringWriter sw = new StringWriter();
+ cause.printStackTrace(new PrintWriter(sw));
+ return sw.toString();
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/dcmd/JcmdExecutor.java b/test/lib/jdk/test/lib/dcmd/JcmdExecutor.java
new file mode 100644
index 0000000..6bf940c
--- /dev/null
+++ b/test/lib/jdk/test/lib/dcmd/JcmdExecutor.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2015, 2016, 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 jdk.test.lib.dcmd;
+
+import jdk.test.lib.JDKToolFinder;
+import jdk.test.lib.process.OutputAnalyzer;
+import jdk.test.lib.process.ProcessTools;
+
+import java.util.List;
+
+/**
+ * Base class for Diagnostic Command Executors using the jcmd tool
+ */
+public abstract class JcmdExecutor extends CommandExecutor {
+ protected String jcmdBinary;
+
+ protected abstract List<String> createCommandLine(String cmd) throws CommandExecutorException;
+
+ protected JcmdExecutor() {
+ jcmdBinary = JDKToolFinder.getJDKTool("jcmd");
+ }
+
+ protected OutputAnalyzer executeImpl(String cmd) throws CommandExecutorException {
+ List<String> commandLine = createCommandLine(cmd);
+
+ try {
+ System.out.printf("Executing command '%s'%n", commandLine);
+ OutputAnalyzer output = ProcessTools.executeProcess(new ProcessBuilder(commandLine));
+ System.out.printf("Command returned with exit code %d%n", output.getExitValue());
+
+ return output;
+ } catch (Exception e) {
+ String message = String.format("Caught exception while executing '%s'", commandLine);
+ throw new CommandExecutorException(message, e);
+ }
+ }
+}
diff --git a/test/lib/jdk/test/lib/dcmd/MainClassJcmdExecutor.java b/test/lib/jdk/test/lib/dcmd/MainClassJcmdExecutor.java
new file mode 100644
index 0000000..84608c1
--- /dev/null
+++ b/test/lib/jdk/test/lib/dcmd/MainClassJcmdExecutor.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2015, 2016, 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 jdk.test.lib.dcmd;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Executes Diagnostic Commands on the target VM (specified by main class) using the jcmd tool
+ */
+public class MainClassJcmdExecutor extends JcmdExecutor {
+ private final String mainClass;
+
+ /**
+ * Instantiates a new MainClassJcmdExecutor targeting the current VM
+ */
+ public MainClassJcmdExecutor() {
+ super();
+ mainClass = System.getProperty("sun.java.command").split(" ")[0];
+ }
+
+ /**
+ * Instantiates a new MainClassJcmdExecutor targeting the VM indicated by the given main class
+ *
+ * @param target Main class of the target VM
+ */
+ public MainClassJcmdExecutor(String target) {
+ super();
+ mainClass = target;
+ }
+
+ protected List<String> createCommandLine(String cmd) throws CommandExecutorException {
+ return Arrays.asList(jcmdBinary, mainClass, cmd);
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/dcmd/PidJcmdExecutor.java b/test/lib/jdk/test/lib/dcmd/PidJcmdExecutor.java
new file mode 100644
index 0000000..25b3f53
--- /dev/null
+++ b/test/lib/jdk/test/lib/dcmd/PidJcmdExecutor.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2015, 2016, 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 jdk.test.lib.dcmd;
+
+import jdk.test.lib.process.ProcessTools;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Executes Diagnostic Commands on the target VM (specified by pid) using the jcmd tool
+ */
+public class PidJcmdExecutor extends JcmdExecutor {
+ protected final long pid;
+
+ /**
+ * Instantiates a new PidJcmdExecutor targeting the current VM
+ */
+ public PidJcmdExecutor() {
+ super();
+ try {
+ pid = ProcessTools.getProcessId();
+ } catch (Exception e) {
+ throw new CommandExecutorException("Could not determine own pid", e);
+ }
+ }
+
+ /**
+ * Instantiates a new PidJcmdExecutor targeting the VM indicated by the given pid
+ *
+ * @param target Pid of the target VM
+ */
+ public PidJcmdExecutor(String target) {
+ super();
+ pid = Long.valueOf(target);
+ }
+
+ protected List<String> createCommandLine(String cmd) throws CommandExecutorException {
+ return Arrays.asList(jcmdBinary, Long.toString(pid), cmd);
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/HprofParser.java b/test/lib/jdk/test/lib/hprof/HprofParser.java
new file mode 100644
index 0000000..88841f9
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/HprofParser.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2015, 2016, 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 jdk.test.lib.hprof;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+
+import jdk.test.lib.hprof.model.Snapshot;
+import jdk.test.lib.hprof.parser.Reader;
+
+/**
+ * Helper class to parse a java heap dump file.
+ */
+public class HprofParser {
+
+ public static void main(String[] args) throws Exception {
+ if (args.length < 1) {
+ System.out.println("No arguments supplied");
+ }
+ File dump = new File(args[0]);
+ if (!dump.exists() || !dump.isFile()) {
+ throw new RuntimeException("The dump file does not exist or not a file");
+ }
+ parse(dump);
+ }
+
+ /**
+ * @see #parse(File, boolean, boolean, boolean)
+ */
+ public static File parse(File dump) throws Exception {
+ return parse(dump, false, true, true);
+ }
+
+ /**
+ * @see #parse(File, boolean, boolean, boolean)
+ */
+ public static File parseWithDebugInfo(File dump) throws Exception {
+ return parse(dump, true, true, true);
+ }
+
+ /**
+ * Parse a java heap dump file
+ *
+ * @param dump Heap dump file to parse
+ * @param debug Turn on/off debug file parsing
+ * @param callStack Turn on/off tracking of object allocation call stack
+ * @param calculateRefs Turn on/off tracking object allocation call stack
+ * @throws Exception
+ * @return File containing output from the parser
+ */
+ public static File parse(File dump, boolean debug, boolean callStack, boolean calculateRefs) throws Exception {
+ File out = new File("hprof." + System.currentTimeMillis() + ".out");
+ if (out.exists()) {
+ out.delete();
+ }
+
+ PrintStream psSystemOut = System.out;
+ try (PrintStream psHprof = new PrintStream(new BufferedOutputStream(new FileOutputStream(out.getAbsolutePath())))) {
+ System.setOut(psHprof);
+
+ int debugLevel = debug ? 2 : 0;
+ try (Snapshot snapshot = Reader.readFile(dump.getAbsolutePath(), callStack, debugLevel)) {
+ System.out.println("Snapshot read, resolving...");
+ snapshot.resolve(calculateRefs);
+ System.out.println("Snapshot resolved.");
+ }
+ } finally {
+ System.setOut(psSystemOut);
+ }
+
+ return out;
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/README b/test/lib/jdk/test/lib/hprof/README
new file mode 100644
index 0000000..6c28368
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/README
@@ -0,0 +1,13 @@
+The jhat tool has been removed. jhat hprof file parser/validator
+are needed for tests. The old packages for jhat were moved here:
+com.sun.tools.hat.internal.model -> jdk.test.lib.hprof.model
+com.sun.tools.hat.internal.parser -> jdk.test.lib.hprof.parser
+com.sun.tools.hat.internal.util -> jdk.test.lib.hprof.util
+
+jhat was added in JDK 6 and its original implementation was from
+java.net HAT project [1]. jhat is an experimental, unsupported tool.
+There hasn't been much update to jhat tool in the JDK. In addition,
+there are several better heap dump visualizer/analyzer emerged since
+JDK 5/6 serviceability support.
+
+[1] https://java.net/projects/hat
diff --git a/test/lib/jdk/test/lib/hprof/model/AbstractJavaHeapObjectVisitor.java b/test/lib/jdk/test/lib/hprof/model/AbstractJavaHeapObjectVisitor.java
new file mode 100644
index 0000000..4624347
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/AbstractJavaHeapObjectVisitor.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ * A visitor for a JavaThing. @see JavaObject#visitReferencedObjects()
+ *
+ */
+
+
+abstract public class AbstractJavaHeapObjectVisitor
+ implements JavaHeapObjectVisitor {
+ abstract public void visit(JavaHeapObject other);
+
+ /**
+ * Should the given field be excluded from the set of things visited?
+ * @return true if it should.
+ */
+ public boolean exclude(JavaClass clazz, JavaField f) {
+ return false;
+ }
+
+ /**
+ * @return true iff exclude might ever return true
+ */
+ public boolean mightExclude() {
+ return false;
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/ArrayTypeCodes.java b/test/lib/jdk/test/lib/hprof/model/ArrayTypeCodes.java
new file mode 100644
index 0000000..c6ac3ac
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/ArrayTypeCodes.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ * Primitive array type codes as defined by VM specification.
+ *
+ */
+public interface ArrayTypeCodes {
+ // Typecodes for array elements.
+ // Refer to newarray instruction in VM Spec.
+ public static final int T_BOOLEAN = 4;
+ public static final int T_CHAR = 5;
+ public static final int T_FLOAT = 6;
+ public static final int T_DOUBLE = 7;
+ public static final int T_BYTE = 8;
+ public static final int T_SHORT = 9;
+ public static final int T_INT = 10;
+ public static final int T_LONG = 11;
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/HackJavaValue.java b/test/lib/jdk/test/lib/hprof/model/HackJavaValue.java
new file mode 100644
index 0000000..6da7b2d
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/HackJavaValue.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ * This is used to represent values that the program doesn't really understand.
+ * This includes the null vlaue, and unresolved references (which shouldn't
+ * happen in well-formed hprof files).
+ *
+ *
+ * @author Bill Foote
+ */
+
+
+
+
+public class HackJavaValue extends JavaValue {
+
+ private String value;
+ private int size;
+
+ public HackJavaValue(String value, int size) {
+ this.value = value;
+ this.size = size;
+ }
+
+ public String toString() {
+ return value;
+ }
+
+ public int getSize() {
+ return size;
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaBoolean.java b/test/lib/jdk/test/lib/hprof/model/JavaBoolean.java
new file mode 100644
index 0000000..e96766d
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaBoolean.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ * Represents a boolean (i.e. a boolean field in an instance).
+ *
+ * @author Bill Foote
+ */
+
+
+public class JavaBoolean extends JavaValue {
+
+ boolean value;
+
+ public JavaBoolean(boolean value) {
+ this.value = value;
+ }
+
+ public String toString() {
+ return "" + value;
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaByte.java b/test/lib/jdk/test/lib/hprof/model/JavaByte.java
new file mode 100644
index 0000000..e4a1d33
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaByte.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ * Represents an byte (i.e. a byte field in an instance).
+ *
+ * @author Bill Foote
+ */
+
+
+public class JavaByte extends JavaValue {
+
+ byte value;
+
+ public JavaByte(byte value) {
+ this.value = value;
+ }
+
+ public String toString() {
+ return "0x" + Integer.toString(((int) value) & 0xff, 16);
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaChar.java b/test/lib/jdk/test/lib/hprof/model/JavaChar.java
new file mode 100644
index 0000000..7c04f50
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaChar.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ * Represents a char (i.e. a char field in an instance).
+ *
+ * @author Bill Foote
+ */
+
+
+public class JavaChar extends JavaValue {
+
+ char value;
+
+ public JavaChar(char value) {
+ this.value = value;
+ }
+
+ public String toString() {
+ return "" + value;
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaClass.java b/test/lib/jdk/test/lib/hprof/model/JavaClass.java
new file mode 100644
index 0000000..c2a9563
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaClass.java
@@ -0,0 +1,503 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+import java.util.Vector;
+import java.util.Enumeration;
+import jdk.test.lib.hprof.util.CompositeEnumeration;
+import jdk.test.lib.hprof.parser.ReadBuffer;
+
+/**
+ *
+ * @author Bill Foote
+ */
+
+
+public class JavaClass extends JavaHeapObject {
+ // my id
+ private long id;
+ // my name
+ private String name;
+
+ // These are JavaObjectRef before resolve
+ private JavaThing superclass;
+ private JavaThing loader;
+ private JavaThing signers;
+ private JavaThing protectionDomain;
+
+ // non-static fields
+ private JavaField[] fields;
+ // static fields
+ private JavaStatic[] statics;
+
+ private static final JavaClass[] EMPTY_CLASS_ARRAY = new JavaClass[0];
+ // my subclasses
+ private JavaClass[] subclasses = EMPTY_CLASS_ARRAY;
+
+ // my instances
+ private Vector<JavaHeapObject> instances = new Vector<JavaHeapObject>();
+
+ // Who I belong to. Set on resolve.
+ private Snapshot mySnapshot;
+
+ // Size of an instance, including VM overhead
+ private int instanceSize;
+ // Total number of fields including inherited ones
+ private int totalNumFields;
+
+
+ public JavaClass(long id, String name, long superclassId, long loaderId,
+ long signersId, long protDomainId,
+ JavaField[] fields, JavaStatic[] statics,
+ int instanceSize) {
+ this.id = id;
+ this.name = name;
+ this.superclass = new JavaObjectRef(superclassId);
+ this.loader = new JavaObjectRef(loaderId);
+ this.signers = new JavaObjectRef(signersId);
+ this.protectionDomain = new JavaObjectRef(protDomainId);
+ this.fields = fields;
+ this.statics = statics;
+ this.instanceSize = instanceSize;
+ }
+
+ public JavaClass(String name, long superclassId, long loaderId,
+ long signersId, long protDomainId,
+ JavaField[] fields, JavaStatic[] statics,
+ int instanceSize) {
+ this(-1L, name, superclassId, loaderId, signersId,
+ protDomainId, fields, statics, instanceSize);
+ }
+
+ public final JavaClass getClazz() {
+ return mySnapshot.getJavaLangClass();
+ }
+
+ public final int getIdentifierSize() {
+ return mySnapshot.getIdentifierSize();
+ }
+
+ public final int getMinimumObjectSize() {
+ return mySnapshot.getMinimumObjectSize();
+ }
+
+ public void resolve(Snapshot snapshot) {
+ if (mySnapshot != null) {
+ return;
+ }
+ mySnapshot = snapshot;
+ resolveSuperclass(snapshot);
+ if (superclass != null) {
+ ((JavaClass) superclass).addSubclass(this);
+ }
+
+ loader = loader.dereference(snapshot, null);
+ signers = signers.dereference(snapshot, null);
+ protectionDomain = protectionDomain.dereference(snapshot, null);
+
+ for (int i = 0; i < statics.length; i++) {
+ statics[i].resolve(this, snapshot);
+ }
+ snapshot.getJavaLangClass().addInstance(this);
+ super.resolve(snapshot);
+ return;
+ }
+
+ /**
+ * Resolve our superclass. This might be called well before
+ * all instances are available (like when reading deferred
+ * instances in a 1.2 dump file :-) Calling this is sufficient
+ * to be able to explore this class' fields.
+ */
+ public void resolveSuperclass(Snapshot snapshot) {
+ if (superclass == null) {
+ // We must be java.lang.Object, so we have no superclass.
+ } else {
+ totalNumFields = fields.length;
+ superclass = superclass.dereference(snapshot, null);
+ if (superclass == snapshot.getNullThing()) {
+ superclass = null;
+ } else {
+ try {
+ JavaClass sc = (JavaClass) superclass;
+ sc.resolveSuperclass(snapshot);
+ totalNumFields += sc.totalNumFields;
+ } catch (ClassCastException ex) {
+ System.out.println("Warning! Superclass of " + name + " is " + superclass);
+ superclass = null;
+ }
+ }
+ }
+ }
+
+ public boolean isString() {
+ return mySnapshot.getJavaLangString() == this;
+ }
+
+ public boolean isClassLoader() {
+ return mySnapshot.getJavaLangClassLoader().isAssignableFrom(this);
+ }
+
+ /**
+ * Get a numbered field from this class
+ */
+ public JavaField getField(int i) {
+ if (i < 0 || i >= fields.length) {
+ throw new Error("No field " + i + " for " + name);
+ }
+ return fields[i];
+ }
+
+ /**
+ * Get the total number of fields that are part of an instance of
+ * this class. That is, include superclasses.
+ */
+ public int getNumFieldsForInstance() {
+ return totalNumFields;
+ }
+
+ /**
+ * Get a numbered field from all the fields that are part of instance
+ * of this class. That is, include superclasses.
+ */
+ public JavaField getFieldForInstance(int i) {
+ if (superclass != null) {
+ JavaClass sc = (JavaClass) superclass;
+ if (i < sc.totalNumFields) {
+ return sc.getFieldForInstance(i);
+ }
+ i -= sc.totalNumFields;
+ }
+ return getField(i);
+ }
+
+ /**
+ * Get the class responsible for field i, where i is a field number that
+ * could be passed into getFieldForInstance.
+ *
+ * @see JavaClass.getFieldForInstance()
+ */
+ public JavaClass getClassForField(int i) {
+ if (superclass != null) {
+ JavaClass sc = (JavaClass) superclass;
+ if (i < sc.totalNumFields) {
+ return sc.getClassForField(i);
+ }
+ }
+ return this;
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public boolean isArray() {
+ return name.indexOf('[') != -1;
+ }
+
+ public Enumeration<JavaHeapObject> getInstances(boolean includeSubclasses) {
+ if (includeSubclasses) {
+ Enumeration<JavaHeapObject> res = instances.elements();
+ for (int i = 0; i < subclasses.length; i++) {
+ res = new CompositeEnumeration(res,
+ subclasses[i].getInstances(true));
+ }
+ return res;
+ } else {
+ return instances.elements();
+ }
+ }
+
+ /**
+ * @return a count of the instances of this class
+ */
+ public int getInstancesCount(boolean includeSubclasses) {
+ int result = instances.size();
+ if (includeSubclasses) {
+ for (int i = 0; i < subclasses.length; i++) {
+ result += subclasses[i].getInstancesCount(includeSubclasses);
+ }
+ }
+ return result;
+ }
+
+ public JavaClass[] getSubclasses() {
+ return subclasses;
+ }
+
+ /**
+ * This can only safely be called after resolve()
+ */
+ public JavaClass getSuperclass() {
+ return (JavaClass) superclass;
+ }
+
+ /**
+ * This can only safely be called after resolve()
+ */
+ public JavaThing getLoader() {
+ return loader;
+ }
+
+ /**
+ * This can only safely be called after resolve()
+ */
+ public boolean isBootstrap() {
+ return loader == mySnapshot.getNullThing();
+ }
+
+ /**
+ * This can only safely be called after resolve()
+ */
+ public JavaThing getSigners() {
+ return signers;
+ }
+
+ /**
+ * This can only safely be called after resolve()
+ */
+ public JavaThing getProtectionDomain() {
+ return protectionDomain;
+ }
+
+ public JavaField[] getFields() {
+ return fields;
+ }
+
+ /**
+ * Includes superclass fields
+ */
+ public JavaField[] getFieldsForInstance() {
+ Vector<JavaField> v = new Vector<JavaField>();
+ addFields(v);
+ JavaField[] result = new JavaField[v.size()];
+ for (int i = 0; i < v.size(); i++) {
+ result[i] = v.elementAt(i);
+ }
+ return result;
+ }
+
+
+ public JavaStatic[] getStatics() {
+ return statics;
+ }
+
+ // returns value of static field of given name
+ public JavaThing getStaticField(String name) {
+ for (int i = 0; i < statics.length; i++) {
+ JavaStatic s = statics[i];
+ if (s.getField().getName().equals(name)) {
+ return s.getValue();
+ }
+ }
+ return null;
+ }
+
+ public String toString() {
+ return "class " + name;
+ }
+
+ public int compareTo(JavaThing other) {
+ if (other instanceof JavaClass) {
+ return name.compareTo(((JavaClass) other).name);
+ }
+ return super.compareTo(other);
+ }
+
+
+ /**
+ * @return true iff a variable of type this is assignable from an instance
+ * of other
+ */
+ public boolean isAssignableFrom(JavaClass other) {
+ if (this == other) {
+ return true;
+ } else if (other == null) {
+ return false;
+ } else {
+ return isAssignableFrom((JavaClass) other.superclass);
+ // Trivial tail recursion: I have faith in javac.
+ }
+ }
+
+ /**
+ * Describe the reference that this thing has to target. This will only
+ * be called if target is in the array returned by getChildrenForRootset.
+ */
+ public String describeReferenceTo(JavaThing target, Snapshot ss) {
+ for (int i = 0; i < statics.length; i++) {
+ JavaField f = statics[i].getField();
+ if (f.hasId()) {
+ JavaThing other = statics[i].getValue();
+ if (other == target) {
+ return "static field " + f.getName();
+ }
+ }
+ }
+ return super.describeReferenceTo(target, ss);
+ }
+
+ /**
+ * @return the size of an instance of this class. Gives 0 for an array
+ * type.
+ */
+ public int getInstanceSize() {
+ return instanceSize + mySnapshot.getMinimumObjectSize();
+ }
+
+
+ /**
+ * @return The size of all instances of this class. Correctly handles
+ * arrays.
+ */
+ public long getTotalInstanceSize() {
+ int count = instances.size();
+ if (count == 0 || !isArray()) {
+ return count * instanceSize;
+ }
+
+ // array class and non-zero count, we have to
+ // get the size of each instance and sum it
+ long result = 0;
+ for (int i = 0; i < count; i++) {
+ JavaThing t = (JavaThing) instances.elementAt(i);
+ result += t.getSize();
+ }
+ return result;
+ }
+
+ /**
+ * @return the size of this object
+ */
+ public int getSize() {
+ JavaClass cl = mySnapshot.getJavaLangClass();
+ if (cl == null) {
+ return 0;
+ } else {
+ return cl.getInstanceSize();
+ }
+ }
+
+ public void visitReferencedObjects(JavaHeapObjectVisitor v) {
+ super.visitReferencedObjects(v);
+ JavaHeapObject sc = getSuperclass();
+ if (sc != null) v.visit(getSuperclass());
+
+ JavaThing other;
+ other = getLoader();
+ if (other instanceof JavaHeapObject) {
+ v.visit((JavaHeapObject)other);
+ }
+ other = getSigners();
+ if (other instanceof JavaHeapObject) {
+ v.visit((JavaHeapObject)other);
+ }
+ other = getProtectionDomain();
+ if (other instanceof JavaHeapObject) {
+ v.visit((JavaHeapObject)other);
+ }
+
+ for (int i = 0; i < statics.length; i++) {
+ JavaField f = statics[i].getField();
+ if (!v.exclude(this, f) && f.hasId()) {
+ other = statics[i].getValue();
+ if (other instanceof JavaHeapObject) {
+ v.visit((JavaHeapObject) other);
+ }
+ }
+ }
+ }
+
+ // package-privates below this point
+ final ReadBuffer getReadBuffer() {
+ return mySnapshot.getReadBuffer();
+ }
+
+ final void setNew(JavaHeapObject obj, boolean flag) {
+ mySnapshot.setNew(obj, flag);
+ }
+
+ final boolean isNew(JavaHeapObject obj) {
+ return mySnapshot.isNew(obj);
+ }
+
+ final StackTrace getSiteTrace(JavaHeapObject obj) {
+ return mySnapshot.getSiteTrace(obj);
+ }
+
+ final void addReferenceFromRoot(Root root, JavaHeapObject obj) {
+ mySnapshot.addReferenceFromRoot(root, obj);
+ }
+
+ final Root getRoot(JavaHeapObject obj) {
+ return mySnapshot.getRoot(obj);
+ }
+
+ final Snapshot getSnapshot() {
+ return mySnapshot;
+ }
+
+ void addInstance(JavaHeapObject inst) {
+ instances.addElement(inst);
+ }
+
+ // Internals only below this point
+ private void addFields(Vector<JavaField> v) {
+ if (superclass != null) {
+ ((JavaClass) superclass).addFields(v);
+ }
+ for (int i = 0; i < fields.length; i++) {
+ v.addElement(fields[i]);
+ }
+ }
+
+ private void addSubclassInstances(Vector<JavaHeapObject> v) {
+ for (int i = 0; i < subclasses.length; i++) {
+ subclasses[i].addSubclassInstances(v);
+ }
+ for (int i = 0; i < instances.size(); i++) {
+ v.addElement(instances.elementAt(i));
+ }
+ }
+
+ private void addSubclass(JavaClass sub) {
+ JavaClass newValue[] = new JavaClass[subclasses.length + 1];
+ System.arraycopy(subclasses, 0, newValue, 0, subclasses.length);
+ newValue[subclasses.length] = sub;
+ subclasses = newValue;
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaDouble.java b/test/lib/jdk/test/lib/hprof/model/JavaDouble.java
new file mode 100644
index 0000000..3b64302
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaDouble.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ * Represents a double (i.e. a double field in an instance).
+ *
+ * @author Bill Foote
+ */
+
+
+public class JavaDouble extends JavaValue {
+
+ double value;
+
+ public JavaDouble(double value) {
+ this.value = value;
+ }
+
+ public String toString() {
+ return Double.toString(value);
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaField.java b/test/lib/jdk/test/lib/hprof/model/JavaField.java
new file mode 100644
index 0000000..d343f91
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaField.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+
+/**
+ *
+ * @author Bill Foote
+ */
+
+public class JavaField {
+
+ private String name;
+ private String signature;
+
+ public JavaField(String name, String signature) {
+ this.name = name;
+ this.signature = signature;
+ }
+
+
+ /**
+ * @return true if the type of this field is something that has an ID.
+ * int fields, for exampe, don't.
+ */
+ public boolean hasId() {
+ char ch = signature.charAt(0);
+ return (ch == '[' || ch == 'L');
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getSignature() {
+ return signature;
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaFloat.java b/test/lib/jdk/test/lib/hprof/model/JavaFloat.java
new file mode 100644
index 0000000..4469212
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaFloat.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ * Represents a float (i.e. a float field in an instance).
+ *
+ * @author Bill Foote
+ */
+
+
+public class JavaFloat extends JavaValue {
+
+ float value;
+
+ public JavaFloat(float value) {
+ this.value = value;
+ }
+
+ public String toString() {
+ return Float.toString(value);
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaHeapObject.java b/test/lib/jdk/test/lib/hprof/model/JavaHeapObject.java
new file mode 100644
index 0000000..dbe54f0
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaHeapObject.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
+import jdk.test.lib.hprof.util.Misc;
+
+
+/**
+ *
+ * @author Bill Foote
+ */
+
+/**
+ * Represents an object that's allocated out of the Java heap. It occupies
+ * memory in the VM, and is the sort of thing that in a JDK 1.1 VM had
+ * a handle. It can be a
+ * JavaClass, a JavaObjectArray, a JavaValueArray or a JavaObject.
+ */
+
+public abstract class JavaHeapObject extends JavaThing {
+
+ //
+ // Who we refer to. This is heavily optimized for space, because it's
+ // well worth trading a bit of speed for less swapping.
+ // referers and referersLen go through two phases: Building and
+ // resolved. When building, referers might have duplicates, but can
+ // be appended to. When resolved, referers has no duplicates or
+ // empty slots.
+ //
+ private JavaThing[] referers = null;
+ private int referersLen = 0; // -1 when resolved
+
+ public abstract JavaClass getClazz();
+ public abstract int getSize();
+ public abstract long getId();
+
+ /**
+ * Do any initialization this thing needs after its data is read in.
+ * Subclasses that override this should call super.resolve().
+ */
+ public void resolve(Snapshot snapshot) {
+ StackTrace trace = snapshot.getSiteTrace(this);
+ if (trace != null) {
+ trace.resolve(snapshot);
+ }
+ }
+
+ //
+ // Eliminate duplicates from referers, and size the array exactly.
+ // This sets us up to answer queries. See the comments around the
+ // referers data member for details.
+ //
+ void setupReferers() {
+ if (referersLen > 1) {
+ // Copy referers to map, screening out duplicates
+ Map<JavaThing, JavaThing> map = new HashMap<JavaThing, JavaThing>();
+ for (int i = 0; i < referersLen; i++) {
+ if (map.get(referers[i]) == null) {
+ map.put(referers[i], referers[i]);
+ }
+ }
+
+ // Now copy into the array
+ referers = new JavaThing[map.size()];
+ map.keySet().toArray(referers);
+ }
+ referersLen = -1;
+ }
+
+
+ /**
+ * @return the id of this thing as hex string
+ */
+ public String getIdString() {
+ return Misc.toHex(getId());
+ }
+
+ public String toString() {
+ return getClazz().getName() + "@" + getIdString();
+ }
+
+ /**
+ * @return the StackTrace of the point of allocation of this object,
+ * or null if unknown
+ */
+ public StackTrace getAllocatedFrom() {
+ return getClazz().getSiteTrace(this);
+ }
+
+ public boolean isNew() {
+ return getClazz().isNew(this);
+ }
+
+ void setNew(boolean flag) {
+ getClazz().setNew(this, flag);
+ }
+
+ /**
+ * Tell the visitor about all of the objects we refer to
+ */
+ public void visitReferencedObjects(JavaHeapObjectVisitor v) {
+ v.visit(getClazz());
+ }
+
+ void addReferenceFrom(JavaHeapObject other) {
+ if (referersLen == 0) {
+ referers = new JavaThing[1]; // It was null
+ } else if (referersLen == referers.length) {
+ JavaThing[] copy = new JavaThing[(3 * (referersLen + 1)) / 2];
+ System.arraycopy(referers, 0, copy, 0, referersLen);
+ referers = copy;
+ }
+ referers[referersLen++] = other;
+ // We just append to referers here. Measurements have shown that
+ // around 10% to 30% are duplicates, so it's better to just append
+ // blindly and screen out all the duplicates at once.
+ }
+
+ void addReferenceFromRoot(Root r) {
+ getClazz().addReferenceFromRoot(r, this);
+ }
+
+ /**
+ * If the rootset includes this object, return a Root describing one
+ * of the reasons why.
+ */
+ public Root getRoot() {
+ return getClazz().getRoot(this);
+ }
+
+ /**
+ * Tell who refers to us.
+ *
+ * @return an Enumeration of JavaHeapObject instances
+ */
+ public Enumeration<JavaThing> getReferers() {
+ if (referersLen != -1) {
+ throw new RuntimeException("not resolved: " + getIdString());
+ }
+ return new Enumeration<JavaThing>() {
+
+ private int num = 0;
+
+ public boolean hasMoreElements() {
+ return referers != null && num < referers.length;
+ }
+
+ public JavaThing nextElement() {
+ return referers[num++];
+ }
+ };
+ }
+
+ /**
+ * Given other, which the caller promises is in referers, determines if
+ * the reference is only a weak reference.
+ */
+ public boolean refersOnlyWeaklyTo(Snapshot ss, JavaThing other) {
+ return false;
+ }
+
+ /**
+ * Describe the reference that this thing has to target. This will only
+ * be called if target is in the array returned by getChildrenForRootset.
+ */
+ public String describeReferenceTo(JavaThing target, Snapshot ss) {
+ return "??";
+ }
+
+ public boolean isHeapAllocated() {
+ return true;
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaHeapObjectVisitor.java b/test/lib/jdk/test/lib/hprof/model/JavaHeapObjectVisitor.java
new file mode 100644
index 0000000..7760765
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaHeapObjectVisitor.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ * A visitor for a JavaThing. @see JavaObject#visitReferencedObjects()
+ *
+ * @author Bill Foote
+ */
+
+
+public interface JavaHeapObjectVisitor {
+ public void visit(JavaHeapObject other);
+
+ /**
+ * Should the given field be excluded from the set of things visited?
+ * @return true if it should.
+ */
+ public boolean exclude(JavaClass clazz, JavaField f);
+
+ /**
+ * @return true iff exclude might ever return true
+ */
+ public boolean mightExclude();
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaInt.java b/test/lib/jdk/test/lib/hprof/model/JavaInt.java
new file mode 100644
index 0000000..9360f85
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaInt.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ * Represents an integer (i.e. an int field in an instance).
+ *
+ * @author Bill Foote
+ */
+
+
+public class JavaInt extends JavaValue {
+
+ int value;
+
+ public JavaInt(int value) {
+ this.value = value;
+ }
+
+ public String toString() {
+ return "" + value;
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaLazyReadObject.java b/test/lib/jdk/test/lib/hprof/model/JavaLazyReadObject.java
new file mode 100644
index 0000000..5428a2b
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaLazyReadObject.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+import java.io.IOException;
+import jdk.test.lib.hprof.parser.ReadBuffer;
+
+/*
+ * Base class for lazily read Java heap objects.
+ */
+public abstract class JavaLazyReadObject extends JavaHeapObject {
+
+ // file offset from which this object data starts
+ private final long offset;
+
+ protected JavaLazyReadObject(long offset) {
+ this.offset = offset;
+ }
+
+ public final int getSize() {
+ return getValueLength() + getClazz().getMinimumObjectSize();
+ }
+
+ protected final long getOffset() {
+ return offset;
+ }
+
+ // return the length of the data for this object
+ protected final int getValueLength() {
+ try {
+ return readValueLength();
+ } catch (IOException exp) {
+ System.err.println("lazy read failed at offset " + offset);
+ exp.printStackTrace();
+ return 0;
+ }
+ }
+
+ // get this object's content as byte array
+ protected final byte[] getValue() {
+ try {
+ return readValue();
+ } catch (IOException exp) {
+ System.err.println("lazy read failed at offset " + offset);
+ exp.printStackTrace();
+ return Snapshot.EMPTY_BYTE_ARRAY;
+ }
+ }
+
+ // get ID of this object
+ public final long getId() {
+ try {
+ ReadBuffer buf = getClazz().getReadBuffer();
+ int idSize = getClazz().getIdentifierSize();
+ if (idSize == 4) {
+ return ((long)buf.getInt(offset)) & Snapshot.SMALL_ID_MASK;
+ } else {
+ return buf.getLong(offset);
+ }
+ } catch (IOException exp) {
+ System.err.println("lazy read failed at offset " + offset);
+ exp.printStackTrace();
+ return -1;
+ }
+ }
+
+ protected abstract int readValueLength() throws IOException;
+ protected abstract byte[] readValue() throws IOException;
+
+ // make Integer or Long for given object ID
+ protected static Number makeId(long id) {
+ if ((id & ~Snapshot.SMALL_ID_MASK) == 0) {
+ return (int)id;
+ } else {
+ return id;
+ }
+ }
+
+ // get ID as long value from Number
+ protected static long getIdValue(Number num) {
+ long id = num.longValue();
+ if (num instanceof Integer) {
+ id &= Snapshot.SMALL_ID_MASK;
+ }
+ return id;
+ }
+
+ // read object ID from given index from given byte array
+ protected final long objectIdAt(int index, byte[] data) {
+ int idSize = getClazz().getIdentifierSize();
+ if (idSize == 4) {
+ return ((long)intAt(index, data)) & Snapshot.SMALL_ID_MASK;
+ } else {
+ return longAt(index, data);
+ }
+ }
+
+ // utility methods to read primitive types from byte array
+ protected static byte byteAt(int index, byte[] value) {
+ return value[index];
+ }
+
+ protected static boolean booleanAt(int index, byte[] value) {
+ return (value[index] & 0xff) == 0? false: true;
+ }
+
+ protected static char charAt(int index, byte[] value) {
+ int b1 = ((int) value[index++] & 0xff);
+ int b2 = ((int) value[index++] & 0xff);
+ return (char) ((b1 << 8) + b2);
+ }
+
+ protected static short shortAt(int index, byte[] value) {
+ int b1 = ((int) value[index++] & 0xff);
+ int b2 = ((int) value[index++] & 0xff);
+ return (short) ((b1 << 8) + b2);
+ }
+
+ protected static int intAt(int index, byte[] value) {
+ int b1 = ((int) value[index++] & 0xff);
+ int b2 = ((int) value[index++] & 0xff);
+ int b3 = ((int) value[index++] & 0xff);
+ int b4 = ((int) value[index++] & 0xff);
+ return ((b1 << 24) + (b2 << 16) + (b3 << 8) + b4);
+ }
+
+ protected static long longAt(int index, byte[] value) {
+ long val = 0;
+ for (int j = 0; j < 8; j++) {
+ val = val << 8;
+ int b = ((int)value[index++]) & 0xff;
+ val |= b;
+ }
+ return val;
+ }
+
+ protected static float floatAt(int index, byte[] value) {
+ int val = intAt(index, value);
+ return Float.intBitsToFloat(val);
+ }
+
+ protected static double doubleAt(int index, byte[] value) {
+ long val = longAt(index, value);
+ return Double.longBitsToDouble(val);
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaLong.java b/test/lib/jdk/test/lib/hprof/model/JavaLong.java
new file mode 100644
index 0000000..28aca95
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaLong.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ * Represents a long (i.e. a long field in an instance).
+ *
+ * @author Bill Foote
+ */
+
+
+public class JavaLong extends JavaValue {
+
+ long value;
+
+ public JavaLong(long value) {
+ this.value = value;
+ }
+
+ public String toString() {
+ return Long.toString(value);
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaObject.java b/test/lib/jdk/test/lib/hprof/model/JavaObject.java
new file mode 100644
index 0000000..74bdb0d
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaObject.java
@@ -0,0 +1,334 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+import java.io.IOException;
+import jdk.test.lib.hprof.parser.ReadBuffer;
+
+/**
+ * Represents Java instance
+ *
+ * @author Bill Foote
+ */
+public class JavaObject extends JavaLazyReadObject {
+
+ private Object clazz; // Number before resolve
+ // JavaClass after resolve
+ /**
+ * Construct a new JavaObject.
+ *
+ * @param classID id of the class object
+ * @param offset The offset of field data
+ */
+ public JavaObject(long classID, long offset) {
+ super(offset);
+ this.clazz = makeId(classID);
+ }
+
+ public void resolve(Snapshot snapshot) {
+ if (clazz instanceof JavaClass) {
+ return;
+ }
+ if (clazz instanceof Number) {
+ long classID = getIdValue((Number)clazz);
+ clazz = snapshot.findThing(classID);
+ if (! (clazz instanceof JavaClass)) {
+ warn("Class " + Long.toHexString(classID) + " not found, " +
+ "adding fake class!");
+ int length;
+ ReadBuffer buf = snapshot.getReadBuffer();
+ int idSize = snapshot.getIdentifierSize();
+ long lenOffset = getOffset() + 2*idSize + 4;
+ try {
+ length = buf.getInt(lenOffset);
+ } catch (IOException exp) {
+ throw new RuntimeException(exp);
+ }
+ clazz = snapshot.addFakeInstanceClass(classID, length);
+ }
+ } else {
+ throw new InternalError("should not reach here");
+ }
+
+ JavaClass cl = (JavaClass) clazz;
+ cl.resolve(snapshot);
+
+ // while resolving, parse fields in verbose mode.
+ // but, getFields calls parseFields in non-verbose mode
+ // to avoid printing warnings repeatedly.
+ parseFields(getValue(), true);
+
+ cl.addInstance(this);
+ super.resolve(snapshot);
+ }
+
+ /**
+ * Are we the same type as other? We are iff our clazz is the
+ * same type as other's.
+ */
+ public boolean isSameTypeAs(JavaThing other) {
+ if (!(other instanceof JavaObject)) {
+ return false;
+ }
+ JavaObject oo = (JavaObject) other;
+ return getClazz().equals(oo.getClazz());
+ }
+
+ /**
+ * Return our JavaClass object. This may only be called after resolve.
+ */
+ public JavaClass getClazz() {
+ return (JavaClass) clazz;
+ }
+
+ public JavaThing[] getFields() {
+ // pass false to verbose mode so that dereference
+ // warnings are not printed.
+ return parseFields(getValue(), false);
+ }
+
+ // returns the value of field of given name
+ public JavaThing getField(String name) {
+ JavaThing[] flds = getFields();
+ JavaField[] instFields = getClazz().getFieldsForInstance();
+ for (int i = 0; i < instFields.length; i++) {
+ if (instFields[i].getName().equals(name)) {
+ return flds[i];
+ }
+ }
+ return null;
+ }
+
+ public int compareTo(JavaThing other) {
+ if (other instanceof JavaObject) {
+ JavaObject oo = (JavaObject) other;
+ return getClazz().getName().compareTo(oo.getClazz().getName());
+ }
+ return super.compareTo(other);
+ }
+
+ public void visitReferencedObjects(JavaHeapObjectVisitor v) {
+ super.visitReferencedObjects(v);
+ JavaThing[] flds = getFields();
+ for (int i = 0; i < flds.length; i++) {
+ if (flds[i] != null) {
+ if (v.mightExclude()
+ && v.exclude(getClazz().getClassForField(i),
+ getClazz().getFieldForInstance(i)))
+ {
+ // skip it
+ } else if (flds[i] instanceof JavaHeapObject) {
+ v.visit((JavaHeapObject) flds[i]);
+ }
+ }
+ }
+ }
+
+ public boolean refersOnlyWeaklyTo(Snapshot ss, JavaThing other) {
+ if (ss.getWeakReferenceClass() != null) {
+ final int referentFieldIndex = ss.getReferentFieldIndex();
+ if (ss.getWeakReferenceClass().isAssignableFrom(getClazz())) {
+ //
+ // REMIND: This introduces a dependency on the JDK
+ // implementation that is undesirable.
+ JavaThing[] flds = getFields();
+ for (int i = 0; i < flds.length; i++) {
+ if (i != referentFieldIndex && flds[i] == other) {
+ return false;
+ }
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Describe the reference that this thing has to target. This will only
+ * be called if target is in the array returned by getChildrenForRootset.
+ */
+ public String describeReferenceTo(JavaThing target, Snapshot ss) {
+ JavaThing[] flds = getFields();
+ for (int i = 0; i < flds.length; i++) {
+ if (flds[i] == target) {
+ JavaField f = getClazz().getFieldForInstance(i);
+ return "field " + f.getName();
+ }
+ }
+ return super.describeReferenceTo(target, ss);
+ }
+
+ public String toString() {
+ if (getClazz().isString()) {
+ JavaThing value = getField("value");
+ if (value instanceof JavaValueArray) {
+ return ((JavaValueArray)value).valueString();
+ } else {
+ return "null";
+ }
+ } else {
+ return super.toString();
+ }
+ }
+
+ // Internals only below this point
+
+ /*
+ * Java instance record (HPROF_GC_INSTANCE_DUMP) looks as below:
+ *
+ * object ID
+ * stack trace serial number (int)
+ * class ID
+ * data length (int)
+ * byte[length]
+ */
+ protected final int readValueLength() throws IOException {
+ JavaClass cl = getClazz();
+ int idSize = cl.getIdentifierSize();
+ long lengthOffset = getOffset() + 2*idSize + 4;
+ return cl.getReadBuffer().getInt(lengthOffset);
+ }
+
+ protected final byte[] readValue() throws IOException {
+ JavaClass cl = getClazz();
+ int idSize = cl.getIdentifierSize();
+ ReadBuffer buf = cl.getReadBuffer();
+ long offset = getOffset() + 2*idSize + 4;
+ int length = buf.getInt(offset);
+ if (length == 0) {
+ return Snapshot.EMPTY_BYTE_ARRAY;
+ } else {
+ byte[] res = new byte[length];
+ buf.get(offset + 4, res);
+ return res;
+ }
+ }
+
+ private JavaThing[] parseFields(byte[] data, boolean verbose) {
+ JavaClass cl = getClazz();
+ int target = cl.getNumFieldsForInstance();
+ JavaField[] fields = cl.getFields();
+ JavaThing[] fieldValues = new JavaThing[target];
+ Snapshot snapshot = cl.getSnapshot();
+ int idSize = snapshot.getIdentifierSize();
+ int fieldNo = 0;
+ // In the dump file, the fields are stored in this order:
+ // fields of most derived class (immediate class) are stored
+ // first and then the super class and so on. In this object,
+ // fields are stored in the reverse ("natural") order. i.e.,
+ // fields of most super class are stored first.
+
+ // target variable is used to compensate for the fact that
+ // the dump file starts field values from the leaf working
+ // upwards in the inheritance hierarchy, whereas JavaObject
+ // starts with the top of the inheritance hierarchy and works down.
+ target -= fields.length;
+ JavaClass currClass = cl;
+ int index = 0;
+ for (int i = 0; i < fieldValues.length; i++, fieldNo++) {
+ while (fieldNo >= fields.length) {
+ currClass = currClass.getSuperclass();
+ fields = currClass.getFields();
+ fieldNo = 0;
+ target -= fields.length;
+ }
+ JavaField f = fields[fieldNo];
+ char sig = f.getSignature().charAt(0);
+ switch (sig) {
+ case 'L':
+ case '[': {
+ long id = objectIdAt(index, data);
+ index += idSize;
+ JavaObjectRef ref = new JavaObjectRef(id);
+ fieldValues[target+fieldNo] = ref.dereference(snapshot, f, verbose);
+ break;
+ }
+ case 'Z': {
+ byte value = byteAt(index, data);
+ index++;
+ fieldValues[target+fieldNo] = new JavaBoolean(value != 0);
+ break;
+ }
+ case 'B': {
+ byte value = byteAt(index, data);
+ index++;
+ fieldValues[target+fieldNo] = new JavaByte(value);
+ break;
+ }
+ case 'S': {
+ short value = shortAt(index, data);
+ index += 2;
+ fieldValues[target+fieldNo] = new JavaShort(value);
+ break;
+ }
+ case 'C': {
+ char value = charAt(index, data);
+ index += 2;
+ fieldValues[target+fieldNo] = new JavaChar(value);
+ break;
+ }
+ case 'I': {
+ int value = intAt(index, data);
+ index += 4;
+ fieldValues[target+fieldNo] = new JavaInt(value);
+ break;
+ }
+ case 'J': {
+ long value = longAt(index, data);
+ index += 8;
+ fieldValues[target+fieldNo] = new JavaLong(value);
+ break;
+ }
+ case 'F': {
+ float value = floatAt(index, data);
+ index += 4;
+ fieldValues[target+fieldNo] = new JavaFloat(value);
+ break;
+ }
+ case 'D': {
+ double value = doubleAt(index, data);
+ index += 8;
+ fieldValues[target+fieldNo] = new JavaDouble(value);
+ break;
+ }
+ default:
+ throw new RuntimeException("invalid signature: " + sig);
+ }
+ }
+ return fieldValues;
+ }
+
+ private void warn(String msg) {
+ System.out.println("WARNING: " + msg);
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaObjectArray.java b/test/lib/jdk/test/lib/hprof/model/JavaObjectArray.java
new file mode 100644
index 0000000..98ae116
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaObjectArray.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+import java.io.IOException;
+import jdk.test.lib.hprof.parser.ReadBuffer;
+
+/**
+ * @author Bill Foote
+ */
+public class JavaObjectArray extends JavaLazyReadObject {
+
+ private Object clazz; // Long before resolve, the class after resolve
+
+ public JavaObjectArray(long classID, long offset) {
+ super(offset);
+ this.clazz = makeId(classID);
+ }
+
+ public JavaClass getClazz() {
+ return (JavaClass) clazz;
+ }
+
+ public void resolve(Snapshot snapshot) {
+ if (clazz instanceof JavaClass) {
+ return;
+ }
+ long classID = getIdValue((Number)clazz);
+ if (snapshot.isNewStyleArrayClass()) {
+ // Modern heap dumps do this
+ JavaThing t = snapshot.findThing(classID);
+ if (t instanceof JavaClass) {
+ clazz = (JavaClass) t;
+ }
+ }
+ if (!(clazz instanceof JavaClass)) {
+ JavaThing t = snapshot.findThing(classID);
+ if (t != null && t instanceof JavaClass) {
+ JavaClass el = (JavaClass) t;
+ String nm = el.getName();
+ if (!nm.startsWith("[")) {
+ nm = "L" + el.getName() + ";";
+ }
+ clazz = snapshot.getArrayClass(nm);
+ }
+ }
+
+ if (!(clazz instanceof JavaClass)) {
+ clazz = snapshot.getOtherArrayType();
+ }
+ ((JavaClass)clazz).addInstance(this);
+ super.resolve(snapshot);
+ }
+
+ public JavaThing[] getValues() {
+ return getElements();
+ }
+
+ public JavaThing[] getElements() {
+ Snapshot snapshot = getClazz().getSnapshot();
+ byte[] data = getValue();
+ final int idSize = snapshot.getIdentifierSize();
+ final int numElements = data.length / idSize;
+ JavaThing[] elements = new JavaThing[numElements];
+ int index = 0;
+ for (int i = 0; i < elements.length; i++) {
+ long id = objectIdAt(index, data);
+ index += idSize;
+ elements[i] = snapshot.findThing(id);
+ }
+ return elements;
+ }
+
+ public int compareTo(JavaThing other) {
+ if (other instanceof JavaObjectArray) {
+ return 0;
+ }
+ return super.compareTo(other);
+ }
+
+ public int getLength() {
+ return getValueLength() / getClazz().getIdentifierSize();
+ }
+
+ public void visitReferencedObjects(JavaHeapObjectVisitor v) {
+ super.visitReferencedObjects(v);
+ JavaThing[] elements = getElements();
+ for (int i = 0; i < elements.length; i++) {
+ if (elements[i] != null && elements[i] instanceof JavaHeapObject) {
+ v.visit((JavaHeapObject) elements[i]);
+ }
+ }
+ }
+
+ /**
+ * Describe the reference that this thing has to target. This will only
+ * be called if target is in the array returned by getChildrenForRootset.
+ */
+ public String describeReferenceTo(JavaThing target, Snapshot ss) {
+ JavaThing[] elements = getElements();
+ for (int i = 0; i < elements.length; i++) {
+ if (elements[i] == target) {
+ return "Element " + i + " of " + this;
+ }
+ }
+ return super.describeReferenceTo(target, ss);
+ }
+
+ /*
+ * Java object array record (HPROF_GC_OBJ_ARRAY_DUMP)
+ * looks as below:
+ *
+ * object ID
+ * stack trace serial number (int)
+ * array length (int)
+ * array class ID
+ * array element IDs
+ */
+ protected final int readValueLength() throws IOException {
+ JavaClass cl = getClazz();
+ ReadBuffer buf = cl.getReadBuffer();
+ int idSize = cl.getIdentifierSize();
+ long offset = getOffset() + idSize + 4;
+ int len = buf.getInt(offset);
+ return len * cl.getIdentifierSize();
+ }
+
+ protected final byte[] readValue() throws IOException {
+ JavaClass cl = getClazz();
+ ReadBuffer buf = cl.getReadBuffer();
+ int idSize = cl.getIdentifierSize();
+ long offset = getOffset() + idSize + 4;
+ int len = buf.getInt(offset);
+ if (len == 0) {
+ return Snapshot.EMPTY_BYTE_ARRAY;
+ } else {
+ byte[] res = new byte[len * idSize];
+ buf.get(offset + 4 + idSize, res);
+ return res;
+ }
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaObjectRef.java b/test/lib/jdk/test/lib/hprof/model/JavaObjectRef.java
new file mode 100644
index 0000000..f0958f7
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaObjectRef.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+import jdk.test.lib.hprof.util.Misc;
+
+/**
+ * A forward reference to an object. This is an intermediate representation
+ * for a JavaThing, when we have the thing's ID, but we might not have read
+ * the thing yet.
+ *
+ * @author Bill Foote
+ */
+public class JavaObjectRef extends JavaThing {
+ private long id;
+
+ public JavaObjectRef(long id) {
+ this.id = id;
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public boolean isHeapAllocated() {
+ return true;
+ }
+
+ public JavaThing dereference(Snapshot snapshot, JavaField field) {
+ return dereference(snapshot, field, true);
+ }
+
+ public JavaThing dereference(Snapshot snapshot, JavaField field, boolean verbose) {
+ if (field != null && !field.hasId()) {
+ // If this happens, we must be a field that represents an int.
+ // (This only happens with .bod-style files)
+ return new JavaLong(id);
+ }
+ if (id == 0) {
+ return snapshot.getNullThing();
+ }
+ JavaThing result = snapshot.findThing(id);
+ if (result == null) {
+ if (!snapshot.getUnresolvedObjectsOK() && verbose) {
+ String msg = "WARNING: Failed to resolve object id "
+ + Misc.toHex(id);
+ if (field != null) {
+ msg += " for field " + field.getName()
+ + " (signature " + field.getSignature() + ")";
+ }
+ System.out.println(msg);
+ // Thread.dumpStack();
+ }
+ result = new HackJavaValue("Unresolved object "
+ + Misc.toHex(id), 0);
+ }
+ return result;
+ }
+
+ public int getSize() {
+ return 0;
+ }
+
+ public String toString() {
+ return "Unresolved object " + Misc.toHex(id);
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaShort.java b/test/lib/jdk/test/lib/hprof/model/JavaShort.java
new file mode 100644
index 0000000..7c4e46a
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaShort.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ * Represents a short (i.e. a short field in an instance).
+ *
+ * @author Bill Foote
+ */
+
+
+public class JavaShort extends JavaValue {
+
+ short value;
+
+ public JavaShort(short value) {
+ this.value = value;
+ }
+
+ public String toString() {
+ return "" + value;
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaStatic.java b/test/lib/jdk/test/lib/hprof/model/JavaStatic.java
new file mode 100644
index 0000000..79a5b0d
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaStatic.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ *
+ * @author Bill Foote
+ */
+
+/**
+ * Represents the value of a static field of a JavaClass
+ */
+
+public class JavaStatic {
+
+ private JavaField field;
+ private JavaThing value;
+
+ public JavaStatic(JavaField field, JavaThing value) {
+ this.field = field;
+ this.value = value;
+ }
+
+ public void resolve(JavaClass clazz, Snapshot snapshot) {
+ long id = -1;
+ if (value instanceof JavaObjectRef) {
+ id = ((JavaObjectRef)value).getId();
+ }
+ value = value.dereference(snapshot, field);
+ if (value.isHeapAllocated() &&
+ clazz.getLoader() == snapshot.getNullThing()) {
+ // static fields are only roots if they are in classes
+ // loaded by the root classloader.
+ JavaHeapObject ho = (JavaHeapObject) value;
+ String s = "Static reference from " + clazz.getName()
+ + "." + field.getName();
+ snapshot.addRoot(new Root(id, clazz.getId(),
+ Root.JAVA_STATIC, s));
+ }
+ }
+
+ public JavaField getField() {
+ return field;
+ }
+
+ public JavaThing getValue() {
+ return value;
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaThing.java b/test/lib/jdk/test/lib/hprof/model/JavaThing.java
new file mode 100644
index 0000000..2a663ab
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaThing.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+
+
+/**
+ *
+ * @author Bill Foote
+ */
+
+
+/**
+ * Represents a java "Thing". A thing is anything that can be the value of
+ * a field. This includes JavaHeapObject, JavaObjectRef, and JavaValue.
+ */
+
+public abstract class JavaThing {
+
+ protected JavaThing() {
+ }
+
+ /**
+ * If this is a forward reference, figure out what it really
+ * refers to.
+ *
+ * @param snapshot The snapshot this is for
+ * @param field The field this thing represents. If null, it is
+ * assumed this thing is an object (and never a value).
+ */
+ public JavaThing dereference(Snapshot shapshot, JavaField field) {
+ return this;
+ }
+
+
+ /**
+ * Are we the same type as other?
+ *
+ * @see JavaObject.isSameTypeAs()
+ */
+ public boolean isSameTypeAs(JavaThing other) {
+ return getClass() == other.getClass();
+ }
+ /**
+ * @return true iff this represents a heap-allocated object
+ */
+ abstract public boolean isHeapAllocated();
+
+ /**
+ * @return the size of this object, in bytes, including VM overhead
+ */
+ abstract public int getSize();
+
+ /**
+ * @return a human-readable string representation of this thing
+ */
+ abstract public String toString();
+
+ /**
+ * Compare our string representation to other's
+ * @see java.lang.String.compareTo()
+ */
+ public int compareTo(JavaThing other) {
+ return toString().compareTo(other.toString());
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaValue.java b/test/lib/jdk/test/lib/hprof/model/JavaValue.java
new file mode 100644
index 0000000..e7cad68
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaValue.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ * Abstract base class for all value types (ints, longs, floats, etc.)
+ *
+ * @author Bill Foote
+ */
+
+
+
+
+public abstract class JavaValue extends JavaThing {
+
+ protected JavaValue() {
+ }
+
+ public boolean isHeapAllocated() {
+ return false;
+ }
+
+ abstract public String toString();
+
+ public int getSize() {
+ // The size of a value is already accounted for in the class
+ // that has the data member.
+ return 0;
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/JavaValueArray.java b/test/lib/jdk/test/lib/hprof/model/JavaValueArray.java
new file mode 100644
index 0000000..d65780d
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/JavaValueArray.java
@@ -0,0 +1,433 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+import jdk.test.lib.hprof.parser.ReadBuffer;
+import java.io.IOException;
+
+/**
+ * An array of values, that is, an array of ints, boolean, floats or the like.
+ *
+ * @author Bill Foote
+ */
+public class JavaValueArray extends JavaLazyReadObject
+ /*imports*/ implements ArrayTypeCodes {
+
+ private static String arrayTypeName(byte sig) {
+ switch (sig) {
+ case 'B':
+ return "byte[]";
+ case 'Z':
+ return "boolean[]";
+ case 'C':
+ return "char[]";
+ case 'S':
+ return "short[]";
+ case 'I':
+ return "int[]";
+ case 'F':
+ return "float[]";
+ case 'J':
+ return "long[]";
+ case 'D':
+ return "double[]";
+ default:
+ throw new RuntimeException("invalid array element sig: " + sig);
+ }
+ }
+
+ private static int elementSize(byte type) {
+ switch (type) {
+ case T_BYTE:
+ case T_BOOLEAN:
+ return 1;
+ case T_CHAR:
+ case T_SHORT:
+ return 2;
+ case T_INT:
+ case T_FLOAT:
+ return 4;
+ case T_LONG:
+ case T_DOUBLE:
+ return 8;
+ default:
+ throw new RuntimeException("invalid array element type: " + type);
+ }
+ }
+
+ /*
+ * Java primitive array record (HPROF_GC_PRIM_ARRAY_DUMP) looks
+ * as below:
+ *
+ * object ID
+ * stack trace serial number (int)
+ * length of the instance data (int)
+ * element type (byte)
+ * array data
+ */
+ protected final int readValueLength() throws IOException {
+ JavaClass cl = getClazz();
+ ReadBuffer buf = cl.getReadBuffer();
+ int idSize = cl.getIdentifierSize();
+ long offset = getOffset() + idSize + 4;
+ // length of the array
+ int len = buf.getInt(offset);
+ // typecode of array element type
+ byte type = buf.getByte(offset + 4);
+ return len * elementSize(type);
+ }
+
+ protected final byte[] readValue() throws IOException {
+ JavaClass cl = getClazz();
+ ReadBuffer buf = cl.getReadBuffer();
+ int idSize = cl.getIdentifierSize();
+ long offset = getOffset() + idSize + 4;
+ // length of the array
+ int length = buf.getInt(offset);
+ // typecode of array element type
+ byte type = buf.getByte(offset + 4);
+ if (length == 0) {
+ return Snapshot.EMPTY_BYTE_ARRAY;
+ } else {
+ length *= elementSize(type);
+ byte[] res = new byte[length];
+ buf.get(offset + 5, res);
+ return res;
+ }
+ }
+
+ // JavaClass set only after resolve.
+ private JavaClass clazz;
+
+ // This field contains elementSignature byte and
+ // divider to be used to calculate length. Note that
+ // length of content byte[] is not same as array length.
+ // Actual array length is (byte[].length / divider)
+ private int data;
+
+ // First 8 bits of data is used for element signature
+ private static final int SIGNATURE_MASK = 0x0FF;
+
+ // Next 8 bits of data is used for length divider
+ private static final int LENGTH_DIVIDER_MASK = 0x0FF00;
+
+ // Number of bits to shift to get length divider
+ private static final int LENGTH_DIVIDER_SHIFT = 8;
+
+ public JavaValueArray(byte elementSignature, long offset) {
+ super(offset);
+ this.data = (elementSignature & SIGNATURE_MASK);
+ }
+
+ public JavaClass getClazz() {
+ return clazz;
+ }
+
+ public void visitReferencedObjects(JavaHeapObjectVisitor v) {
+ super.visitReferencedObjects(v);
+ }
+
+ public void resolve(Snapshot snapshot) {
+ if (clazz instanceof JavaClass) {
+ return;
+ }
+ byte elementSig = getElementType();
+ clazz = snapshot.findClass(arrayTypeName(elementSig));
+ if (clazz == null) {
+ clazz = snapshot.getArrayClass("" + ((char) elementSig));
+ }
+ getClazz().addInstance(this);
+ super.resolve(snapshot);
+ }
+
+ public int getLength() {
+ int divider = (data & LENGTH_DIVIDER_MASK) >>> LENGTH_DIVIDER_SHIFT;
+ if (divider == 0) {
+ byte elementSignature = getElementType();
+ switch (elementSignature) {
+ case 'B':
+ case 'Z':
+ divider = 1;
+ break;
+ case 'C':
+ case 'S':
+ divider = 2;
+ break;
+ case 'I':
+ case 'F':
+ divider = 4;
+ break;
+ case 'J':
+ case 'D':
+ divider = 8;
+ break;
+ default:
+ throw new RuntimeException("unknown primitive type: " +
+ elementSignature);
+ }
+ data |= (divider << LENGTH_DIVIDER_SHIFT);
+ }
+ return (getValueLength() / divider);
+ }
+
+ public Object getElements() {
+ final int len = getLength();
+ final byte et = getElementType();
+ byte[] data = getValue();
+ int index = 0;
+ switch (et) {
+ case 'Z': {
+ boolean[] res = new boolean[len];
+ for (int i = 0; i < len; i++) {
+ res[i] = booleanAt(index, data);
+ index++;
+ }
+ return res;
+ }
+ case 'B': {
+ byte[] res = new byte[len];
+ for (int i = 0; i < len; i++) {
+ res[i] = byteAt(index, data);
+ index++;
+ }
+ return res;
+ }
+ case 'C': {
+ char[] res = new char[len];
+ for (int i = 0; i < len; i++) {
+ res[i] = charAt(index, data);
+ index += 2;
+ }
+ return res;
+ }
+ case 'S': {
+ short[] res = new short[len];
+ for (int i = 0; i < len; i++) {
+ res[i] = shortAt(index, data);
+ index += 2;
+ }
+ return res;
+ }
+ case 'I': {
+ int[] res = new int[len];
+ for (int i = 0; i < len; i++) {
+ res[i] = intAt(index, data);
+ index += 4;
+ }
+ return res;
+ }
+ case 'J': {
+ long[] res = new long[len];
+ for (int i = 0; i < len; i++) {
+ res[i] = longAt(index, data);
+ index += 8;
+ }
+ return res;
+ }
+ case 'F': {
+ float[] res = new float[len];
+ for (int i = 0; i < len; i++) {
+ res[i] = floatAt(index, data);
+ index += 4;
+ }
+ return res;
+ }
+ case 'D': {
+ double[] res = new double[len];
+ for (int i = 0; i < len; i++) {
+ res[i] = doubleAt(index, data);
+ index += 8;
+ }
+ return res;
+ }
+ default: {
+ throw new RuntimeException("unknown primitive type?");
+ }
+ }
+ }
+
+ public byte getElementType() {
+ return (byte) (data & SIGNATURE_MASK);
+ }
+
+ private void checkIndex(int index) {
+ if (index < 0 || index >= getLength()) {
+ throw new ArrayIndexOutOfBoundsException(index);
+ }
+ }
+
+ private void requireType(char type) {
+ if (getElementType() != type) {
+ throw new RuntimeException("not of type : " + type);
+ }
+ }
+
+ public boolean getBooleanAt(int index) {
+ checkIndex(index);
+ requireType('Z');
+ return booleanAt(index, getValue());
+ }
+
+ public byte getByteAt(int index) {
+ checkIndex(index);
+ requireType('B');
+ return byteAt(index, getValue());
+ }
+
+ public char getCharAt(int index) {
+ checkIndex(index);
+ requireType('C');
+ return charAt(index << 1, getValue());
+ }
+
+ public short getShortAt(int index) {
+ checkIndex(index);
+ requireType('S');
+ return shortAt(index << 1, getValue());
+ }
+
+ public int getIntAt(int index) {
+ checkIndex(index);
+ requireType('I');
+ return intAt(index << 2, getValue());
+ }
+
+ public long getLongAt(int index) {
+ checkIndex(index);
+ requireType('J');
+ return longAt(index << 3, getValue());
+ }
+
+ public float getFloatAt(int index) {
+ checkIndex(index);
+ requireType('F');
+ return floatAt(index << 2, getValue());
+ }
+
+ public double getDoubleAt(int index) {
+ checkIndex(index);
+ requireType('D');
+ return doubleAt(index << 3, getValue());
+ }
+
+ public String valueString() {
+ return valueString(true);
+ }
+
+ public String valueString(boolean bigLimit) {
+ // Char arrays deserve special treatment
+ StringBuilder result;
+ byte[] value = getValue();
+ int max = value.length;
+ byte elementSignature = getElementType();
+ if (elementSignature == 'C') {
+ result = new StringBuilder();
+ for (int i = 0; i < value.length; ) {
+ char val = charAt(i, value);
+ result.append(val);
+ i += 2;
+ }
+ } else {
+ int limit = 8;
+ if (bigLimit) {
+ limit = 1000;
+ }
+ result = new StringBuilder("{");
+ int num = 0;
+ for (int i = 0; i < value.length; ) {
+ if (num > 0) {
+ result.append(", ");
+ }
+ if (num >= limit) {
+ result.append("... ");
+ break;
+ }
+ num++;
+ switch (elementSignature) {
+ case 'Z': {
+ boolean val = booleanAt(i, value);
+ if (val) {
+ result.append("true");
+ } else {
+ result.append("false");
+ }
+ i++;
+ break;
+ }
+ case 'B': {
+ int val = 0xFF & byteAt(i, value);
+ result.append("0x").append(Integer.toString(val, 16));
+ i++;
+ break;
+ }
+ case 'S': {
+ short val = shortAt(i, value);
+ i += 2;
+ result.append(val);
+ break;
+ }
+ case 'I': {
+ int val = intAt(i, value);
+ i += 4;
+ result.append(val);
+ break;
+ }
+ case 'J': { // long
+ long val = longAt(i, value);
+ result.append(val);
+ i += 8;
+ break;
+ }
+ case 'F': {
+ float val = floatAt(i, value);
+ result.append(val);
+ i += 4;
+ break;
+ }
+ case 'D': { // double
+ double val = doubleAt(i, value);
+ result.append(val);
+ i += 8;
+ break;
+ }
+ default: {
+ throw new RuntimeException("unknown primitive type?");
+ }
+ }
+ }
+ result.append('}');
+ }
+ return result.toString();
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/ReachableExcludes.java b/test/lib/jdk/test/lib/hprof/model/ReachableExcludes.java
new file mode 100644
index 0000000..b951832
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/ReachableExcludes.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+
+/**
+ * This represents a set of data members that should be excluded from the
+ * reachable objects query. This is useful to exclude observers from the
+ * transitive closure of objects reachable from a given object, allowing
+ * some kind of real determination of the "size" of that object.
+ *
+ */
+
+public interface ReachableExcludes {
+ /**
+ * @return true iff the given field is on the hitlist of excluded
+ * fields.
+ */
+ public boolean isExcluded(String fieldName);
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/ReachableExcludesImpl.java b/test/lib/jdk/test/lib/hprof/model/ReachableExcludesImpl.java
new file mode 100644
index 0000000..5038f71
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/ReachableExcludesImpl.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.BufferedReader;
+import java.io.IOException;
+
+import java.util.Hashtable;
+
+/**
+ * This represents a set of data members that should be excluded from the
+ * reachable objects query.
+ * This is useful to exclude observers from the
+ * transitive closure of objects reachable from a given object, allowing
+ * some kind of real determination of the "size" of that object.
+ *
+ * @author Bill Foote
+ */
+public class ReachableExcludesImpl implements ReachableExcludes {
+
+ private File excludesFile;
+ private long lastModified;
+ private Hashtable<String, String> methods; // Used as a bag
+
+ /**
+ * Create a new ReachableExcludesImpl over the given file. The file will be
+ * re-read whenever the timestamp changes.
+ */
+ public ReachableExcludesImpl(File excludesFile) {
+ this.excludesFile = excludesFile;
+ readFile();
+ }
+
+ private void readFileIfNeeded() {
+ if (excludesFile.lastModified() != lastModified) {
+ synchronized(this) {
+ if (excludesFile.lastModified() != lastModified) {
+ readFile();
+ }
+ }
+ }
+ }
+
+ private void readFile() {
+ long lm = excludesFile.lastModified();
+ Hashtable<String, String> m = new Hashtable<String, String>();
+
+ try (BufferedReader r = new BufferedReader(new InputStreamReader(
+ new FileInputStream(excludesFile)))) {
+ String method;
+ while ((method = r.readLine()) != null) {
+ m.put(method, method);
+ }
+ lastModified = lm;
+ methods = m; // We want this to be atomic
+ } catch (IOException ex) {
+ System.out.println("Error reading " + excludesFile + ": " + ex);
+ }
+ }
+
+ /**
+ * @return true iff the given field is on the histlist of excluded
+ * fields.
+ */
+ public boolean isExcluded(String fieldName) {
+ readFileIfNeeded();
+ return methods.get(fieldName) != null;
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/ReachableObjects.java b/test/lib/jdk/test/lib/hprof/model/ReachableObjects.java
new file mode 100644
index 0000000..c3fcd75
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/ReachableObjects.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+import java.util.Vector;
+import java.util.Hashtable;
+import java.util.Enumeration;
+
+import jdk.test.lib.hprof.util.ArraySorter;
+import jdk.test.lib.hprof.util.Comparer;
+
+/**
+ * @author A. Sundararajan
+ */
+
+public class ReachableObjects {
+ public ReachableObjects(JavaHeapObject root,
+ final ReachableExcludes excludes) {
+ this.root = root;
+
+ final Hashtable<JavaHeapObject, JavaHeapObject> bag = new Hashtable<JavaHeapObject, JavaHeapObject>();
+ final Hashtable<String, String> fieldsExcluded = new Hashtable<String, String>(); //Bag<String>
+ final Hashtable<String, String> fieldsUsed = new Hashtable<String, String>(); // Bag<String>
+ JavaHeapObjectVisitor visitor = new AbstractJavaHeapObjectVisitor() {
+ public void visit(JavaHeapObject t) {
+ // Size is zero for things like integer fields
+ if (t != null && t.getSize() > 0 && bag.get(t) == null) {
+ bag.put(t, t);
+ t.visitReferencedObjects(this);
+ }
+ }
+
+ public boolean mightExclude() {
+ return excludes != null;
+ }
+
+ public boolean exclude(JavaClass clazz, JavaField f) {
+ if (excludes == null) {
+ return false;
+ }
+ String nm = clazz.getName() + "." + f.getName();
+ if (excludes.isExcluded(nm)) {
+ fieldsExcluded.put(nm, nm);
+ return true;
+ } else {
+ fieldsUsed.put(nm, nm);
+ return false;
+ }
+ }
+ };
+ // Put the closure of root and all objects reachable from root into
+ // bag (depth first), but don't include root:
+ visitor.visit(root);
+ bag.remove(root);
+
+ // Now grab the elements into a vector, and sort it in decreasing size
+ JavaThing[] things = new JavaThing[bag.size()];
+ int i = 0;
+ for (Enumeration<JavaHeapObject> e = bag.elements(); e.hasMoreElements(); ) {
+ things[i++] = (JavaThing) e.nextElement();
+ }
+ ArraySorter.sort(things, new Comparer() {
+ public int compare(Object lhs, Object rhs) {
+ JavaThing left = (JavaThing) lhs;
+ JavaThing right = (JavaThing) rhs;
+ int diff = right.getSize() - left.getSize();
+ if (diff != 0) {
+ return diff;
+ }
+ return left.compareTo(right);
+ }
+ });
+ this.reachables = things;
+
+ this.totalSize = root.getSize();
+ for (i = 0; i < things.length; i++) {
+ this.totalSize += things[i].getSize();
+ }
+
+ excludedFields = getElements(fieldsExcluded);
+ usedFields = getElements(fieldsUsed);
+ }
+
+ public JavaHeapObject getRoot() {
+ return root;
+ }
+
+ public JavaThing[] getReachables() {
+ return reachables;
+ }
+
+ public long getTotalSize() {
+ return totalSize;
+ }
+
+ public String[] getExcludedFields() {
+ return excludedFields;
+ }
+
+ public String[] getUsedFields() {
+ return usedFields;
+ }
+
+ private String[] getElements(Hashtable<?, ?> ht) {
+ Object[] keys = ht.keySet().toArray();
+ int len = keys.length;
+ String[] res = new String[len];
+ System.arraycopy(keys, 0, res, 0, len);
+ ArraySorter.sortArrayOfStrings(res);
+ return res;
+ }
+
+ private JavaHeapObject root;
+ private JavaThing[] reachables;
+ private String[] excludedFields;
+ private String[] usedFields;
+ private long totalSize;
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/ReferenceChain.java b/test/lib/jdk/test/lib/hprof/model/ReferenceChain.java
new file mode 100644
index 0000000..3b21751
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/ReferenceChain.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ * Represents a chain of references to some target object
+ *
+ * @author Bill Foote
+ */
+
+public class ReferenceChain {
+
+ JavaHeapObject obj; // Object referred to
+ ReferenceChain next; // Next in chain
+
+ public ReferenceChain(JavaHeapObject obj, ReferenceChain next) {
+ this.obj = obj;
+ this.next = next;
+ }
+
+ public JavaHeapObject getObj() {
+ return obj;
+ }
+
+ public ReferenceChain getNext() {
+ return next;
+ }
+
+ public int getDepth() {
+ int count = 1;
+ ReferenceChain tmp = next;
+ while (tmp != null) {
+ count++;
+ tmp = tmp.next;
+ }
+ return count;
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/Root.java b/test/lib/jdk/test/lib/hprof/model/Root.java
new file mode 100644
index 0000000..ae7c08b
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/Root.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+import jdk.test.lib.hprof.util.Misc;
+
+/**
+ *
+ * @author Bill Foote
+ */
+
+
+/**
+ * Represents a member of the rootset, that is, one of the objects that
+ * the GC starts from when marking reachable objects.
+ */
+
+public class Root {
+
+ private long id; // ID of the JavaThing we refer to
+ private long refererId; // Thread or Class responsible for this, or 0
+ private int index = -1; // Index in Snapshot.roots
+ private int type;
+ private String description;
+ private JavaHeapObject referer = null;
+ private StackTrace stackTrace = null;
+
+ // Values for type. Higher values are more interesting -- see getType().
+ // See also getTypeName()
+ public final static int INVALID_TYPE = 0;
+ public final static int UNKNOWN = 1;
+ public final static int SYSTEM_CLASS = 2;
+
+ public final static int NATIVE_LOCAL = 3;
+ public final static int NATIVE_STATIC = 4;
+ public final static int THREAD_BLOCK = 5;
+ public final static int BUSY_MONITOR = 6;
+ public final static int JAVA_LOCAL = 7;
+ public final static int NATIVE_STACK = 8;
+ public final static int JAVA_STATIC = 9;
+
+
+ public Root(long id, long refererId, int type, String description) {
+ this(id, refererId, type, description, null);
+ }
+
+
+ public Root(long id, long refererId, int type, String description,
+ StackTrace stackTrace) {
+ this.id = id;
+ this.refererId = refererId;
+ this.type = type;
+ this.description = description;
+ this.stackTrace = stackTrace;
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public String getIdString() {
+ return Misc.toHex(id);
+ }
+
+ public String getDescription() {
+ if ("".equals(description)) {
+ return getTypeName() + " Reference";
+ } else {
+ return description;
+ }
+ }
+
+ /**
+ * Return type. We guarantee that more interesting roots will have
+ * a type that is numerically higher.
+ */
+ public int getType() {
+ return type;
+ }
+
+ public String getTypeName() {
+ switch(type) {
+ case INVALID_TYPE: return "Invalid (?!?)";
+ case UNKNOWN: return "Unknown";
+ case SYSTEM_CLASS: return "System Class";
+ case NATIVE_LOCAL: return "JNI Local";
+ case NATIVE_STATIC: return "JNI Global";
+ case THREAD_BLOCK: return "Thread Block";
+ case BUSY_MONITOR: return "Busy Monitor";
+ case JAVA_LOCAL: return "Java Local";
+ case NATIVE_STACK: return "Native Stack (possibly Java local)";
+ case JAVA_STATIC: return "Java Static";
+ default: return "??";
+ }
+ }
+
+ /**
+ * Given two Root instances, return the one that is most interesting.
+ */
+ public Root mostInteresting(Root other) {
+ if (other.type > this.type) {
+ return other;
+ } else {
+ return this;
+ }
+ }
+
+ /**
+ * Get the object that's responsible for this root, if there is one.
+ * This will be null, a Thread object, or a Class object.
+ */
+ public JavaHeapObject getReferer() {
+ return referer;
+ }
+
+ /**
+ * @return the stack trace responsible for this root, or null if there
+ * is none.
+ */
+ public StackTrace getStackTrace() {
+ return stackTrace;
+ }
+
+ /**
+ * @return The index of this root in Snapshot.roots
+ */
+ public int getIndex() {
+ return index;
+ }
+
+ void resolve(Snapshot ss) {
+ if (refererId != 0) {
+ referer = ss.findThing(refererId);
+ }
+ if (stackTrace != null) {
+ stackTrace.resolve(ss);
+ }
+ }
+
+ void setIndex(int i) {
+ index = i;
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/Snapshot.java b/test/lib/jdk/test/lib/hprof/model/Snapshot.java
new file mode 100644
index 0000000..fcef29a
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/Snapshot.java
@@ -0,0 +1,635 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+import java.lang.ref.SoftReference;
+import java.util.*;
+
+import jdk.test.lib.hprof.parser.ReadBuffer;
+import jdk.test.lib.hprof.util.Misc;
+
+/**
+ *
+ * @author Bill Foote
+ */
+
+/**
+ * Represents a snapshot of the Java objects in the VM at one instant.
+ * This is the top-level "model" object read out of a single .hprof or .bod
+ * file.
+ */
+
+public class Snapshot implements AutoCloseable {
+
+ public static final long SMALL_ID_MASK = 0x0FFFFFFFFL;
+ public static final byte[] EMPTY_BYTE_ARRAY = new byte[0];
+
+ private static final JavaField[] EMPTY_FIELD_ARRAY = new JavaField[0];
+ private static final JavaStatic[] EMPTY_STATIC_ARRAY = new JavaStatic[0];
+
+ // all heap objects
+ private Hashtable<Number, JavaHeapObject> heapObjects =
+ new Hashtable<Number, JavaHeapObject>();
+
+ private Hashtable<Number, JavaClass> fakeClasses =
+ new Hashtable<Number, JavaClass>();
+
+ // all Roots in this Snapshot
+ private Vector<Root> roots = new Vector<Root>();
+
+ // name-to-class map
+ private Map<String, JavaClass> classes =
+ new TreeMap<String, JavaClass>();
+
+ // new objects relative to a baseline - lazily initialized
+ private volatile Map<JavaHeapObject, Boolean> newObjects;
+
+ // allocation site traces for all objects - lazily initialized
+ private volatile Map<JavaHeapObject, StackTrace> siteTraces;
+
+ // object-to-Root map for all objects
+ private Map<JavaHeapObject, Root> rootsMap =
+ new HashMap<JavaHeapObject, Root>();
+
+ // soft cache of finalizeable objects - lazily initialized
+ private SoftReference<Vector<?>> finalizablesCache;
+
+ // represents null reference
+ private JavaThing nullThing;
+
+ // java.lang.ref.Reference class
+ private JavaClass weakReferenceClass;
+ // index of 'referent' field in java.lang.ref.Reference class
+ private int referentFieldIndex;
+
+ // java.lang.Class class
+ private JavaClass javaLangClass;
+ // java.lang.String class
+ private JavaClass javaLangString;
+ // java.lang.ClassLoader class
+ private JavaClass javaLangClassLoader;
+
+ // unknown "other" array class
+ private volatile JavaClass otherArrayType;
+ // Stuff to exclude from reachable query
+ private ReachableExcludes reachableExcludes;
+ // the underlying heap dump buffer
+ private ReadBuffer readBuf;
+
+ // True iff some heap objects have isNew set
+ private boolean hasNewSet;
+ private boolean unresolvedObjectsOK;
+
+ // whether object array instances have new style class or
+ // old style (element) class.
+ private boolean newStyleArrayClass;
+
+ // object id size in the heap dump
+ private int identifierSize = 4;
+
+ // minimum object size - accounts for object header in
+ // most Java virtual machines - we assume 2 identifierSize
+ // (which is true for Sun's hotspot JVM).
+ private int minimumObjectSize;
+
+ public Snapshot(ReadBuffer buf) {
+ nullThing = new HackJavaValue("<null>", 0);
+ readBuf = buf;
+ }
+
+ public void setSiteTrace(JavaHeapObject obj, StackTrace trace) {
+ if (trace != null && trace.getFrames().length != 0) {
+ initSiteTraces();
+ siteTraces.put(obj, trace);
+ }
+ }
+
+ public StackTrace getSiteTrace(JavaHeapObject obj) {
+ if (siteTraces != null) {
+ return siteTraces.get(obj);
+ } else {
+ return null;
+ }
+ }
+
+ public void setNewStyleArrayClass(boolean value) {
+ newStyleArrayClass = value;
+ }
+
+ public boolean isNewStyleArrayClass() {
+ return newStyleArrayClass;
+ }
+
+ public void setIdentifierSize(int size) {
+ identifierSize = size;
+ minimumObjectSize = 2 * size;
+ }
+
+ public int getIdentifierSize() {
+ return identifierSize;
+ }
+
+ public int getMinimumObjectSize() {
+ return minimumObjectSize;
+ }
+
+ public void addHeapObject(long id, JavaHeapObject ho) {
+ heapObjects.put(makeId(id), ho);
+ }
+
+ public void addRoot(Root r) {
+ r.setIndex(roots.size());
+ roots.addElement(r);
+ }
+
+ public void addClass(long id, JavaClass c) {
+ addHeapObject(id, c);
+ putInClassesMap(c);
+ }
+
+ JavaClass addFakeInstanceClass(long classID, int instSize) {
+ // Create a fake class name based on ID.
+ String name = "unknown-class<@" + Misc.toHex(classID) + ">";
+
+ // Create fake fields convering the given instance size.
+ // Create as many as int type fields and for the left over
+ // size create byte type fields.
+ int numInts = instSize / 4;
+ int numBytes = instSize % 4;
+ JavaField[] fields = new JavaField[numInts + numBytes];
+ int i;
+ for (i = 0; i < numInts; i++) {
+ fields[i] = new JavaField("unknown-field-" + i, "I");
+ }
+ for (i = 0; i < numBytes; i++) {
+ fields[i + numInts] = new JavaField("unknown-field-" +
+ i + numInts, "B");
+ }
+
+ // Create fake instance class
+ JavaClass c = new JavaClass(name, 0, 0, 0, 0, fields,
+ EMPTY_STATIC_ARRAY, instSize);
+ // Add the class
+ addFakeClass(makeId(classID), c);
+ return c;
+ }
+
+
+ /**
+ * @return true iff it's possible that some JavaThing instances might
+ * isNew set
+ *
+ * @see JavaThing.isNew()
+ */
+ public boolean getHasNewSet() {
+ return hasNewSet;
+ }
+
+ //
+ // Used in the body of resolve()
+ //
+ private static class MyVisitor extends AbstractJavaHeapObjectVisitor {
+ JavaHeapObject t;
+ public void visit(JavaHeapObject other) {
+ other.addReferenceFrom(t);
+ }
+ }
+
+ // To show heap parsing progress, we print a '.' after this limit
+ private static final int DOT_LIMIT = 5000;
+
+ /**
+ * Called after reading complete, to initialize the structure
+ */
+ public void resolve(boolean calculateRefs) {
+ System.out.println("Resolving " + heapObjects.size() + " objects...");
+
+ // First, resolve the classes. All classes must be resolved before
+ // we try any objects, because the objects use classes in their
+ // resolution.
+ javaLangClass = findClass("java.lang.Class");
+ if (javaLangClass == null) {
+ System.out.println("WARNING: hprof file does not include java.lang.Class!");
+ javaLangClass = new JavaClass("java.lang.Class", 0, 0, 0, 0,
+ EMPTY_FIELD_ARRAY, EMPTY_STATIC_ARRAY, 0);
+ addFakeClass(javaLangClass);
+ }
+ javaLangString = findClass("java.lang.String");
+ if (javaLangString == null) {
+ System.out.println("WARNING: hprof file does not include java.lang.String!");
+ javaLangString = new JavaClass("java.lang.String", 0, 0, 0, 0,
+ EMPTY_FIELD_ARRAY, EMPTY_STATIC_ARRAY, 0);
+ addFakeClass(javaLangString);
+ }
+ javaLangClassLoader = findClass("java.lang.ClassLoader");
+ if (javaLangClassLoader == null) {
+ System.out.println("WARNING: hprof file does not include java.lang.ClassLoader!");
+ javaLangClassLoader = new JavaClass("java.lang.ClassLoader", 0, 0, 0, 0,
+ EMPTY_FIELD_ARRAY, EMPTY_STATIC_ARRAY, 0);
+ addFakeClass(javaLangClassLoader);
+ }
+
+ for (JavaHeapObject t : heapObjects.values()) {
+ if (t instanceof JavaClass) {
+ t.resolve(this);
+ }
+ }
+
+ // Now, resolve everything else.
+ for (JavaHeapObject t : heapObjects.values()) {
+ if (!(t instanceof JavaClass)) {
+ t.resolve(this);
+ }
+ }
+
+ heapObjects.putAll(fakeClasses);
+ fakeClasses.clear();
+
+ weakReferenceClass = findClass("java.lang.ref.Reference");
+ referentFieldIndex = 0;
+ if (weakReferenceClass != null) {
+ JavaField[] fields = weakReferenceClass.getFieldsForInstance();
+ for (int i = 0; i < fields.length; i++) {
+ if ("referent".equals(fields[i].getName())) {
+ referentFieldIndex = i;
+ break;
+ }
+ }
+ }
+
+ if (calculateRefs) {
+ calculateReferencesToObjects();
+ System.out.print("Eliminating duplicate references");
+ System.out.flush();
+ // This println refers to the *next* step
+ }
+ int count = 0;
+ for (JavaHeapObject t : heapObjects.values()) {
+ t.setupReferers();
+ ++count;
+ if (calculateRefs && count % DOT_LIMIT == 0) {
+ System.out.print(".");
+ System.out.flush();
+ }
+ }
+ if (calculateRefs) {
+ System.out.println("");
+ }
+
+ // to ensure that Iterator.remove() on getClasses()
+ // result will throw exception..
+ classes = Collections.unmodifiableMap(classes);
+ }
+
+ private void calculateReferencesToObjects() {
+ System.out.print("Chasing references, expect "
+ + (heapObjects.size() / DOT_LIMIT) + " dots");
+ System.out.flush();
+ int count = 0;
+ MyVisitor visitor = new MyVisitor();
+ for (JavaHeapObject t : heapObjects.values()) {
+ visitor.t = t;
+ // call addReferenceFrom(t) on all objects t references:
+ t.visitReferencedObjects(visitor);
+ ++count;
+ if (count % DOT_LIMIT == 0) {
+ System.out.print(".");
+ System.out.flush();
+ }
+ }
+ System.out.println();
+ for (Root r : roots) {
+ r.resolve(this);
+ JavaHeapObject t = findThing(r.getId());
+ if (t != null) {
+ t.addReferenceFromRoot(r);
+ }
+ }
+ }
+
+ public void markNewRelativeTo(Snapshot baseline) {
+ hasNewSet = true;
+ for (JavaHeapObject t : heapObjects.values()) {
+ boolean isNew;
+ long thingID = t.getId();
+ if (thingID == 0L || thingID == -1L) {
+ isNew = false;
+ } else {
+ JavaThing other = baseline.findThing(t.getId());
+ if (other == null) {
+ isNew = true;
+ } else {
+ isNew = !t.isSameTypeAs(other);
+ }
+ }
+ t.setNew(isNew);
+ }
+ }
+
+ public Enumeration<JavaHeapObject> getThings() {
+ return heapObjects.elements();
+ }
+
+
+ public JavaHeapObject findThing(long id) {
+ Number idObj = makeId(id);
+ JavaHeapObject jho = heapObjects.get(idObj);
+ return jho != null? jho : fakeClasses.get(idObj);
+ }
+
+ public JavaHeapObject findThing(String id) {
+ return findThing(Misc.parseHex(id));
+ }
+
+ public JavaClass findClass(String name) {
+ if (name.startsWith("0x")) {
+ return (JavaClass) findThing(name);
+ } else {
+ return classes.get(name);
+ }
+ }
+
+ /**
+ * Return an Iterator of all of the classes in this snapshot.
+ **/
+ public Iterator<JavaClass> getClasses() {
+ // note that because classes is a TreeMap
+ // classes are already sorted by name
+ return classes.values().iterator();
+ }
+
+ public JavaClass[] getClassesArray() {
+ JavaClass[] res = new JavaClass[classes.size()];
+ classes.values().toArray(res);
+ return res;
+ }
+
+ public synchronized Enumeration<?> getFinalizerObjects() {
+ Vector<?> obj;
+ if (finalizablesCache != null &&
+ (obj = finalizablesCache.get()) != null) {
+ return obj.elements();
+ }
+
+ JavaClass clazz = findClass("java.lang.ref.Finalizer");
+ JavaObject queue = (JavaObject) clazz.getStaticField("queue");
+ JavaThing tmp = queue.getField("head");
+ Vector<JavaHeapObject> finalizables = new Vector<JavaHeapObject>();
+ if (tmp != getNullThing()) {
+ JavaObject head = (JavaObject) tmp;
+ while (true) {
+ JavaHeapObject referent = (JavaHeapObject) head.getField("referent");
+ JavaThing next = head.getField("next");
+ if (next == getNullThing() || next.equals(head)) {
+ break;
+ }
+ head = (JavaObject) next;
+ finalizables.add(referent);
+ }
+ }
+ finalizablesCache = new SoftReference<Vector<?>>(finalizables);
+ return finalizables.elements();
+ }
+
+ public Enumeration<Root> getRoots() {
+ return roots.elements();
+ }
+
+ public Root[] getRootsArray() {
+ Root[] res = new Root[roots.size()];
+ roots.toArray(res);
+ return res;
+ }
+
+ public Root getRootAt(int i) {
+ return roots.elementAt(i);
+ }
+
+ public ReferenceChain[]
+ rootsetReferencesTo(JavaHeapObject target, boolean includeWeak) {
+ Vector<ReferenceChain> fifo = new Vector<ReferenceChain>(); // This is slow... A real fifo would help
+ // Must be a fifo to go breadth-first
+ Hashtable<JavaHeapObject, JavaHeapObject> visited = new Hashtable<JavaHeapObject, JavaHeapObject>();
+ // Objects are added here right after being added to fifo.
+ Vector<ReferenceChain> result = new Vector<ReferenceChain>();
+ visited.put(target, target);
+ fifo.addElement(new ReferenceChain(target, null));
+
+ while (fifo.size() > 0) {
+ ReferenceChain chain = fifo.elementAt(0);
+ fifo.removeElementAt(0);
+ JavaHeapObject curr = chain.getObj();
+ if (curr.getRoot() != null) {
+ result.addElement(chain);
+ // Even though curr is in the rootset, we want to explore its
+ // referers, because they might be more interesting.
+ }
+ Enumeration<JavaThing> referers = curr.getReferers();
+ while (referers.hasMoreElements()) {
+ JavaHeapObject t = (JavaHeapObject) referers.nextElement();
+ if (t != null && !visited.containsKey(t)) {
+ if (includeWeak || !t.refersOnlyWeaklyTo(this, curr)) {
+ visited.put(t, t);
+ fifo.addElement(new ReferenceChain(t, chain));
+ }
+ }
+ }
+ }
+
+ ReferenceChain[] realResult = new ReferenceChain[result.size()];
+ for (int i = 0; i < result.size(); i++) {
+ realResult[i] = result.elementAt(i);
+ }
+ return realResult;
+ }
+
+ public boolean getUnresolvedObjectsOK() {
+ return unresolvedObjectsOK;
+ }
+
+ public void setUnresolvedObjectsOK(boolean v) {
+ unresolvedObjectsOK = v;
+ }
+
+ public JavaClass getWeakReferenceClass() {
+ return weakReferenceClass;
+ }
+
+ public int getReferentFieldIndex() {
+ return referentFieldIndex;
+ }
+
+ public JavaThing getNullThing() {
+ return nullThing;
+ }
+
+ public void setReachableExcludes(ReachableExcludes e) {
+ reachableExcludes = e;
+ }
+
+ public ReachableExcludes getReachableExcludes() {
+ return reachableExcludes;
+ }
+
+ // package privates
+ void addReferenceFromRoot(Root r, JavaHeapObject obj) {
+ Root root = rootsMap.get(obj);
+ if (root == null) {
+ rootsMap.put(obj, r);
+ } else {
+ rootsMap.put(obj, root.mostInteresting(r));
+ }
+ }
+
+ Root getRoot(JavaHeapObject obj) {
+ return rootsMap.get(obj);
+ }
+
+ JavaClass getJavaLangClass() {
+ return javaLangClass;
+ }
+
+ JavaClass getJavaLangString() {
+ return javaLangString;
+ }
+
+ JavaClass getJavaLangClassLoader() {
+ return javaLangClassLoader;
+ }
+
+ JavaClass getOtherArrayType() {
+ if (otherArrayType == null) {
+ synchronized(this) {
+ if (otherArrayType == null) {
+ addFakeClass(new JavaClass("[<other>", 0, 0, 0, 0,
+ EMPTY_FIELD_ARRAY, EMPTY_STATIC_ARRAY,
+ 0));
+ otherArrayType = findClass("[<other>");
+ }
+ }
+ }
+ return otherArrayType;
+ }
+
+ JavaClass getArrayClass(String elementSignature) {
+ JavaClass clazz;
+ synchronized(classes) {
+ clazz = findClass("[" + elementSignature);
+ if (clazz == null) {
+ clazz = new JavaClass("[" + elementSignature, 0, 0, 0, 0,
+ EMPTY_FIELD_ARRAY, EMPTY_STATIC_ARRAY, 0);
+ addFakeClass(clazz);
+ // This is needed because the JDK only creates Class structures
+ // for array element types, not the arrays themselves. For
+ // analysis, though, we need to pretend that there's a
+ // JavaClass for the array type, too.
+ }
+ }
+ return clazz;
+ }
+
+ ReadBuffer getReadBuffer() {
+ return readBuf;
+ }
+
+ void setNew(JavaHeapObject obj, boolean isNew) {
+ initNewObjects();
+ if (isNew) {
+ newObjects.put(obj, Boolean.TRUE);
+ }
+ }
+
+ boolean isNew(JavaHeapObject obj) {
+ if (newObjects != null) {
+ return newObjects.get(obj) != null;
+ } else {
+ return false;
+ }
+ }
+
+ // Internals only below this point
+ private Number makeId(long id) {
+ if (identifierSize == 4) {
+ return (int)id;
+ } else {
+ return id;
+ }
+ }
+
+ private void putInClassesMap(JavaClass c) {
+ String name = c.getName();
+ if (classes.containsKey(name)) {
+ // more than one class can have the same name
+ // if so, create a unique name by appending
+ // - and id string to it.
+ name += "-" + c.getIdString();
+ }
+ classes.put(c.getName(), c);
+ }
+
+ private void addFakeClass(JavaClass c) {
+ putInClassesMap(c);
+ c.resolve(this);
+ }
+
+ private void addFakeClass(Number id, JavaClass c) {
+ fakeClasses.put(id, c);
+ addFakeClass(c);
+ }
+
+ private synchronized void initNewObjects() {
+ if (newObjects == null) {
+ synchronized (this) {
+ if (newObjects == null) {
+ newObjects = new HashMap<JavaHeapObject, Boolean>();
+ }
+ }
+ }
+ }
+
+ private synchronized void initSiteTraces() {
+ if (siteTraces == null) {
+ synchronized (this) {
+ if (siteTraces == null) {
+ siteTraces = new HashMap<JavaHeapObject, StackTrace>();
+ }
+ }
+ }
+ }
+
+ @Override
+ public void close() throws Exception {
+ readBuf.close();
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/StackFrame.java b/test/lib/jdk/test/lib/hprof/model/StackFrame.java
new file mode 100644
index 0000000..723cf64
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/StackFrame.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ *
+ * @author Bill Foote
+ */
+
+
+/**
+ * Represents a stack frame.
+ */
+
+public class StackFrame {
+
+ //
+ // Values for the lineNumber data member. These are the same
+ // as the values used in the JDK 1.2 heap dump file.
+ //
+ public final static int LINE_NUMBER_UNKNOWN = -1;
+ public final static int LINE_NUMBER_COMPILED = -2;
+ public final static int LINE_NUMBER_NATIVE = -3;
+
+ private String methodName;
+ private String methodSignature;
+ private String className;
+ private String sourceFileName;
+ private int lineNumber;
+
+ public StackFrame(String methodName, String methodSignature,
+ String className, String sourceFileName, int lineNumber) {
+ this.methodName = methodName;
+ this.methodSignature = methodSignature;
+ this.className = className;
+ this.sourceFileName = sourceFileName;
+ this.lineNumber = lineNumber;
+ }
+
+ public void resolve(Snapshot snapshot) {
+ }
+
+ public String getMethodName() {
+ return methodName;
+ }
+
+ public String getMethodSignature() {
+ return methodSignature;
+ }
+
+ public String getClassName() {
+ return className;
+ }
+
+ public String getSourceFileName() {
+ return sourceFileName;
+ }
+
+ public String getLineNumber() {
+ switch(lineNumber) {
+ case LINE_NUMBER_UNKNOWN:
+ return "(unknown)";
+ case LINE_NUMBER_COMPILED:
+ return "(compiled method)";
+ case LINE_NUMBER_NATIVE:
+ return "(native method)";
+ default:
+ return Integer.toString(lineNumber, 10);
+ }
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/model/StackTrace.java b/test/lib/jdk/test/lib/hprof/model/StackTrace.java
new file mode 100644
index 0000000..75c92fc
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/model/StackTrace.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.model;
+
+/**
+ *
+ * @author Bill Foote
+ */
+
+
+/**
+ * Represents a stack trace, that is, an ordered collection of stack frames.
+ */
+
+public class StackTrace {
+
+ private StackFrame[] frames;
+
+ public StackTrace(StackFrame[] frames) {
+ this.frames = frames;
+ }
+
+ /**
+ * @param depth. The minimum reasonable depth is 1.
+ *
+ * @return a (possibly new) StackTrace that is limited to depth.
+ */
+ public StackTrace traceForDepth(int depth) {
+ if (depth >= frames.length) {
+ return this;
+ } else {
+ StackFrame[] f = new StackFrame[depth];
+ System.arraycopy(frames, 0, f, 0, depth);
+ return new StackTrace(f);
+ }
+ }
+
+ public void resolve(Snapshot snapshot) {
+ for (int i = 0; i < frames.length; i++) {
+ frames[i].resolve(snapshot);
+ }
+ }
+
+ public StackFrame[] getFrames() {
+ return frames;
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/parser/FileReadBuffer.java b/test/lib/jdk/test/lib/hprof/parser/FileReadBuffer.java
new file mode 100644
index 0000000..7beb2e7
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/parser/FileReadBuffer.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.parser;
+
+import java.io.IOException;
+import java.io.RandomAccessFile;
+
+/**
+ * Implementation of ReadBuffer using a RandomAccessFile
+ *
+ * @author A. Sundararajan
+ */
+class FileReadBuffer implements ReadBuffer {
+ // underlying file to read
+ private RandomAccessFile file;
+
+ FileReadBuffer(RandomAccessFile file) {
+ this.file = file;
+ }
+
+ private void seek(long pos) throws IOException {
+ file.getChannel().position(pos);
+ }
+
+ public synchronized void get(long pos, byte[] buf) throws IOException {
+ seek(pos);
+ file.read(buf);
+ }
+
+ public synchronized char getChar(long pos) throws IOException {
+ seek(pos);
+ return file.readChar();
+ }
+
+ public synchronized byte getByte(long pos) throws IOException {
+ seek(pos);
+ return (byte) file.read();
+ }
+
+ public synchronized short getShort(long pos) throws IOException {
+ seek(pos);
+ return file.readShort();
+ }
+
+ public synchronized int getInt(long pos) throws IOException {
+ seek(pos);
+ return file.readInt();
+ }
+
+ public synchronized long getLong(long pos) throws IOException {
+ seek(pos);
+ return file.readLong();
+ }
+
+ @Override
+ public void close() throws Exception {
+ file.close();
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/parser/HprofReader.java b/test/lib/jdk/test/lib/hprof/parser/HprofReader.java
new file mode 100644
index 0000000..cdc505d
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/parser/HprofReader.java
@@ -0,0 +1,909 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.parser;
+
+import java.io.*;
+import java.util.Date;
+import java.util.Hashtable;
+import jdk.test.lib.hprof.model.ArrayTypeCodes;
+import jdk.test.lib.hprof.model.*;
+
+/**
+ * Object that's used to read a hprof file.
+ *
+ * @author Bill Foote
+ */
+
+public class HprofReader extends Reader /* imports */ implements ArrayTypeCodes {
+
+ final static int MAGIC_NUMBER = 0x4a415641;
+ // That's "JAVA", the first part of "JAVA PROFILE ..."
+ private final static String[] VERSIONS = {
+ " PROFILE 1.0\0",
+ " PROFILE 1.0.1\0",
+ " PROFILE 1.0.2\0",
+ };
+
+ private final static int VERSION_JDK12BETA3 = 0;
+ private final static int VERSION_JDK12BETA4 = 1;
+ private final static int VERSION_JDK6 = 2;
+ // These version numbers are indices into VERSIONS. The instance data
+ // member version is set to one of these, and it drives decisions when
+ // reading the file.
+ //
+ // Version 1.0.1 added HPROF_GC_PRIM_ARRAY_DUMP, which requires no
+ // version-sensitive parsing.
+ //
+ // Version 1.0.1 changed the type of a constant pool entry from a signature
+ // to a typecode.
+ //
+ // Version 1.0.2 added HPROF_HEAP_DUMP_SEGMENT and HPROF_HEAP_DUMP_END
+ // to allow a large heap to be dumped as a sequence of heap dump segments.
+ //
+ // The HPROF agent in J2SE 1.2 through to 5.0 generate a version 1.0.1
+ // file. In Java SE 6.0 the version is either 1.0.1 or 1.0.2 depending on
+ // the size of the heap (normally it will be 1.0.1 but for multi-GB
+ // heaps the heap dump will not fit in a HPROF_HEAP_DUMP record so the
+ // dump is generated as version 1.0.2).
+
+ //
+ // Record types:
+ //
+ static final int HPROF_UTF8 = 0x01;
+ static final int HPROF_LOAD_CLASS = 0x02;
+ static final int HPROF_UNLOAD_CLASS = 0x03;
+ static final int HPROF_FRAME = 0x04;
+ static final int HPROF_TRACE = 0x05;
+ static final int HPROF_ALLOC_SITES = 0x06;
+ static final int HPROF_HEAP_SUMMARY = 0x07;
+
+ static final int HPROF_START_THREAD = 0x0a;
+ static final int HPROF_END_THREAD = 0x0b;
+
+ static final int HPROF_HEAP_DUMP = 0x0c;
+
+ static final int HPROF_CPU_SAMPLES = 0x0d;
+ static final int HPROF_CONTROL_SETTINGS = 0x0e;
+ static final int HPROF_LOCKSTATS_WAIT_TIME = 0x10;
+ static final int HPROF_LOCKSTATS_HOLD_TIME = 0x11;
+
+ static final int HPROF_GC_ROOT_UNKNOWN = 0xff;
+ static final int HPROF_GC_ROOT_JNI_GLOBAL = 0x01;
+ static final int HPROF_GC_ROOT_JNI_LOCAL = 0x02;
+ static final int HPROF_GC_ROOT_JAVA_FRAME = 0x03;
+ static final int HPROF_GC_ROOT_NATIVE_STACK = 0x04;
+ static final int HPROF_GC_ROOT_STICKY_CLASS = 0x05;
+ static final int HPROF_GC_ROOT_THREAD_BLOCK = 0x06;
+ static final int HPROF_GC_ROOT_MONITOR_USED = 0x07;
+ static final int HPROF_GC_ROOT_THREAD_OBJ = 0x08;
+
+ static final int HPROF_GC_CLASS_DUMP = 0x20;
+ static final int HPROF_GC_INSTANCE_DUMP = 0x21;
+ static final int HPROF_GC_OBJ_ARRAY_DUMP = 0x22;
+ static final int HPROF_GC_PRIM_ARRAY_DUMP = 0x23;
+
+ static final int HPROF_HEAP_DUMP_SEGMENT = 0x1c;
+ static final int HPROF_HEAP_DUMP_END = 0x2c;
+
+ private final static int T_CLASS = 2;
+
+ private int version; // The version of .hprof being read
+
+ private int debugLevel;
+ private long currPos; // Current position in the file
+
+ private int dumpsToSkip;
+ private boolean callStack; // If true, read the call stack of objects
+
+ private int identifierSize; // Size, in bytes, of identifiers.
+ private Hashtable<Long, String> names;
+
+ // Hashtable<Integer, ThreadObject>, used to map the thread sequence number
+ // (aka "serial number") to the thread object ID for
+ // HPROF_GC_ROOT_THREAD_OBJ. ThreadObject is a trivial inner class,
+ // at the end of this file.
+ private Hashtable<Integer, ThreadObject> threadObjects;
+
+ // Hashtable<Long, String>, maps class object ID to class name
+ // (with / converted to .)
+ private Hashtable<Long, String> classNameFromObjectID;
+
+ // Hashtable<Integer, Integer>, maps class serial # to class object ID
+ private Hashtable<Integer, String> classNameFromSerialNo;
+
+ // Hashtable<Long, StackFrame> maps stack frame ID to StackFrame.
+ // Null if we're not tracking them.
+ private Hashtable<Long, StackFrame> stackFrames;
+
+ // Hashtable<Integer, StackTrace> maps stack frame ID to StackTrace
+ // Null if we're not tracking them.
+ private Hashtable<Integer, StackTrace> stackTraces;
+
+ private Snapshot snapshot;
+
+ public static boolean verifyMagicNumber(int numberRead) {
+ return (numberRead == MAGIC_NUMBER);
+ }
+
+ public HprofReader(String fileName, PositionDataInputStream in,
+ int dumpNumber, boolean callStack, int debugLevel)
+ throws IOException {
+ super(in);
+ RandomAccessFile file = new RandomAccessFile(fileName, "r");
+ this.snapshot = new Snapshot(MappedReadBuffer.create(file));
+ this.dumpsToSkip = dumpNumber - 1;
+ this.callStack = callStack;
+ this.debugLevel = debugLevel;
+ names = new Hashtable<Long, String>();
+ threadObjects = new Hashtable<Integer, ThreadObject>(43);
+ classNameFromObjectID = new Hashtable<Long, String>();
+ if (callStack) {
+ stackFrames = new Hashtable<Long, StackFrame>(43);
+ stackTraces = new Hashtable<Integer, StackTrace>(43);
+ classNameFromSerialNo = new Hashtable<Integer, String>();
+ }
+ }
+
+ public Snapshot read() throws IOException {
+ currPos = 4; // 4 because of the magic number
+ version = readVersionHeader();
+ identifierSize = in.readInt();
+ snapshot.setIdentifierSize(identifierSize);
+ if (version >= VERSION_JDK12BETA4) {
+ snapshot.setNewStyleArrayClass(true);
+ } else {
+ snapshot.setNewStyleArrayClass(false);
+ }
+
+ currPos += 4;
+ if (identifierSize != 4 && identifierSize != 8) {
+ throw new IOException("I'm sorry, but I can't deal with an identifier size of " + identifierSize + ". I can only deal with 4 or 8.");
+ }
+ System.out.println("Dump file created " + (new Date(in.readLong())));
+ currPos += 8;
+
+ for (;;) {
+ int type;
+ try {
+ type = in.readUnsignedByte();
+ } catch (EOFException ignored) {
+ break;
+ }
+ in.readInt(); // Timestamp of this record
+ // Length of record: readInt() will return negative value for record
+ // length >2GB. so store 32bit value in long to keep it unsigned.
+ long length = in.readInt() & 0xffffffffL;
+ if (debugLevel > 0) {
+ System.out.println("Read record type " + type
+ + ", length " + length
+ + " at position " + toHex(currPos));
+ }
+ if (length < 0) {
+ throw new IOException("Bad record length of " + length
+ + " at byte " + toHex(currPos+5)
+ + " of file.");
+ }
+ currPos += 9 + length;
+ switch (type) {
+ case HPROF_UTF8: {
+ long id = readID();
+ byte[] chars = new byte[(int)length - identifierSize];
+ in.readFully(chars);
+ names.put(id, new String(chars));
+ break;
+ }
+ case HPROF_LOAD_CLASS: {
+ int serialNo = in.readInt(); // Not used
+ long classID = readID();
+ int stackTraceSerialNo = in.readInt();
+ long classNameID = readID();
+ Long classIdI = classID;
+ String nm = getNameFromID(classNameID).replace('/', '.');
+ classNameFromObjectID.put(classIdI, nm);
+ if (classNameFromSerialNo != null) {
+ classNameFromSerialNo.put(serialNo, nm);
+ }
+ break;
+ }
+
+ case HPROF_HEAP_DUMP: {
+ if (dumpsToSkip <= 0) {
+ try {
+ readHeapDump(length, currPos);
+ } catch (EOFException exp) {
+ handleEOF(exp, snapshot);
+ }
+ if (debugLevel > 0) {
+ System.out.println(" Finished processing instances in heap dump.");
+ }
+ return snapshot;
+ } else {
+ dumpsToSkip--;
+ skipBytes(length);
+ }
+ break;
+ }
+
+ case HPROF_HEAP_DUMP_END: {
+ if (version >= VERSION_JDK6) {
+ if (dumpsToSkip <= 0) {
+ skipBytes(length); // should be no-op
+ return snapshot;
+ } else {
+ // skip this dump (of the end record for a sequence of dump segments)
+ dumpsToSkip--;
+ }
+ } else {
+ // HPROF_HEAP_DUMP_END only recognized in >= 1.0.2
+ warn("Ignoring unrecognized record type " + type);
+ }
+ skipBytes(length); // should be no-op
+ break;
+ }
+
+ case HPROF_HEAP_DUMP_SEGMENT: {
+ if (version >= VERSION_JDK6) {
+ if (dumpsToSkip <= 0) {
+ try {
+ // read the dump segment
+ readHeapDump(length, currPos);
+ } catch (EOFException exp) {
+ handleEOF(exp, snapshot);
+ }
+ } else {
+ // all segments comprising the heap dump will be skipped
+ skipBytes(length);
+ }
+ } else {
+ // HPROF_HEAP_DUMP_SEGMENT only recognized in >= 1.0.2
+ warn("Ignoring unrecognized record type " + type);
+ skipBytes(length);
+ }
+ break;
+ }
+
+ case HPROF_FRAME: {
+ if (stackFrames == null) {
+ skipBytes(length);
+ } else {
+ long id = readID();
+ String methodName = getNameFromID(readID());
+ String methodSig = getNameFromID(readID());
+ String sourceFile = getNameFromID(readID());
+ int classSer = in.readInt();
+ String className = classNameFromSerialNo.get(classSer);
+ int lineNumber = in.readInt();
+ if (lineNumber < StackFrame.LINE_NUMBER_NATIVE) {
+ warn("Weird stack frame line number: " + lineNumber);
+ lineNumber = StackFrame.LINE_NUMBER_UNKNOWN;
+ }
+ stackFrames.put(id,
+ new StackFrame(methodName, methodSig,
+ className, sourceFile,
+ lineNumber));
+ }
+ break;
+ }
+ case HPROF_TRACE: {
+ if (stackTraces == null) {
+ skipBytes(length);
+ } else {
+ int serialNo = in.readInt();
+ int threadSeq = in.readInt(); // Not used
+ StackFrame[] frames = new StackFrame[in.readInt()];
+ for (int i = 0; i < frames.length; i++) {
+ long fid = readID();
+ frames[i] = stackFrames.get(fid);
+ if (frames[i] == null) {
+ throw new IOException("Stack frame " + toHex(fid) + " not found");
+ }
+ }
+ stackTraces.put(serialNo,
+ new StackTrace(frames));
+ }
+ break;
+ }
+ case HPROF_UNLOAD_CLASS:
+ case HPROF_ALLOC_SITES:
+ case HPROF_START_THREAD:
+ case HPROF_END_THREAD:
+ case HPROF_HEAP_SUMMARY:
+ case HPROF_CPU_SAMPLES:
+ case HPROF_CONTROL_SETTINGS:
+ case HPROF_LOCKSTATS_WAIT_TIME:
+ case HPROF_LOCKSTATS_HOLD_TIME:
+ {
+ // Ignore these record types
+ skipBytes(length);
+ break;
+ }
+ default: {
+ skipBytes(length);
+ warn("Ignoring unrecognized record type " + type);
+ }
+ }
+ }
+
+ return snapshot;
+ }
+
+ private void skipBytes(long length) throws IOException {
+ while (length > 0) {
+ long skipped = in.skip(length);
+ if (skipped == 0) {
+ // EOF or other problem, throw exception
+ throw new EOFException("Couldn't skip enough bytes");
+ }
+ length -= skipped;
+ }
+ }
+
+ private int readVersionHeader() throws IOException {
+ int candidatesLeft = VERSIONS.length;
+ boolean[] matched = new boolean[VERSIONS.length];
+ for (int i = 0; i < candidatesLeft; i++) {
+ matched[i] = true;
+ }
+
+ int pos = 0;
+ while (candidatesLeft > 0) {
+ char c = (char) in.readByte();
+ currPos++;
+ for (int i = 0; i < VERSIONS.length; i++) {
+ if (matched[i]) {
+ if (c != VERSIONS[i].charAt(pos)) { // Not matched
+ matched[i] = false;
+ --candidatesLeft;
+ } else if (pos == VERSIONS[i].length() - 1) { // Full match
+ return i;
+ }
+ }
+ }
+ ++pos;
+ }
+ throw new IOException("Version string not recognized at byte " + (pos+3));
+ }
+
+ private void readHeapDump(long bytesLeft, long posAtEnd) throws IOException {
+ while (bytesLeft > 0) {
+ int type = in.readUnsignedByte();
+ if (debugLevel > 0) {
+ System.out.println(" Read heap sub-record type " + type
+ + " at position "
+ + toHex(posAtEnd - bytesLeft));
+ }
+ bytesLeft--;
+ switch(type) {
+ case HPROF_GC_ROOT_UNKNOWN: {
+ long id = readID();
+ bytesLeft -= identifierSize;
+ snapshot.addRoot(new Root(id, 0, Root.UNKNOWN, ""));
+ break;
+ }
+ case HPROF_GC_ROOT_THREAD_OBJ: {
+ long id = readID();
+ int threadSeq = in.readInt();
+ int stackSeq = in.readInt();
+ bytesLeft -= identifierSize + 8;
+ threadObjects.put(threadSeq,
+ new ThreadObject(id, stackSeq));
+ break;
+ }
+ case HPROF_GC_ROOT_JNI_GLOBAL: {
+ long id = readID();
+ long globalRefId = readID(); // Ignored, for now
+ bytesLeft -= 2*identifierSize;
+ snapshot.addRoot(new Root(id, 0, Root.NATIVE_STATIC, ""));
+ break;
+ }
+ case HPROF_GC_ROOT_JNI_LOCAL: {
+ long id = readID();
+ int threadSeq = in.readInt();
+ int depth = in.readInt();
+ bytesLeft -= identifierSize + 8;
+ ThreadObject to = getThreadObjectFromSequence(threadSeq);
+ StackTrace st = getStackTraceFromSerial(to.stackSeq);
+ if (st != null) {
+ st = st.traceForDepth(depth+1);
+ }
+ snapshot.addRoot(new Root(id, to.threadId,
+ Root.NATIVE_LOCAL, "", st));
+ break;
+ }
+ case HPROF_GC_ROOT_JAVA_FRAME: {
+ long id = readID();
+ int threadSeq = in.readInt();
+ int depth = in.readInt();
+ bytesLeft -= identifierSize + 8;
+ ThreadObject to = getThreadObjectFromSequence(threadSeq);
+ StackTrace st = getStackTraceFromSerial(to.stackSeq);
+ if (st != null) {
+ st = st.traceForDepth(depth+1);
+ }
+ snapshot.addRoot(new Root(id, to.threadId,
+ Root.JAVA_LOCAL, "", st));
+ break;
+ }
+ case HPROF_GC_ROOT_NATIVE_STACK: {
+ long id = readID();
+ int threadSeq = in.readInt();
+ bytesLeft -= identifierSize + 4;
+ ThreadObject to = getThreadObjectFromSequence(threadSeq);
+ StackTrace st = getStackTraceFromSerial(to.stackSeq);
+ snapshot.addRoot(new Root(id, to.threadId,
+ Root.NATIVE_STACK, "", st));
+ break;
+ }
+ case HPROF_GC_ROOT_STICKY_CLASS: {
+ long id = readID();
+ bytesLeft -= identifierSize;
+ snapshot.addRoot(new Root(id, 0, Root.SYSTEM_CLASS, ""));
+ break;
+ }
+ case HPROF_GC_ROOT_THREAD_BLOCK: {
+ long id = readID();
+ int threadSeq = in.readInt();
+ bytesLeft -= identifierSize + 4;
+ ThreadObject to = getThreadObjectFromSequence(threadSeq);
+ StackTrace st = getStackTraceFromSerial(to.stackSeq);
+ snapshot.addRoot(new Root(id, to.threadId,
+ Root.THREAD_BLOCK, "", st));
+ break;
+ }
+ case HPROF_GC_ROOT_MONITOR_USED: {
+ long id = readID();
+ bytesLeft -= identifierSize;
+ snapshot.addRoot(new Root(id, 0, Root.BUSY_MONITOR, ""));
+ break;
+ }
+ case HPROF_GC_CLASS_DUMP: {
+ int bytesRead = readClass();
+ bytesLeft -= bytesRead;
+ break;
+ }
+ case HPROF_GC_INSTANCE_DUMP: {
+ int bytesRead = readInstance();
+ bytesLeft -= bytesRead;
+ break;
+ }
+ case HPROF_GC_OBJ_ARRAY_DUMP: {
+ long bytesRead = readArray(false);
+ bytesLeft -= bytesRead;
+ break;
+ }
+ case HPROF_GC_PRIM_ARRAY_DUMP: {
+ long bytesRead = readArray(true);
+ bytesLeft -= bytesRead;
+ break;
+ }
+ default: {
+ throw new IOException("Unrecognized heap dump sub-record type: " + type);
+ }
+ }
+ }
+ if (bytesLeft != 0) {
+ warn("Error reading heap dump or heap dump segment: Byte count is " + bytesLeft + " instead of 0");
+ skipBytes(bytesLeft);
+ }
+ if (debugLevel > 0) {
+ System.out.println(" Finished heap sub-records.");
+ }
+ }
+
+ private long readID() throws IOException {
+ return (identifierSize == 4)?
+ (Snapshot.SMALL_ID_MASK & (long)in.readInt()) : in.readLong();
+ }
+
+ //
+ // Read a java value. If result is non-null, it's expected to be an
+ // array of one element. We use it to fake multiple return values.
+ // @returns the number of bytes read
+ //
+ private int readValue(JavaThing[] resultArr) throws IOException {
+ byte type = in.readByte();
+ return 1 + readValueForType(type, resultArr);
+ }
+
+ private int readValueForType(byte type, JavaThing[] resultArr)
+ throws IOException {
+ if (version >= VERSION_JDK12BETA4) {
+ type = signatureFromTypeId(type);
+ }
+ return readValueForTypeSignature(type, resultArr);
+ }
+
+ private int readValueForTypeSignature(byte type, JavaThing[] resultArr)
+ throws IOException {
+ switch (type) {
+ case '[':
+ case 'L': {
+ long id = readID();
+ if (resultArr != null) {
+ resultArr[0] = new JavaObjectRef(id);
+ }
+ return identifierSize;
+ }
+ case 'Z': {
+ int b = in.readByte();
+ if (b != 0 && b != 1) {
+ warn("Illegal boolean value read");
+ }
+ if (resultArr != null) {
+ resultArr[0] = new JavaBoolean(b != 0);
+ }
+ return 1;
+ }
+ case 'B': {
+ byte b = in.readByte();
+ if (resultArr != null) {
+ resultArr[0] = new JavaByte(b);
+ }
+ return 1;
+ }
+ case 'S': {
+ short s = in.readShort();
+ if (resultArr != null) {
+ resultArr[0] = new JavaShort(s);
+ }
+ return 2;
+ }
+ case 'C': {
+ char ch = in.readChar();
+ if (resultArr != null) {
+ resultArr[0] = new JavaChar(ch);
+ }
+ return 2;
+ }
+ case 'I': {
+ int val = in.readInt();
+ if (resultArr != null) {
+ resultArr[0] = new JavaInt(val);
+ }
+ return 4;
+ }
+ case 'J': {
+ long val = in.readLong();
+ if (resultArr != null) {
+ resultArr[0] = new JavaLong(val);
+ }
+ return 8;
+ }
+ case 'F': {
+ float val = in.readFloat();
+ if (resultArr != null) {
+ resultArr[0] = new JavaFloat(val);
+ }
+ return 4;
+ }
+ case 'D': {
+ double val = in.readDouble();
+ if (resultArr != null) {
+ resultArr[0] = new JavaDouble(val);
+ }
+ return 8;
+ }
+ default: {
+ throw new IOException("Bad value signature: " + type);
+ }
+ }
+ }
+
+ private ThreadObject getThreadObjectFromSequence(int threadSeq)
+ throws IOException {
+ ThreadObject to = threadObjects.get(threadSeq);
+ if (to == null) {
+ throw new IOException("Thread " + threadSeq +
+ " not found for JNI local ref");
+ }
+ return to;
+ }
+
+ private String getNameFromID(long id) throws IOException {
+ return getNameFromID(Long.valueOf(id));
+ }
+
+ private String getNameFromID(Long id) throws IOException {
+ if (id.longValue() == 0L) {
+ return "";
+ }
+ String result = names.get(id);
+ if (result == null) {
+ warn("Name not found at " + toHex(id.longValue()));
+ return "unresolved name " + toHex(id.longValue());
+ }
+ return result;
+ }
+
+ private StackTrace getStackTraceFromSerial(int ser) throws IOException {
+ if (stackTraces == null) {
+ return null;
+ }
+ StackTrace result = stackTraces.get(ser);
+ if (result == null) {
+ warn("Stack trace not found for serial # " + ser);
+ }
+ return result;
+ }
+
+ //
+ // Handle a HPROF_GC_CLASS_DUMP
+ // Return number of bytes read
+ //
+ private int readClass() throws IOException {
+ long id = readID();
+ StackTrace stackTrace = getStackTraceFromSerial(in.readInt());
+ long superId = readID();
+ long classLoaderId = readID();
+ long signersId = readID();
+ long protDomainId = readID();
+ long reserved1 = readID();
+ long reserved2 = readID();
+ int instanceSize = in.readInt();
+ int bytesRead = 7 * identifierSize + 8;
+
+ int numConstPoolEntries = in.readUnsignedShort();
+ bytesRead += 2;
+ for (int i = 0; i < numConstPoolEntries; i++) {
+ int index = in.readUnsignedShort(); // unused
+ bytesRead += 2;
+ bytesRead += readValue(null); // We ignore the values
+ }
+
+ int numStatics = in.readUnsignedShort();
+ bytesRead += 2;
+ JavaThing[] valueBin = new JavaThing[1];
+ JavaStatic[] statics = new JavaStatic[numStatics];
+ for (int i = 0; i < numStatics; i++) {
+ long nameId = readID();
+ bytesRead += identifierSize;
+ byte type = in.readByte();
+ bytesRead++;
+ bytesRead += readValueForType(type, valueBin);
+ String fieldName = getNameFromID(nameId);
+ if (version >= VERSION_JDK12BETA4) {
+ type = signatureFromTypeId(type);
+ }
+ String signature = "" + ((char) type);
+ JavaField f = new JavaField(fieldName, signature);
+ statics[i] = new JavaStatic(f, valueBin[0]);
+ }
+
+ int numFields = in.readUnsignedShort();
+ bytesRead += 2;
+ JavaField[] fields = new JavaField[numFields];
+ for (int i = 0; i < numFields; i++) {
+ long nameId = readID();
+ bytesRead += identifierSize;
+ byte type = in.readByte();
+ bytesRead++;
+ String fieldName = getNameFromID(nameId);
+ if (version >= VERSION_JDK12BETA4) {
+ type = signatureFromTypeId(type);
+ }
+ String signature = "" + ((char) type);
+ fields[i] = new JavaField(fieldName, signature);
+ }
+ String name = classNameFromObjectID.get(id);
+ if (name == null) {
+ warn("Class name not found for " + toHex(id));
+ name = "unknown-name@" + toHex(id);
+ }
+ JavaClass c = new JavaClass(id, name, superId, classLoaderId, signersId,
+ protDomainId, fields, statics,
+ instanceSize);
+ snapshot.addClass(id, c);
+ snapshot.setSiteTrace(c, stackTrace);
+
+ return bytesRead;
+ }
+
+ private String toHex(long addr) {
+ return jdk.test.lib.hprof.util.Misc.toHex(addr);
+ }
+
+ //
+ // Handle a HPROF_GC_INSTANCE_DUMP
+ // Return number of bytes read
+ //
+ private int readInstance() throws IOException {
+ long start = in.position();
+ long id = readID();
+ StackTrace stackTrace = getStackTraceFromSerial(in.readInt());
+ long classID = readID();
+ JavaClass searchedClass = snapshot.findClass(
+ "0x" + Long.toHexString(classID));
+ if (searchedClass == null) {
+ throw new IOException(
+ "Class Record for 0x" + Long.toHexString(classID) + " not found");
+ }
+ int bytesFollowing = in.readInt();
+ int bytesRead = (2 * identifierSize) + 8 + bytesFollowing;
+ JavaObject jobj = new JavaObject(classID, start);
+ skipBytes(bytesFollowing);
+ snapshot.addHeapObject(id, jobj);
+ snapshot.setSiteTrace(jobj, stackTrace);
+ return bytesRead;
+ }
+
+ //
+ // Handle a HPROF_GC_OBJ_ARRAY_DUMP or HPROF_GC_PRIM_ARRAY_DUMP
+ // Return number of bytes read
+ //
+ private long readArray(boolean isPrimitive) throws IOException {
+ long start = in.position();
+ long id = readID();
+ StackTrace stackTrace = getStackTraceFromSerial(in.readInt());
+ int num = in.readInt();
+ long bytesRead = identifierSize + 8;
+ long elementClassID;
+ if (isPrimitive) {
+ elementClassID = in.readByte();
+ bytesRead++;
+ } else {
+ elementClassID = readID();
+ bytesRead += identifierSize;
+ }
+
+ // Check for primitive arrays:
+ byte primitiveSignature = 0x00;
+ int elSize = 0;
+ if (isPrimitive || version < VERSION_JDK12BETA4) {
+ switch ((int)elementClassID) {
+ case T_BOOLEAN: {
+ primitiveSignature = (byte) 'Z';
+ elSize = 1;
+ break;
+ }
+ case T_CHAR: {
+ primitiveSignature = (byte) 'C';
+ elSize = 2;
+ break;
+ }
+ case T_FLOAT: {
+ primitiveSignature = (byte) 'F';
+ elSize = 4;
+ break;
+ }
+ case T_DOUBLE: {
+ primitiveSignature = (byte) 'D';
+ elSize = 8;
+ break;
+ }
+ case T_BYTE: {
+ primitiveSignature = (byte) 'B';
+ elSize = 1;
+ break;
+ }
+ case T_SHORT: {
+ primitiveSignature = (byte) 'S';
+ elSize = 2;
+ break;
+ }
+ case T_INT: {
+ primitiveSignature = (byte) 'I';
+ elSize = 4;
+ break;
+ }
+ case T_LONG: {
+ primitiveSignature = (byte) 'J';
+ elSize = 8;
+ break;
+ }
+ }
+ if (version >= VERSION_JDK12BETA4 && primitiveSignature == 0x00) {
+ throw new IOException("Unrecognized typecode: "
+ + elementClassID);
+ }
+ }
+ if (primitiveSignature != 0x00) {
+ long size = elSize * (long)num;
+ bytesRead += size;
+ JavaValueArray va = new JavaValueArray(primitiveSignature, start);
+ skipBytes(size);
+ snapshot.addHeapObject(id, va);
+ snapshot.setSiteTrace(va, stackTrace);
+ } else {
+ long sz = (long)num * identifierSize;
+ bytesRead += sz;
+ JavaObjectArray arr = new JavaObjectArray(elementClassID, start);
+ skipBytes(sz);
+ snapshot.addHeapObject(id, arr);
+ snapshot.setSiteTrace(arr, stackTrace);
+ }
+ return bytesRead;
+ }
+
+ private byte signatureFromTypeId(byte typeId) throws IOException {
+ switch (typeId) {
+ case T_CLASS: {
+ return (byte) 'L';
+ }
+ case T_BOOLEAN: {
+ return (byte) 'Z';
+ }
+ case T_CHAR: {
+ return (byte) 'C';
+ }
+ case T_FLOAT: {
+ return (byte) 'F';
+ }
+ case T_DOUBLE: {
+ return (byte) 'D';
+ }
+ case T_BYTE: {
+ return (byte) 'B';
+ }
+ case T_SHORT: {
+ return (byte) 'S';
+ }
+ case T_INT: {
+ return (byte) 'I';
+ }
+ case T_LONG: {
+ return (byte) 'J';
+ }
+ default: {
+ throw new IOException("Invalid type id of " + typeId);
+ }
+ }
+ }
+
+ private void handleEOF(EOFException exp, Snapshot snapshot) {
+ if (debugLevel > 0) {
+ exp.printStackTrace();
+ }
+ warn("Unexpected EOF. Will miss information...");
+ // we have EOF, we have to tolerate missing references
+ snapshot.setUnresolvedObjectsOK(true);
+ }
+
+ private void warn(String msg) {
+ System.out.println("WARNING: " + msg);
+ }
+
+ //
+ // A trivial data-holder class for HPROF_GC_ROOT_THREAD_OBJ.
+ //
+ private class ThreadObject {
+
+ long threadId;
+ int stackSeq;
+
+ ThreadObject(long threadId, int stackSeq) {
+ this.threadId = threadId;
+ this.stackSeq = stackSeq;
+ }
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/parser/MappedReadBuffer.java b/test/lib/jdk/test/lib/hprof/parser/MappedReadBuffer.java
new file mode 100644
index 0000000..c7247fa
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/parser/MappedReadBuffer.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.parser;
+
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.nio.MappedByteBuffer;
+import java.nio.channels.FileChannel;
+
+/**
+ * Implementation of ReadBuffer using mapped file buffer
+ *
+ * @author A. Sundararajan
+ */
+class MappedReadBuffer implements ReadBuffer {
+ private MappedByteBuffer buf;
+ private RandomAccessFile file;
+
+ MappedReadBuffer(RandomAccessFile file, MappedByteBuffer buf) {
+ this.file = file;
+ this.buf = buf;
+ }
+
+ /**
+ * Factory method to create correct ReadBuffer for a given file.
+ *
+ * The initial purpose of this method was to choose how to read hprof file for parsing
+ * depending on the size of the file and the system property 'jhat.disableFileMap':
+ * "If file size is more than 2 GB and when file mapping is configured (default),
+ * use mapped file reader".
+ *
+ * However, it has been discovered a problem with this approach.
+ * Creating java.nio.MappedByteBuffer from inside the test leads to hprof file
+ * is locked on Windows until test process dies since there is no good way to
+ * release this resource.
+ *
+ * java.nio.MappedByteBuffer will be used only if 'jhat.enableFileMap' is set to true.
+ * Per default 'jhat.enableFileMap' is not set.
+ */
+ static ReadBuffer create(RandomAccessFile file) throws IOException {
+ if (canUseFileMap()) {
+ MappedByteBuffer buf;
+ try {
+ FileChannel ch = file.getChannel();
+ long size = ch.size();
+ buf = ch.map(FileChannel.MapMode.READ_ONLY, 0, size);
+ ch.close();
+ return new MappedReadBuffer(file, buf);
+ } catch (IOException exp) {
+ exp.printStackTrace();
+ System.err.println("File mapping failed, will use direct read");
+ // fall through
+ }
+ } // else fall through
+ return new FileReadBuffer(file);
+ }
+
+ /**
+ * Set system property 'jhat.enableFileMap' to 'true' to enable file mapping.
+ */
+ private static boolean canUseFileMap() {
+ String prop = System.getProperty("jhat.enableFileMap");
+ return prop != null && prop.equals("true");
+ }
+
+ private void seek(long pos) throws IOException {
+ assert pos <= Integer.MAX_VALUE : "position overflow";
+ buf.position((int)pos);
+ }
+
+ public synchronized void get(long pos, byte[] res) throws IOException {
+ seek(pos);
+ buf.get(res);
+ }
+
+ public synchronized char getChar(long pos) throws IOException {
+ seek(pos);
+ return buf.getChar();
+ }
+
+ public synchronized byte getByte(long pos) throws IOException {
+ seek(pos);
+ return buf.get();
+ }
+
+ public synchronized short getShort(long pos) throws IOException {
+ seek(pos);
+ return buf.getShort();
+ }
+
+ public synchronized int getInt(long pos) throws IOException {
+ seek(pos);
+ return buf.getInt();
+ }
+
+ public synchronized long getLong(long pos) throws IOException {
+ seek(pos);
+ return buf.getLong();
+ }
+
+ @Override
+ public void close() throws Exception {
+ file.close();
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/hprof/parser/PositionDataInputStream.java b/test/lib/jdk/test/lib/hprof/parser/PositionDataInputStream.java
new file mode 100644
index 0000000..8435dd1
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/parser/PositionDataInputStream.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.parser;
+
+import java.io.DataInputStream;
+import java.io.InputStream;
+
+/**
+ * A DataInputStream that keeps track of total bytes read
+ * (in effect 'position' in stream) so far.
+ *
+ */
+public class PositionDataInputStream extends DataInputStream {
+ public PositionDataInputStream(InputStream in) {
+ super(in instanceof PositionInputStream?
+ in : new PositionInputStream(in));
+ }
+
+ public boolean markSupported() {
+ return false;
+ }
+
+ public void mark(int readLimit) {
+ throw new UnsupportedOperationException("mark");
+ }
+
+ public void reset() {
+ throw new UnsupportedOperationException("reset");
+ }
+
+ public long position() {
+ return ((PositionInputStream)in).position();
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/parser/PositionInputStream.java b/test/lib/jdk/test/lib/hprof/parser/PositionInputStream.java
new file mode 100644
index 0000000..0c0e43d
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/parser/PositionInputStream.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.parser;
+
+import java.io.FilterInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * InputStream that keeps track of total bytes read (in effect
+ * 'position' in stream) from the input stream.
+ *
+ */
+public class PositionInputStream extends FilterInputStream {
+ private long position = 0L;
+
+ public PositionInputStream(InputStream in) {
+ super(in);
+ }
+
+ public int read() throws IOException {
+ int res = super.read();
+ if (res != -1) position++;
+ return res;
+ }
+
+ public int read(byte[] b, int off, int len) throws IOException {
+ int res = super.read(b, off, len);
+ if (res != -1) position += res;
+ return res;
+ }
+
+ public long skip(long n) throws IOException {
+ long res = super.skip(n);
+ position += res;
+ return res;
+ }
+
+ public boolean markSupported() {
+ return false;
+ }
+
+ public void mark(int readLimit) {
+ throw new UnsupportedOperationException("mark");
+ }
+
+ public void reset() {
+ throw new UnsupportedOperationException("reset");
+ }
+
+ public long position() {
+ return position;
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/parser/ReadBuffer.java b/test/lib/jdk/test/lib/hprof/parser/ReadBuffer.java
new file mode 100644
index 0000000..fe548a7
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/parser/ReadBuffer.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.parser;
+
+import java.io.IOException;
+
+/**
+ * Positionable read only buffer
+ *
+ * @author A. Sundararajan
+ */
+public interface ReadBuffer extends AutoCloseable {
+ // read methods - only byte array and int primitive types.
+ // read position has to be specified always.
+ public void get(long pos, byte[] buf) throws IOException;
+ public char getChar(long pos) throws IOException;
+ public byte getByte(long pos) throws IOException;
+ public short getShort(long pos) throws IOException;
+ public int getInt(long pos) throws IOException;
+ public long getLong(long pos) throws IOException;
+}
diff --git a/test/lib/jdk/test/lib/hprof/parser/Reader.java b/test/lib/jdk/test/lib/hprof/parser/Reader.java
new file mode 100644
index 0000000..5263035
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/parser/Reader.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.parser;
+
+import java.io.*;
+import jdk.test.lib.hprof.model.*;
+
+/**
+ * Abstract base class for reading object dump files. A reader need not be
+ * thread-safe.
+ *
+ * @author Bill Foote
+ */
+
+
+public abstract class Reader {
+ protected PositionDataInputStream in;
+
+ protected Reader(PositionDataInputStream in) {
+ this.in = in;
+ }
+
+ /**
+ * Read a snapshot from a data input stream. It is assumed that the magic
+ * number has already been read.
+ */
+ abstract public Snapshot read() throws IOException;
+
+ /**
+ * Read a snapshot from a file.
+ *
+ * @param heapFile The name of a file containing a heap dump
+ * @param callStack If true, read the call stack of allocaation sites
+ */
+ public static Snapshot readFile(String heapFile, boolean callStack,
+ int debugLevel)
+ throws IOException {
+ int dumpNumber = 1;
+ int pos = heapFile.lastIndexOf('#');
+ if (pos > -1) {
+ String num = heapFile.substring(pos+1, heapFile.length());
+ try {
+ dumpNumber = Integer.parseInt(num, 10);
+ } catch (java.lang.NumberFormatException ex) {
+ String msg = "In file name \"" + heapFile
+ + "\", a dump number was "
+ + "expected after the :, but \""
+ + num + "\" was found instead.";
+ System.err.println(msg);
+ throw new IOException(msg);
+ }
+ heapFile = heapFile.substring(0, pos);
+ }
+ try (PositionDataInputStream in = new PositionDataInputStream(
+ new BufferedInputStream(new FileInputStream(heapFile)))) {
+ int i = in.readInt();
+ if (i == HprofReader.MAGIC_NUMBER) {
+ Reader r
+ = new HprofReader(heapFile, in, dumpNumber,
+ callStack, debugLevel);
+ return r.read();
+ } else {
+ throw new IOException("Unrecognized magic number: " + i);
+ }
+ }
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/util/ArraySorter.java b/test/lib/jdk/test/lib/hprof/util/ArraySorter.java
new file mode 100644
index 0000000..04dbad7
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/util/ArraySorter.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.util;
+import java.util.*;
+
+/**
+ * A singleton utility class that sorts an array of objects.
+ * <p>
+ * Use:
+ * <pre>
+ *
+ * Stuff[] arr = ...;
+ * ArraySorter.sort(arr, new Comparer() {
+ * public int compare(Object lhs, Object rhs) {
+ * return ((String) lhs).compareTo((String) rhs);
+ * }
+ * });
+ * </pre>
+ *
+ * @author Bill Foote
+ */
+
+public class ArraySorter {
+
+ /**
+ * Sort the given array, using c for comparison
+ **/
+ static public void sort(Object[] arr, Comparer c) {
+ quickSort(arr, c, 0, arr.length-1);
+ }
+
+
+ /**
+ * Sort an array of strings, using String.compareTo()
+ **/
+ static public void sortArrayOfStrings(Object[] arr) {
+ sort(arr, new Comparer() {
+ public int compare(Object lhs, Object rhs) {
+ return ((String) lhs).compareTo((String) rhs);
+ }
+ });
+ }
+
+
+ static private void swap(Object[] arr, int a, int b) {
+ Object tmp = arr[a];
+ arr[a] = arr[b];
+ arr[b] = tmp;
+ }
+
+ //
+ // Sorts arr between from and to, inclusive. This is a quick, off-the-top-
+ // of-my-head quicksort: I haven't put any thought into optimizing it.
+ // I _did_ put thought into making sure it's safe (it will always
+ // terminate). Worst-case it's O(n^2), but it will usually run in
+ // in O(n log n). It's well-behaved if the list is already sorted,
+ // or nearly so.
+ //
+ static private void quickSort(Object[] arr, Comparer c, int from, int to) {
+ if (to <= from)
+ return;
+ int mid = (from + to) / 2;
+ if (mid != from)
+ swap(arr, mid, from);
+ Object pivot = arr[from]; // Simple-minded, but reasonable
+ int highestBelowPivot = from - 1;
+ int low = from+1;
+ int high = to;
+ // We now move low and high toward each other, maintaining the
+ // invariants:
+ // arr[i] <= pivot for all i < low
+ // arr[i] > pivot for all i > high
+ // As long as these invariants hold, and every iteration makes
+ // progress, we are safe.
+ while (low <= high) {
+ int cmp = c.compare(arr[low], pivot);
+ if (cmp <= 0) { // arr[low] <= pivot
+ if (cmp < 0) {
+ highestBelowPivot = low;
+ }
+ low++;
+ } else {
+ int c2;
+ for (;;) {
+ // arr[high] > pivot:
+ c2 = c.compare(arr[high], pivot);
+ if (c2 > 0) {
+ high--;
+ if (low > high) {
+ break;
+ }
+ } else {
+ break;
+ }
+ }
+ // At this point, low is never == high, BTW
+ if (low <= high) {
+ swap(arr, low, high);
+ if (c2 < 0) {
+ highestBelowPivot = low;
+ }
+ low++;
+ high--;
+ }
+ }
+ }
+ // At this point, low == high+1
+ // Now we just need to sort from from..highestBelowPivot
+ // and from high+1..to
+ if (highestBelowPivot > from) {
+ // pivot == pivot, so ensure algorithm terminates
+ swap(arr, from, highestBelowPivot);
+ quickSort(arr, c, from, highestBelowPivot-1);
+ }
+ quickSort(arr, c, high+1, to);
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/util/Comparer.java b/test/lib/jdk/test/lib/hprof/util/Comparer.java
new file mode 100644
index 0000000..182f37e
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/util/Comparer.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.util;
+
+/**
+ * Base class for comparison of two objects.
+ * @see VectorSorter
+ *
+ * @author Bill Foote
+ */
+
+abstract public class Comparer {
+
+ /**
+ * @return a number <, == or > 0 depending on lhs compared to rhs
+ * @see java.lang.String.compareTo
+ **/
+ abstract public int compare(Object lhs, Object rhs);
+}
diff --git a/test/lib/jdk/test/lib/hprof/util/CompositeEnumeration.java b/test/lib/jdk/test/lib/hprof/util/CompositeEnumeration.java
new file mode 100644
index 0000000..ddebd0f
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/util/CompositeEnumeration.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.util;
+
+import java.util.Enumeration;
+import java.util.NoSuchElementException;
+import jdk.test.lib.hprof.model.JavaHeapObject;
+
+public class CompositeEnumeration implements Enumeration<JavaHeapObject> {
+ Enumeration<JavaHeapObject> e1;
+ Enumeration<JavaHeapObject> e2;
+
+ public CompositeEnumeration(Enumeration<JavaHeapObject> e1, Enumeration<JavaHeapObject> e2) {
+ this.e1 = e1;
+ this.e2 = e2;
+ }
+
+ public boolean hasMoreElements() {
+ return e1.hasMoreElements() || e2.hasMoreElements();
+ }
+
+ public JavaHeapObject nextElement() {
+ if (e1.hasMoreElements()) {
+ return e1.nextElement();
+ }
+
+ if (e2.hasMoreElements()) {
+ return e2.nextElement();
+ }
+
+ throw new NoSuchElementException();
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/util/Misc.java b/test/lib/jdk/test/lib/hprof/util/Misc.java
new file mode 100644
index 0000000..e654d71
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/util/Misc.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.util;
+import java.util.*;
+
+/**
+ * Miscellaneous functions I couldn't think of a good place to put.
+ *
+ * @author Bill Foote
+ */
+
+
+public class Misc {
+
+ private static char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7',
+ '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
+
+ public final static String toHex(int addr) {
+ char[] buf = new char[8];
+ int i = 0;
+ for (int s = 28; s >= 0; s -= 4) {
+ buf[i++] = digits[(addr >> s) & 0xf];
+ }
+ return "0x" + new String(buf);
+ }
+
+ public final static String toHex(long addr) {
+ return "0x" + Long.toHexString(addr);
+ }
+
+ public final static long parseHex(String value) {
+ long result = 0;
+ if (value.length() < 2 || value.charAt(0) != '0' ||
+ value.charAt(1) != 'x') {
+ return -1L;
+ }
+ for(int i = 2; i < value.length(); i++) {
+ result *= 16;
+ char ch = value.charAt(i);
+ if (ch >= '0' && ch <= '9') {
+ result += (ch - '0');
+ } else if (ch >= 'a' && ch <= 'f') {
+ result += (ch - 'a') + 10;
+ } else if (ch >= 'A' && ch <= 'F') {
+ result += (ch - 'A') + 10;
+ } else {
+ throw new NumberFormatException("" + ch
+ + " is not a valid hex digit");
+ }
+ }
+ return result;
+ }
+
+ public static String encodeHtml(String str) {
+ final int len = str.length();
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < len; i++) {
+ char ch = str.charAt(i);
+ if (ch == '<') {
+ sb.append("&lt;");
+ } else if (ch == '>') {
+ sb.append("&gt;");
+ } else if (ch == '"') {
+ sb.append("&quot;");
+ } else if (ch == '\'') {
+ sb.append("&#039;");
+ } else if (ch == '&') {
+ sb.append("&amp;");
+ } else if (ch < ' ') {
+ sb.append("&#").append((int)ch).append(';');
+ } else {
+ int c = (ch & 0xFFFF);
+ if (c > 127) {
+ sb.append("&#").append(c).append(';');
+ } else {
+ sb.append(ch);
+ }
+ }
+ }
+ return sb.toString();
+ }
+}
diff --git a/test/lib/jdk/test/lib/hprof/util/VectorSorter.java b/test/lib/jdk/test/lib/hprof/util/VectorSorter.java
new file mode 100644
index 0000000..fb2ac13
--- /dev/null
+++ b/test/lib/jdk/test/lib/hprof/util/VectorSorter.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (c) 1997, 2016, 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.
+ */
+
+
+/*
+ * The Original Code is HAT. The Initial Developer of the
+ * Original Code is Bill Foote, with contributions from others
+ * at JavaSoft/Sun.
+ */
+
+package jdk.test.lib.hprof.util;
+import java.util.*;
+
+/**
+ * A singleton utility class that sorts a vector.
+ * <p>
+ * Use:
+ * <pre>
+ *
+ * Vector v = <a vector of, say, String objects>;
+ * VectorSorter.sort(v, new Comparer() {
+ * public int compare(Object lhs, Object rhs) {
+ * return ((String) lhs).compareTo((String) rhs);
+ * }
+ * });
+ * </pre>
+ *
+ * @author Bill Foote
+ */
+
+
+public class VectorSorter {
+
+ /**
+ * Sort the given vector, using c for comparison
+ **/
+ static public void sort(Vector<Object> v, Comparer c) {
+ quickSort(v, c, 0, v.size()-1);
+ }
+
+
+ /**
+ * Sort a vector of strings, using String.compareTo()
+ **/
+ static public void sortVectorOfStrings(Vector<Object> v) {
+ sort(v, new Comparer() {
+ public int compare(Object lhs, Object rhs) {
+ return ((String) lhs).compareTo((String) rhs);
+ }
+ });
+ }
+
+
+ static private void swap(Vector<Object> v, int a, int b) {
+ Object tmp = v.elementAt(a);
+ v.setElementAt(v.elementAt(b), a);
+ v.setElementAt(tmp, b);
+ }
+
+ //
+ // Sorts v between from and to, inclusive. This is a quick, off-the-top-
+ // of-my-head quicksort: I haven't put any thought into optimizing it.
+ // I _did_ put thought into making sure it's safe (it will always
+ // terminate). Worst-case it's O(n^2), but it will usually run in
+ // in O(n log n). It's well-behaved if the list is already sorted,
+ // or nearly so.
+ //
+ static private void quickSort(Vector<Object> v, Comparer c, int from, int to) {
+ if (to <= from)
+ return;
+ int mid = (from + to) / 2;
+ if (mid != from)
+ swap(v, mid, from);
+ Object pivot = v.elementAt(from);
+ // Simple-minded, but reasonable
+ int highestBelowPivot = from - 1;
+ int low = from+1;
+ int high = to;
+ // We now move low and high toward eachother, maintaining the
+ // invariants:
+ // v[i] <= pivot for all i < low
+ // v[i] > pivot for all i > high
+ // As long as these invariants hold, and every iteration makes
+ // progress, we are safe.
+ while (low <= high) {
+ int cmp = c.compare(v.elementAt(low), pivot);
+ if (cmp <= 0) { // v[low] <= pivot
+ if (cmp < 0) {
+ highestBelowPivot = low;
+ }
+ low++;
+ } else {
+ int c2;
+ for (;;) {
+ c2 = c.compare(v.elementAt(high), pivot);
+ // v[high] > pivot:
+ if (c2 > 0) {
+ high--;
+ if (low > high) {
+ break;
+ }
+ } else {
+ break;
+ }
+ }
+ // At this point, low is never == high
+ if (low <= high) {
+ swap(v, low, high);
+ if (c2 < 0) {
+ highestBelowPivot = low;
+ }
+ low++;
+ high--;
+ }
+ }
+ }
+ // Now we just need to sort from from..highestBelowPivot
+ // and from high+1..to
+ if (highestBelowPivot > from) {
+ // pivot == pivot, so ensure algorithm terminates
+ swap(v, from, highestBelowPivot);
+ quickSort(v, c, from, highestBelowPivot-1);
+ }
+ quickSort(v, c, high+1, to);
+ }
+}
diff --git a/test/lib/jdk/test/lib/management/DynamicVMOption.java b/test/lib/jdk/test/lib/management/DynamicVMOption.java
new file mode 100644
index 0000000..786f1d8
--- /dev/null
+++ b/test/lib/jdk/test/lib/management/DynamicVMOption.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2014, 2016, 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 jdk.test.lib.management;
+
+import com.sun.management.HotSpotDiagnosticMXBean;
+import java.lang.management.ManagementFactory;
+
+/**
+ * A utility class to work with VM options which could be altered during
+ * execution.
+ *
+ * This class is a wrapper around {@code com.sun.management.VMOption}.
+ * It provides more convenient interface to read/write the values.
+ *
+ */
+public class DynamicVMOption {
+
+ private final HotSpotDiagnosticMXBean mxBean;
+
+ /**
+ * VM option name, like "MinHeapFreeRatio".
+ */
+ public final String name;
+
+ /**
+ * Creates an instance of DynamicVMOption.
+ *
+ * @param name the VM option name
+ */
+ public DynamicVMOption(String name) {
+ this.name = name;
+ mxBean = ManagementFactory.getPlatformMXBean(HotSpotDiagnosticMXBean.class);
+ }
+
+ /**
+ * Sets a new value for the option.
+ * Trying to set not applicable value will cause IllegalArgumentException.
+ * Behavior with null is undefined, most likely NPE will be thrown.
+ *
+ * @param newValue the value to be set
+ * @see #getValue()
+ * @throws IllegalArgumentException if newValue is not applicable to the option
+ */
+ public final void setValue(String newValue) {
+ mxBean.setVMOption(name, newValue);
+ }
+
+ /**
+ * Returns the value of option.
+ *
+ * @return the current option value
+ * @see #setValue(java.lang.String)
+ */
+ public final String getValue() {
+ return mxBean.getVMOption(name).getValue();
+ }
+
+ /**
+ * Returns true, if option is writable, false otherwise.
+ *
+ * @return true, if option is writable, false otherwise
+ */
+ public final boolean isWriteable() {
+ return mxBean.getVMOption(name).isWriteable();
+ }
+
+ /**
+ * Checks if the given value is applicable for the option.
+ *
+ * This method tries to set the option to the new value. If no exception
+ * has been thrown the value is treated as valid.
+ *
+ * Calling this method will not change the option value. After an attempt
+ * to set a new value, the option will be restored to its previous value.
+ *
+ * @param value the value to verify
+ * @return true if option could be set to the given value
+ */
+ public boolean isValidValue(String value) {
+ boolean isValid = true;
+ String oldValue = getValue();
+ try {
+ setValue(value);
+ } catch (NullPointerException e) {
+ if (value == null) {
+ isValid = false;
+ }
+ } catch (IllegalArgumentException e) {
+ isValid = false;
+ } finally {
+ setValue(oldValue);
+ }
+ return isValid;
+ }
+
+ /**
+ * Returns the value of the given VM option as String.
+ *
+ * This is a simple shortcut for {@code new DynamicVMOption(name).getValue()}
+ *
+ * @param name the name of VM option
+ * @return value as a string
+ * @see #getValue()
+ */
+ public static String getString(String name) {
+ return new DynamicVMOption(name).getValue();
+ }
+
+ /**
+ * Returns the value of the given option as int.
+ *
+ * @param name the name of VM option
+ * @return value parsed as integer
+ * @see #getString(java.lang.String)
+ *
+ */
+ public static int getInt(String name) {
+ return Integer.parseInt(getString(name));
+ }
+
+ /**
+ * Sets the VM option to a new value.
+ *
+ * This is a simple shortcut for {@code new DynamicVMOption(name).setValue(value)}
+ *
+ * @param name the name of VM option
+ * @param value the value to be set
+ * @see #setValue(java.lang.String)
+ */
+ public static void setString(String name, String value) {
+ new DynamicVMOption(name).setValue(value);
+ }
+
+ /**
+ * Sets the VM option value to a new integer value.
+ *
+ * @param name the name of VM option
+ * @param value the integer value to be set
+ * @see #setString(java.lang.String, java.lang.String)
+ */
+ public static void setInt(String name, int value) {
+ new DynamicVMOption(name).setValue(Integer.toString(value));
+ }
+
+}
diff --git a/test/lib/jdk/test/lib/process/ExitCode.java b/test/lib/jdk/test/lib/process/ExitCode.java
new file mode 100644
index 0000000..bb66da1
--- /dev/null
+++ b/test/lib/jdk/test/lib/process/ExitCode.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2014, 2016, 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 jdk.test.lib.process;
+
+/**
+ * Exit code values that could be returned by the JVM.
+ */
+public enum ExitCode {
+ OK(0),
+ FAIL(1),
+ CRASH(134);
+
+ public final int value;
+
+ ExitCode(int value) {
+ this.value = value;
+ }
+}
+
diff --git a/test/lib/jdk/test/lib/process/OutputAnalyzer.java b/test/lib/jdk/test/lib/process/OutputAnalyzer.java
new file mode 100644
index 0000000..572610d
--- /dev/null
+++ b/test/lib/jdk/test/lib/process/OutputAnalyzer.java
@@ -0,0 +1,468 @@
+/*
+ * Copyright (c) 2013, 2016, 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 jdk.test.lib.process;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public final class OutputAnalyzer {
+
+ private final String stdout;
+ private final String stderr;
+ private final int exitValue;
+
+ /**
+ * Create an OutputAnalyzer, a utility class for verifying output and exit
+ * value from a Process
+ *
+ * @param process Process to analyze
+ * @throws IOException If an I/O error occurs.
+ */
+ public OutputAnalyzer(Process process) throws IOException {
+ OutputBuffer output = ProcessTools.getOutput(process);
+ exitValue = process.exitValue();
+ this.stdout = output.getStdout();
+ this.stderr = output.getStderr();
+ }
+
+ /**
+ * Create an OutputAnalyzer, a utility class for verifying output
+ *
+ * @param buf String buffer to analyze
+ */
+ public OutputAnalyzer(String buf) {
+ this(buf, buf);
+ }
+
+ /**
+ * Create an OutputAnalyzer, a utility class for verifying output
+ *
+ * @param stdout stdout buffer to analyze
+ * @param stderr stderr buffer to analyze
+ */
+ public OutputAnalyzer(String stdout, String stderr) {
+ this.stdout = stdout;
+ this.stderr = stderr;
+ exitValue = -1;
+ }
+
+ /**
+ * Verify that the stdout contents of output buffer is empty
+ *
+ * @throws RuntimeException
+ * If stdout was not empty
+ */
+ public void stdoutShouldBeEmpty() {
+ if (!getStdout().isEmpty()) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("stdout was not empty");
+ }
+ }
+
+ /**
+ * Verify that the stderr contents of output buffer is empty
+ *
+ * @throws RuntimeException
+ * If stderr was not empty
+ */
+ public void stderrShouldBeEmpty() {
+ if (!getStderr().isEmpty()) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("stderr was not empty");
+ }
+ }
+
+ /**
+ * Verify that the stdout contents of output buffer is not empty
+ *
+ * @throws RuntimeException
+ * If stdout was empty
+ */
+ public void stdoutShouldNotBeEmpty() {
+ if (getStdout().isEmpty()) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("stdout was empty");
+ }
+ }
+
+ /**
+ * Verify that the stderr contents of output buffer is not empty
+ *
+ * @throws RuntimeException
+ * If stderr was empty
+ */
+ public void stderrShouldNotBeEmpty() {
+ if (getStderr().isEmpty()) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("stderr was empty");
+ }
+ }
+
+ /**
+ * Verify that the stdout and stderr contents of output buffer contains the string
+ *
+ * @param expectedString String that buffer should contain
+ * @throws RuntimeException If the string was not found
+ */
+ public OutputAnalyzer shouldContain(String expectedString) {
+ if (!stdout.contains(expectedString) && !stderr.contains(expectedString)) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + expectedString + "' missing from stdout/stderr \n");
+ }
+ return this;
+ }
+
+ /**
+ * Verify that the stdout contents of output buffer contains the string
+ *
+ * @param expectedString String that buffer should contain
+ * @throws RuntimeException If the string was not found
+ */
+ public OutputAnalyzer stdoutShouldContain(String expectedString) {
+ if (!stdout.contains(expectedString)) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + expectedString + "' missing from stdout \n");
+ }
+ return this;
+ }
+
+ /**
+ * Verify that the stderr contents of output buffer contains the string
+ *
+ * @param expectedString String that buffer should contain
+ * @throws RuntimeException If the string was not found
+ */
+ public OutputAnalyzer stderrShouldContain(String expectedString) {
+ if (!stderr.contains(expectedString)) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + expectedString + "' missing from stderr \n");
+ }
+ return this;
+ }
+
+ /**
+ * Verify that the stdout and stderr contents of output buffer does not contain the string
+ *
+ * @param expectedString String that the buffer should not contain
+ * @throws RuntimeException If the string was found
+ */
+ public OutputAnalyzer shouldNotContain(String notExpectedString) {
+ if (stdout.contains(notExpectedString)) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + notExpectedString + "' found in stdout \n");
+ }
+ if (stderr.contains(notExpectedString)) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + notExpectedString + "' found in stderr \n");
+ }
+ return this;
+ }
+
+ /**
+ * Verify that the stdout and stderr contents of output buffer does not contain the string
+ *
+ * @throws RuntimeException If the string was found
+ */
+ public OutputAnalyzer shouldBeEmpty() {
+ if (!stdout.isEmpty()) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("stdout was not empty");
+ }
+ if (!stderr.isEmpty()) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("stderr was not empty");
+ }
+ return this;
+ }
+
+ /**
+ * Verify that the stdout contents of output buffer does not contain the string
+ *
+ * @param expectedString String that the buffer should not contain
+ * @throws RuntimeException If the string was found
+ */
+ public OutputAnalyzer stdoutShouldNotContain(String notExpectedString) {
+ if (stdout.contains(notExpectedString)) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + notExpectedString + "' found in stdout \n");
+ }
+ return this;
+ }
+
+ /**
+ * Verify that the stderr contents of output buffer does not contain the string
+ *
+ * @param expectedString String that the buffer should not contain
+ * @throws RuntimeException If the string was found
+ */
+ public OutputAnalyzer stderrShouldNotContain(String notExpectedString) {
+ if (stderr.contains(notExpectedString)) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + notExpectedString + "' found in stderr \n");
+ }
+ return this;
+ }
+
+ /**
+ * Verify that the stdout and stderr contents of output buffer matches
+ * the pattern
+ *
+ * @param pattern
+ * @throws RuntimeException If the pattern was not found
+ */
+ public OutputAnalyzer shouldMatch(String pattern) {
+ Matcher stdoutMatcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout);
+ Matcher stderrMatcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stderr);
+ if (!stdoutMatcher.find() && !stderrMatcher.find()) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + pattern
+ + "' missing from stdout/stderr \n");
+ }
+ return this;
+ }
+
+ /**
+ * Verify that the stdout contents of output buffer matches the
+ * pattern
+ *
+ * @param pattern
+ * @throws RuntimeException If the pattern was not found
+ */
+ public OutputAnalyzer stdoutShouldMatch(String pattern) {
+ Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout);
+ if (!matcher.find()) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + pattern
+ + "' missing from stdout \n");
+ }
+ return this;
+ }
+
+ /**
+ * Verify that the stderr contents of output buffer matches the
+ * pattern
+ *
+ * @param pattern
+ * @throws RuntimeException If the pattern was not found
+ */
+ public OutputAnalyzer stderrShouldMatch(String pattern) {
+ Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stderr);
+ if (!matcher.find()) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + pattern
+ + "' missing from stderr \n");
+ }
+ return this;
+ }
+
+ /**
+ * Verify that the stdout and stderr contents of output buffer does not
+ * match the pattern
+ *
+ * @param pattern
+ * @throws RuntimeException If the pattern was found
+ */
+ public OutputAnalyzer shouldNotMatch(String pattern) {
+ Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout);
+ if (matcher.find()) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + pattern
+ + "' found in stdout: '" + matcher.group() + "' \n");
+ }
+ matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stderr);
+ if (matcher.find()) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + pattern
+ + "' found in stderr: '" + matcher.group() + "' \n");
+ }
+ return this;
+ }
+
+ /**
+ * Verify that the stdout contents of output buffer does not match the
+ * pattern
+ *
+ * @param pattern
+ * @throws RuntimeException If the pattern was found
+ */
+ public OutputAnalyzer stdoutShouldNotMatch(String pattern) {
+ Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout);
+ if (matcher.find()) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + pattern
+ + "' found in stdout \n");
+ }
+ return this;
+ }
+
+ /**
+ * Verify that the stderr contents of output buffer does not match the
+ * pattern
+ *
+ * @param pattern
+ * @throws RuntimeException If the pattern was found
+ */
+ public OutputAnalyzer stderrShouldNotMatch(String pattern) {
+ Matcher matcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stderr);
+ if (matcher.find()) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("'" + pattern
+ + "' found in stderr \n");
+ }
+ return this;
+ }
+
+ /**
+ * Get the captured group of the first string matching the pattern.
+ * stderr is searched before stdout.
+ *
+ * @param pattern The multi-line pattern to match
+ * @param group The group to capture
+ * @return The matched string or null if no match was found
+ */
+ public String firstMatch(String pattern, int group) {
+ Matcher stderrMatcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stderr);
+ Matcher stdoutMatcher = Pattern.compile(pattern, Pattern.MULTILINE).matcher(stdout);
+ if (stderrMatcher.find()) {
+ return stderrMatcher.group(group);
+ }
+ if (stdoutMatcher.find()) {
+ return stdoutMatcher.group(group);
+ }
+ return null;
+ }
+
+ /**
+ * Get the first string matching the pattern.
+ * stderr is searched before stdout.
+ *
+ * @param pattern The multi-line pattern to match
+ * @return The matched string or null if no match was found
+ */
+ public String firstMatch(String pattern) {
+ return firstMatch(pattern, 0);
+ }
+
+ /**
+ * Verify the exit value of the process
+ *
+ * @param expectedExitValue Expected exit value from process
+ * @throws RuntimeException If the exit value from the process did not match the expected value
+ */
+ public OutputAnalyzer shouldHaveExitValue(int expectedExitValue) {
+ if (getExitValue() != expectedExitValue) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("Expected to get exit value of ["
+ + expectedExitValue + "]\n");
+ }
+ return this;
+ }
+
+ /**
+ * Verify the exit value of the process
+ *
+ * @param notExpectedExitValue Unexpected exit value from process
+ * @throws RuntimeException If the exit value from the process did match the expected value
+ */
+ public OutputAnalyzer shouldNotHaveExitValue(int notExpectedExitValue) {
+ if (getExitValue() == notExpectedExitValue) {
+ reportDiagnosticSummary();
+ throw new RuntimeException("Unexpected to get exit value of ["
+ + notExpectedExitValue + "]\n");
+ }
+ return this;
+ }
+
+
+ /**
+ * Report summary that will help to diagnose the problem
+ * Currently includes:
+ * - standard input produced by the process under test
+ * - standard output
+ * - exit code
+ * Note: the command line is printed by the ProcessTools
+ */
+ public void reportDiagnosticSummary() {
+ String msg =
+ " stdout: [" + stdout + "];\n" +
+ " stderr: [" + stderr + "]\n" +
+ " exitValue = " + getExitValue() + "\n";
+
+ System.err.println(msg);
+ }
+
+
+ /**
+ * Get the contents of the output buffer (stdout and stderr)
+ *
+ * @return Content of the output buffer
+ */
+ public String getOutput() {
+ return stdout + stderr;
+ }
+
+ /**
+ * Get the contents of the stdout buffer
+ *
+ * @return Content of the stdout buffer
+ */
+ public String getStdout() {
+ return stdout;
+ }
+
+ /**
+ * Get the contents of the stderr buffer
+ *
+ * @return Content of the stderr buffer
+ */
+ public String getStderr() {
+ return stderr;
+ }
+
+ /**
+ * Get the process exit value
+ *
+ * @return Process exit value
+ */
+ public int getExitValue() {
+ return exitValue;
+ }
+
+ /**
+ * Get the contents of the output buffer (stdout and stderr) as list of strings.
+ * Output will be split by newlines.
+ *
+ * @return Contents of the output buffer as list of strings
+ */
+ public List<String> asLines() {
+ return asLines(getOutput());
+ }
+
+ private List<String> asLines(String buffer) {
+ return Arrays.asList(buffer.split("(\\r\\n|\\n|\\r)"));
+ }
+}
diff --git a/test/lib/jdk/test/lib/process/OutputBuffer.java b/test/lib/jdk/test/lib/process/OutputBuffer.java
new file mode 100644
index 0000000..a41e843
--- /dev/null
+++ b/test/lib/jdk/test/lib/process/OutputBuffer.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2013, 2016, 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 jdk.test.lib.process;
+
+public class OutputBuffer {
+ private final String stdout;
+ private final String stderr;
+
+ /**
+ * Create an OutputBuffer, a class for storing and managing stdout and stderr
+ * results separately
+ *
+ * @param stdout stdout result
+ * @param stderr stderr result
+ */
+ public OutputBuffer(String stdout, String stderr) {
+ this.stdout = stdout;
+ this.stderr = stderr;
+ }
+
+ /**
+ * Returns the stdout result
+ *
+ * @return stdout result
+ */
+ public String getStdout() {
+ return stdout;
+ }
+
+ /**
+ * Returns the stderr result
+ *
+ * @return stderr result
+ */
+ public String getStderr() {
+ return stderr;
+ }
+}
diff --git a/test/lib/jdk/test/lib/process/ProcessTools.java b/test/lib/jdk/test/lib/process/ProcessTools.java
new file mode 100644
index 0000000..5066efb
--- /dev/null
+++ b/test/lib/jdk/test/lib/process/ProcessTools.java
@@ -0,0 +1,617 @@
+/*
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * 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 jdk.test.lib.process;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.concurrent.CountDownLatch;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import java.util.function.Predicate;
+import java.util.function.Consumer;
+import java.util.stream.Collectors;
+
+import jdk.test.lib.JDKToolFinder;
+import jdk.test.lib.Platform;
+import jdk.test.lib.Utils;
+
+public final class ProcessTools {
+ private static final class LineForwarder extends StreamPumper.LinePump {
+ private final PrintStream ps;
+ private final String prefix;
+ LineForwarder(String prefix, PrintStream os) {
+ this.ps = os;
+ this.prefix = prefix;
+ }
+ @Override
+ protected void processLine(String line) {
+ ps.println("[" + prefix + "] " + line);
+ }
+ }
+
+ private ProcessTools() {
+ }
+
+ /**
+ * Pumps stdout and stderr from running the process into a String.
+ *
+ * @param processHandler ProcessHandler to run.
+ * @return Output from process.
+ * @throws IOException If an I/O error occurs.
+ */
+ public static OutputBuffer getOutput(ProcessBuilder processBuilder) throws IOException {
+ return getOutput(processBuilder.start());
+ }
+
+ /**
+ * Pumps stdout and stderr the running process into a String.
+ *
+ * @param process Process to pump.
+ * @return Output from process.
+ * @throws IOException If an I/O error occurs.
+ */
+ public static OutputBuffer getOutput(Process process) throws IOException {
+ ByteArrayOutputStream stderrBuffer = new ByteArrayOutputStream();
+ ByteArrayOutputStream stdoutBuffer = new ByteArrayOutputStream();
+ StreamPumper outPumper = new StreamPumper(process.getInputStream(), stdoutBuffer);
+ StreamPumper errPumper = new StreamPumper(process.getErrorStream(), stderrBuffer);
+ Thread outPumperThread = new Thread(outPumper);
+ Thread errPumperThread = new Thread(errPumper);
+
+ outPumperThread.setDaemon(true);
+ errPumperThread.setDaemon(true);
+
+ outPumperThread.start();
+ errPumperThread.start();
+
+ try {
+ process.waitFor();
+ outPumperThread.join();
+ errPumperThread.join();
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ return null;
+ }
+
+ return new OutputBuffer(stdoutBuffer.toString(), stderrBuffer.toString());
+ }
+
+ /**
+ * <p>Starts a process from its builder.</p>
+ * <span>The default redirects of STDOUT and STDERR are started</span>
+ * @param name The process name
+ * @param processBuilder The process builder
+ * @return Returns the initialized process
+ * @throws IOException
+ */
+ public static Process startProcess(String name,
+ ProcessBuilder processBuilder)
+ throws IOException {
+ return startProcess(name, processBuilder, (Consumer<String>)null);
+ }
+
+ /**
+ * <p>Starts a process from its builder.</p>
+ * <span>The default redirects of STDOUT and STDERR are started</span>
+ * <p>It is possible to monitor the in-streams via the provided {@code consumer}
+ * @param name The process name
+ * @param consumer {@linkplain Consumer} instance to process the in-streams
+ * @param processBuilder The process builder
+ * @return Returns the initialized process
+ * @throws IOException
+ */
+ @SuppressWarnings("overloads")
+ public static Process startProcess(String name,
+ ProcessBuilder processBuilder,
+ Consumer<String> consumer)
+ throws IOException {
+ try {
+ return startProcess(name, processBuilder, consumer, null, -1, TimeUnit.NANOSECONDS);
+ } catch (InterruptedException | TimeoutException e) {
+ // will never happen
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * <p>Starts a process from its builder.</p>
+ * <span>The default redirects of STDOUT and STDERR are started</span>
+ * <p>
+ * It is possible to wait for the process to get to a warmed-up state
+ * via {@linkplain Predicate} condition on the STDOUT
+ * </p>
+ * @param name The process name
+ * @param processBuilder The process builder
+ * @param linePredicate The {@linkplain Predicate} to use on the STDOUT
+ * Used to determine the moment the target app is
+ * properly warmed-up.
+ * It can be null - in that case the warmup is skipped.
+ * @param timeout The timeout for the warmup waiting; -1 = no wait; 0 = wait forever
+ * @param unit The timeout {@linkplain TimeUnit}
+ * @return Returns the initialized {@linkplain Process}
+ * @throws IOException
+ * @throws InterruptedException
+ * @throws TimeoutException
+ */
+ public static Process startProcess(String name,
+ ProcessBuilder processBuilder,
+ final Predicate<String> linePredicate,
+ long timeout,
+ TimeUnit unit)
+ throws IOException, InterruptedException, TimeoutException {
+ return startProcess(name, processBuilder, null, linePredicate, timeout, unit);
+ }
+
+ /**
+ * <p>Starts a process from its builder.</p>
+ * <span>The default redirects of STDOUT and STDERR are started</span>
+ * <p>
+ * It is possible to wait for the process to get to a warmed-up state
+ * via {@linkplain Predicate} condition on the STDOUT and monitor the
+ * in-streams via the provided {@linkplain Consumer}
+ * </p>
+ * @param name The process name
+ * @param processBuilder The process builder
+ * @param lineConsumer The {@linkplain Consumer} the lines will be forwarded to
+ * @param linePredicate The {@linkplain Predicate} to use on the STDOUT
+ * Used to determine the moment the target app is
+ * properly warmed-up.
+ * It can be null - in that case the warmup is skipped.
+ * @param timeout The timeout for the warmup waiting; -1 = no wait; 0 = wait forever
+ * @param unit The timeout {@linkplain TimeUnit}
+ * @return Returns the initialized {@linkplain Process}
+ * @throws IOException
+ * @throws InterruptedException
+ * @throws TimeoutException
+ */
+ public static Process startProcess(String name,
+ ProcessBuilder processBuilder,
+ final Consumer<String> lineConsumer,
+ final Predicate<String> linePredicate,
+ long timeout,
+ TimeUnit unit)
+ throws IOException, InterruptedException, TimeoutException {
+ System.out.println("["+name+"]:" + processBuilder.command().stream().collect(Collectors.joining(" ")));
+ Process p = processBuilder.start();
+ StreamPumper stdout = new StreamPumper(p.getInputStream());
+ StreamPumper stderr = new StreamPumper(p.getErrorStream());
+
+ stdout.addPump(new LineForwarder(name, System.out));
+ stderr.addPump(new LineForwarder(name, System.err));
+ if (lineConsumer != null) {
+ StreamPumper.LinePump pump = new StreamPumper.LinePump() {
+ @Override
+ protected void processLine(String line) {
+ lineConsumer.accept(line);
+ }
+ };
+ stdout.addPump(pump);
+ stderr.addPump(pump);
+ }
+
+
+ CountDownLatch latch = new CountDownLatch(1);
+ if (linePredicate != null) {
+ StreamPumper.LinePump pump = new StreamPumper.LinePump() {
+ @Override
+ protected void processLine(String line) {
+ if (latch.getCount() > 0 && linePredicate.test(line)) {
+ latch.countDown();
+ }
+ }
+ };
+ stdout.addPump(pump);
+ stderr.addPump(pump);
+ } else {
+ latch.countDown();
+ }
+ final Future<Void> stdoutTask = stdout.process();
+ final Future<Void> stderrTask = stderr.process();
+
+ try {
+ if (timeout > -1) {
+ if (timeout == 0) {
+ latch.await();
+ } else {
+ if (!latch.await(Utils.adjustTimeout(timeout), unit)) {
+ throw new TimeoutException();
+ }
+ }
+ }
+ } catch (TimeoutException | InterruptedException e) {
+ System.err.println("Failed to start a process (thread dump follows)");
+ for(Map.Entry<Thread, StackTraceElement[]> s : Thread.getAllStackTraces().entrySet()) {
+ printStack(s.getKey(), s.getValue());
+ }
+
+ if (p.isAlive()) {
+ p.destroyForcibly();
+ }
+
+ stdoutTask.cancel(true);
+ stderrTask.cancel(true);
+ throw e;
+ }
+
+ return new ProcessImpl(p, stdoutTask, stderrTask);
+ }
+
+ /**
+ * <p>Starts a process from its builder.</p>
+ * <span>The default redirects of STDOUT and STDERR are started</span>
+ * <p>
+ * It is possible to wait for the process to get to a warmed-up state
+ * via {@linkplain Predicate} condition on the STDOUT. The warm-up will
+ * wait indefinitely.
+ * </p>
+ * @param name The process name
+ * @param processBuilder The process builder
+ * @param linePredicate The {@linkplain Predicate} to use on the STDOUT
+ * Used to determine the moment the target app is
+ * properly warmed-up.
+ * It can be null - in that case the warmup is skipped.
+ * @return Returns the initialized {@linkplain Process}
+ * @throws IOException
+ * @throws InterruptedException
+ * @throws TimeoutException
+ */
+ @SuppressWarnings("overloads")
+ public static Process startProcess(String name,
+ ProcessBuilder processBuilder,
+ final Predicate<String> linePredicate)
+ throws IOException, InterruptedException, TimeoutException {
+ return startProcess(name, processBuilder, linePredicate, 0, TimeUnit.SECONDS);
+ }
+
+ /**
+ * Get the process id of the current running Java process
+ *
+ * @return Process id
+ */
+ public static long getProcessId() throws Exception {
+ return ProcessHandle.current().pid();
+ }
+ /**
+ * Gets the array of strings containing input arguments passed to the VM
+ *
+ * @return arguments
+ */
+ public static String[] getVmInputArgs() {
+ RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
+ List<String> args = runtime.getInputArguments();
+ return args.toArray(new String[args.size()]);
+ }
+
+ /**
+ * Get platform specific VM arguments (e.g. -d64 on 64bit Solaris)
+ *
+ * @return String[] with platform specific arguments, empty if there are
+ * none
+ */
+ public static String[] getPlatformSpecificVMArgs() {
+
+ if (Platform.is64bit() && Platform.isSolaris()) {
+ return new String[] { "-d64" };
+ }
+
+ return new String[] {};
+ }
+
+
+ /**
+ * Create ProcessBuilder using the java launcher from the jdk to be tested and
+ * with any platform specific arguments prepended
+ */
+ public static ProcessBuilder createJavaProcessBuilder(String... command) throws Exception {
+ return createJavaProcessBuilder(false, command);
+ }
+
+ /**
+ * Create ProcessBuilder using the java launcher from the jdk to be tested,
+ * and with any platform specific arguments prepended.
+ *
+ * @param addTestVmAndJavaOptions If true, adds test.vm.opts and test.java.opts
+ * to the java arguments.
+ * @param command Arguments to pass to the java command.
+ * @return The ProcessBuilder instance representing the java command.
+ */
+ public static ProcessBuilder createJavaProcessBuilder(boolean addTestVmAndJavaOptions, String... command) throws Exception {
+ String javapath = JDKToolFinder.getJDKTool("java");
+
+ ArrayList<String> args = new ArrayList<>();
+ args.add(javapath);
+ Collections.addAll(args, getPlatformSpecificVMArgs());
+
+ args.add("-cp");
+ args.add(System.getProperty("java.class.path"));
+
+ if (addTestVmAndJavaOptions) {
+ Collections.addAll(args, Utils.getTestJavaOpts());
+ }
+
+ Collections.addAll(args, command);
+
+ // Reporting
+ StringBuilder cmdLine = new StringBuilder();
+ for (String cmd : args)
+ cmdLine.append(cmd).append(' ');
+ System.out.println("Command line: [" + cmdLine.toString() + "]");
+
+ return new ProcessBuilder(args.toArray(new String[args.size()]));
+ }
+
+ private static void printStack(Thread t, StackTraceElement[] stack) {
+ System.out.println("\t" + t +
+ " stack: (length = " + stack.length + ")");
+ if (t != null) {
+ for (StackTraceElement stack1 : stack) {
+ System.out.println("\t" + stack1);
+ }
+ System.out.println();
+ }
+ }
+
+ /**
+ * Executes a test jvm process, waits for it to finish and returns the process output.
+ * The default jvm options from the test's run command, jtreg, test.vm.opts and test.java.opts, are added.
+ * The java from the test.jdk is used to execute the command.
+ *
+ * The command line will be like:
+ * {test.jdk}/bin/java {test.fromRun.opts} {test.vm.opts} {test.java.opts} cmds
+ *
+ * @param cmds User specifed arguments.
+ * @return The output from the process.
+ */
+ public static OutputAnalyzer executeTestJvmAllArgs(String... cmds) throws Throwable {
+ List<String> argsList = new ArrayList<>();
+ String[] testArgs = getVmInputArgs();
+ Collections.addAll(argsList, testArgs);
+ Collections.addAll(argsList, Utils.addTestJavaOpts(cmds));
+ ProcessBuilder pb = createJavaProcessBuilder(argsList.toArray(new String[argsList.size()]));
+ return executeProcess(pb);
+ }
+
+ /**
+ * Executes a test jvm process, waits for it to finish and returns the process output.
+ * The default jvm options from jtreg, test.vm.opts and test.java.opts, are added.
+ * The java from the test.jdk is used to execute the command.
+ *
+ * The command line will be like:
+ * {test.jdk}/bin/java {test.vm.opts} {test.java.opts} cmds
+ *
+ * The jvm process will have exited before this method returns.
+ *
+ * @param cmds User specifed arguments.
+ * @return The output from the process.
+ */
+ public static OutputAnalyzer executeTestJvm(String... cmds) throws Exception {
+ ProcessBuilder pb = createJavaProcessBuilder(Utils.addTestJavaOpts(cmds));
+ return executeProcess(pb);
+ }
+
+ /**
+ * Executes a process, waits for it to finish and returns the process output.
+ * The process will have exited before this method returns.
+ * @param pb The ProcessBuilder to execute.
+ * @return The {@linkplain OutputAnalyzer} instance wrapping the process.
+ */
+ public static OutputAnalyzer executeProcess(ProcessBuilder pb) throws Exception {
+ OutputAnalyzer output = null;
+ Process p = null;
+ boolean failed = false;
+ try {
+ p = pb.start();
+ output = new OutputAnalyzer(p);
+ p.waitFor();
+
+ return output;
+ } catch (Throwable t) {
+ if (p != null) {
+ p.destroyForcibly().waitFor();
+ }
+
+ failed = true;
+ System.out.println("executeProcess() failed: " + t);
+ throw t;
+ } finally {
+ if (failed) {
+ System.err.println(getProcessLog(pb, output));
+ }
+ }
+ }
+
+ /**
+ * Executes a process, waits for it to finish and returns the process output.
+ *
+ * The process will have exited before this method returns.
+ *
+ * @param cmds The command line to execute.
+ * @return The output from the process.
+ */
+ public static OutputAnalyzer executeProcess(String... cmds) throws Throwable {
+ return executeProcess(new ProcessBuilder(cmds));
+ }
+
+ /**
+ * Used to log command line, stdout, stderr and exit code from an executed process.
+ * @param pb The executed process.
+ * @param output The output from the process.
+ */
+ public static String getProcessLog(ProcessBuilder pb, OutputAnalyzer output) {
+ String stderr = output == null ? "null" : output.getStderr();
+ String stdout = output == null ? "null" : output.getStdout();
+ String exitValue = output == null ? "null": Integer.toString(output.getExitValue());
+ StringBuilder logMsg = new StringBuilder();
+ final String nl = System.getProperty("line.separator");
+ logMsg.append("--- ProcessLog ---" + nl);
+ logMsg.append("cmd: " + getCommandLine(pb) + nl);
+ logMsg.append("exitvalue: " + exitValue + nl);
+ logMsg.append("stderr: " + stderr + nl);
+ logMsg.append("stdout: " + stdout + nl);
+
+ return logMsg.toString();
+ }
+
+ /**
+ * @return The full command line for the ProcessBuilder.
+ */
+ public static String getCommandLine(ProcessBuilder pb) {
+ if (pb == null) {
+ return "null";
+ }
+ StringBuilder cmd = new StringBuilder();
+ for (String s : pb.command()) {
+ cmd.append(s).append(" ");
+ }
+ return cmd.toString().trim();
+ }
+
+ /**
+ * Executes a process, waits for it to finish, prints the process output
+ * to stdout, and returns the process output.
+ *
+ * The process will have exited before this method returns.
+ *
+ * @param cmds The command line to execute.
+ * @return The {@linkplain OutputAnalyzer} instance wrapping the process.
+ */
+ public static OutputAnalyzer executeCommand(String... cmds)
+ throws Throwable {
+ String cmdLine = Arrays.stream(cmds).collect(Collectors.joining(" "));
+ System.out.println("Command line: [" + cmdLine + "]");
+ OutputAnalyzer analyzer = ProcessTools.executeProcess(cmds);
+ System.out.println(analyzer.getOutput());
+ return analyzer;
+ }
+
+ /**
+ * Executes a process, waits for it to finish, prints the process output
+ * to stdout and returns the process output.
+ *
+ * The process will have exited before this method returns.
+ *
+ * @param pb The ProcessBuilder to execute.
+ * @return The {@linkplain OutputAnalyzer} instance wrapping the process.
+ */
+ public static OutputAnalyzer executeCommand(ProcessBuilder pb)
+ throws Throwable {
+ String cmdLine = pb.command().stream().collect(Collectors.joining(" "));
+ System.out.println("Command line: [" + cmdLine + "]");
+ OutputAnalyzer analyzer = ProcessTools.executeProcess(pb);
+ System.out.println(analyzer.getOutput());
+ return analyzer;
+ }
+
+ private static class ProcessImpl extends Process {
+
+ private final Process p;
+ private final Future<Void> stdoutTask;
+ private final Future<Void> stderrTask;
+
+ public ProcessImpl(Process p, Future<Void> stdoutTask, Future<Void> stderrTask) {
+ this.p = p;
+ this.stdoutTask = stdoutTask;
+ this.stderrTask = stderrTask;
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ return p.getOutputStream();
+ }
+
+ @Override
+ public InputStream getInputStream() {
+ return p.getInputStream();
+ }
+
+ @Override
+ public InputStream getErrorStream() {
+ return p.getErrorStream();
+ }
+
+ @Override
+ public int waitFor() throws InterruptedException {
+ int rslt = p.waitFor();
+ waitForStreams();
+ return rslt;
+ }
+
+ @Override
+ public int exitValue() {
+ return p.exitValue();
+ }
+
+ @Override
+ public void destroy() {
+ p.destroy();
+ }
+
+ @Override
+ public long pid() {
+ return p.pid();
+ }
+
+ @Override
+ public boolean isAlive() {
+ return p.isAlive();
+ }
+
+ @Override
+ public Process destroyForcibly() {
+ return p.destroyForcibly();
+ }
+
+ @Override
+ public boolean waitFor(long timeout, TimeUnit unit) throws InterruptedException {
+ boolean rslt = p.waitFor(timeout, unit);
+ if (rslt) {
+ waitForStreams();
+ }
+ return rslt;
+ }
+
+ private void waitForStreams() throws InterruptedException {
+ try {
+ stdoutTask.get();
+ } catch (ExecutionException e) {
+ }
+ try {
+ stderrTask.get();
+ } catch (ExecutionException e) {
+ }
+ }
+ }
+}
diff --git a/test/lib/jdk/test/lib/process/StreamPumper.java b/test/lib/jdk/test/lib/process/StreamPumper.java
new file mode 100644
index 0000000..8dd7f0c
--- /dev/null
+++ b/test/lib/jdk/test/lib/process/StreamPumper.java
@@ -0,0 +1,197 @@
+/*
+ * Copyright (c) 2013, 2016, 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 jdk.test.lib.process;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.concurrent.Future;
+import java.util.concurrent.FutureTask;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+public final class StreamPumper implements Runnable {
+
+ private static final int BUF_SIZE = 256;
+
+ /**
+ * Pump will be called by the StreamPumper to process the incoming data
+ */
+ abstract public static class Pump {
+ abstract void register(StreamPumper d);
+ }
+
+ /**
+ * OutputStream -> Pump adapter
+ */
+ final public static class StreamPump extends Pump {
+ private final OutputStream out;
+ public StreamPump(OutputStream out) {
+ this.out = out;
+ }
+
+ @Override
+ void register(StreamPumper sp) {
+ sp.addOutputStream(out);
+ }
+ }
+
+ /**
+ * Used to process the incoming data line-by-line
+ */
+ abstract public static class LinePump extends Pump {
+ @Override
+ final void register(StreamPumper sp) {
+ sp.addLineProcessor(this);
+ }
+
+ abstract protected void processLine(String line);
+ }
+
+ private final InputStream in;
+ private final Set<OutputStream> outStreams = new HashSet<>();
+ private final Set<LinePump> linePumps = new HashSet<>();
+
+ private final AtomicBoolean processing = new AtomicBoolean(false);
+ private final FutureTask<Void> processingTask = new FutureTask<>(this, null);
+
+ public StreamPumper(InputStream in) {
+ this.in = in;
+ }
+
+ /**
+ * Create a StreamPumper that reads from in and writes to out.
+ *
+ * @param in The stream to read from.
+ * @param out The stream to write to.
+ */
+ public StreamPumper(InputStream in, OutputStream out) {
+ this(in);
+ this.addOutputStream(out);
+ }
+
+ /**
+ * Implements Thread.run(). Continuously read from {@code in} and write to
+ * {@code out} until {@code in} has reached end of stream. Abort on
+ * interruption. Abort on IOExceptions.
+ */
+ @Override
+ public void run() {
+ try (BufferedInputStream is = new BufferedInputStream(in)) {
+ ByteArrayOutputStream lineBos = new ByteArrayOutputStream();
+ byte[] buf = new byte[BUF_SIZE];
+ int len = 0;
+ int linelen = 0;
+
+ while ((len = is.read(buf)) > 0 && !Thread.interrupted()) {
+ for(OutputStream out : outStreams) {
+ out.write(buf, 0, len);
+ }
+ if (!linePumps.isEmpty()) {
+ int i = 0;
+ int lastcrlf = -1;
+ while (i < len) {
+ if (buf[i] == '\n' || buf[i] == '\r') {
+ int bufLinelen = i - lastcrlf - 1;
+ if (bufLinelen > 0) {
+ lineBos.write(buf, lastcrlf + 1, bufLinelen);
+ }
+ linelen += bufLinelen;
+
+ if (linelen > 0) {
+ lineBos.flush();
+ final String line = lineBos.toString();
+ linePumps.stream().forEach((lp) -> {
+ lp.processLine(line);
+ });
+ lineBos.reset();
+ linelen = 0;
+ }
+ lastcrlf = i;
+ }
+
+ i++;
+ }
+ if (lastcrlf == -1) {
+ lineBos.write(buf, 0, len);
+ linelen += len;
+ } else if (lastcrlf < len - 1) {
+ lineBos.write(buf, lastcrlf + 1, len - lastcrlf - 1);
+ linelen += len - lastcrlf - 1;
+ }
+ }
+ }
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ for(OutputStream out : outStreams) {
+ try {
+ out.flush();
+ } catch (IOException e) {}
+ }
+ try {
+ in.close();
+ } catch (IOException e) {}
+ }
+ }
+
+ final void addOutputStream(OutputStream out) {
+ outStreams.add(out);
+ }
+
+ final void addLineProcessor(LinePump lp) {
+ linePumps.add(lp);
+ }
+
+ final public StreamPumper addPump(Pump ... pump) {
+ if (processing.get()) {
+ throw new IllegalStateException("Can not modify pumper while " +
+ "processing is in progress");
+ }
+ for(Pump p : pump) {
+ p.register(this);
+ }
+ return this;
+ }
+
+ final public Future<Void> process() {
+ if (!processing.compareAndSet(false, true)) {
+ throw new IllegalStateException("Can not re-run the processing");
+ }
+ Thread t = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ processingTask.run();
+ }
+ });
+ t.setDaemon(true);
+ t.start();
+
+ return processingTask;
+ }
+}
diff --git a/test/lib/jdk/test/lib/util/Pair.java b/test/lib/jdk/test/lib/util/Pair.java
new file mode 100644
index 0000000..ca29586
--- /dev/null
+++ b/test/lib/jdk/test/lib/util/Pair.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2015, 2016, 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 jdk.test.lib.util;
+
+import java.util.Objects;
+
+/**
+ * Pair - a two element tuple
+ *
+ * @param <F> first type
+ * @param <S> second type
+ */
+public class Pair<F, S> {
+ public final F first;
+ public final S second;
+
+ public Pair(F first, S second) {
+ this.first = first;
+ this.second = second;
+ }
+
+ @Override
+ public String toString() {
+ return "(" + first + ":" + second + ")";
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other instanceof Pair<?, ?>) {
+ Pair<?, ?> otherPair = (Pair<?, ?>) other;
+ return Objects.equals(first, otherPair.first) &&
+ Objects.equals(second, otherPair.second);
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ if (first == null) {
+ return (second == null) ? 0 : second.hashCode();
+ } else if (second == null) {
+ return first.hashCode();
+ } else {
+ return first.hashCode() * 17 + second.hashCode();
+ }
+ }
+}
diff --git a/test/lib/jdk/test/lib/util/Triple.java b/test/lib/jdk/test/lib/util/Triple.java
new file mode 100644
index 0000000..fbc8253
--- /dev/null
+++ b/test/lib/jdk/test/lib/util/Triple.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2015, 2016, 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 jdk.test.lib.util;
+
+import java.util.Objects;
+
+/**
+ * Triple - a three element tuple
+ *
+ * @param <F> first element type
+ * @param <S> second element type
+ * @param <T> third element type
+ */
+public class Triple<F, S, T> {
+ private final Pair<F, Pair<S, T>> container;
+
+ /**
+ * Constructor
+ *
+ * @param first first element of the triple
+ * @param second second element of the triple
+ * @param third third element of the triple
+ */
+ public Triple(F first, S second, T third) {
+ container = new Pair<>(first, new Pair<>(second, third));
+ }
+
+ /**
+ * Gets first element of the triple
+ */
+ public F getFirst() {
+ return container.first;
+ }
+
+ /**
+ * Gets second element of the triple
+ */
+ public S getSecond() {
+ return container.second.first;
+ }
+
+ /**
+ * Gets third element of the triple
+ */
+ public T getThird() {
+ return container.second.second;
+ }
+
+ @Override
+ public int hashCode() {
+ return container.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof Triple<?, ?, ?>) {
+ Triple<?, ?, ?> objTriple = (Triple<?, ?, ?>) obj;
+ return Objects.equals(container.first, objTriple.container.first)
+ && Objects.equals(container.second,
+ objTriple.container.second);
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return "(" + getFirst() + " : " + getSecond() + " : " + getThird() + ")";
+ }
+}
diff --git a/test/lib/sun/hotspot/WhiteBox.java b/test/lib/sun/hotspot/WhiteBox.java
new file mode 100644
index 0000000..b04735f
--- /dev/null
+++ b/test/lib/sun/hotspot/WhiteBox.java
@@ -0,0 +1,497 @@
+/*
+ * Copyright (c) 2012, 2016, 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.hotspot;
+
+import java.lang.management.MemoryUsage;
+import java.lang.reflect.Executable;
+import java.util.Arrays;
+import java.util.List;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+import java.security.BasicPermission;
+import java.util.Objects;
+
+import sun.hotspot.parser.DiagnosticCommand;
+
+public class WhiteBox {
+ @SuppressWarnings("serial")
+ public static class WhiteBoxPermission extends BasicPermission {
+ public WhiteBoxPermission(String s) {
+ super(s);
+ }
+ }
+
+ private WhiteBox() {}
+ private static final WhiteBox instance = new WhiteBox();
+ private static native void registerNatives();
+
+ /**
+ * Returns the singleton WhiteBox instance.
+ *
+ * The returned WhiteBox object should be carefully guarded
+ * by the caller, since it can be used to read and write data
+ * at arbitrary memory addresses. It must never be passed to
+ * untrusted code.
+ */
+ public synchronized static WhiteBox getWhiteBox() {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null) {
+ sm.checkPermission(new WhiteBoxPermission("getInstance"));
+ }
+ return instance;
+ }
+
+ static {
+ registerNatives();
+ }
+
+ // Get the maximum heap size supporting COOPs
+ public native long getCompressedOopsMaxHeapSize();
+ // Arguments
+ public native void printHeapSizes();
+
+ // Memory
+ private native long getObjectAddress0(Object o);
+ public long getObjectAddress(Object o) {
+ Objects.requireNonNull(o);
+ return getObjectAddress0(o);
+ }
+
+ public native int getHeapOopSize();
+ public native int getVMPageSize();
+ public native long getVMAllocationGranularity();
+ public native long getVMLargePageSize();
+ public native long getHeapSpaceAlignment();
+ public native long getHeapAlignment();
+
+ private native boolean isObjectInOldGen0(Object o);
+ public boolean isObjectInOldGen(Object o) {
+ Objects.requireNonNull(o);
+ return isObjectInOldGen0(o);
+ }
+
+ private native long getObjectSize0(Object o);
+ public long getObjectSize(Object o) {
+ Objects.requireNonNull(o);
+ return getObjectSize0(o);
+ }
+
+ // Runtime
+ // Make sure class name is in the correct format
+ public boolean isClassAlive(String name) {
+ return isClassAlive0(name.replace('.', '/'));
+ }
+ private native boolean isClassAlive0(String name);
+
+ private native boolean isMonitorInflated0(Object obj);
+ public boolean isMonitorInflated(Object obj) {
+ Objects.requireNonNull(obj);
+ return isMonitorInflated0(obj);
+ }
+
+ public native void forceSafepoint();
+
+ private native long getConstantPool0(Class<?> aClass);
+ public long getConstantPool(Class<?> aClass) {
+ Objects.requireNonNull(aClass);
+ return getConstantPool0(aClass);
+ }
+
+ private native int getConstantPoolCacheIndexTag0();
+ public int getConstantPoolCacheIndexTag() {
+ return getConstantPoolCacheIndexTag0();
+ }
+
+ private native int getConstantPoolCacheLength0(Class<?> aClass);
+ public int getConstantPoolCacheLength(Class<?> aClass) {
+ Objects.requireNonNull(aClass);
+ return getConstantPoolCacheLength0(aClass);
+ }
+
+ private native int remapInstructionOperandFromCPCache0(Class<?> aClass, int index);
+ public int remapInstructionOperandFromCPCache(Class<?> aClass, int index) {
+ Objects.requireNonNull(aClass);
+ return remapInstructionOperandFromCPCache0(aClass, index);
+ }
+
+ private native int encodeConstantPoolIndyIndex0(int index);
+ public int encodeConstantPoolIndyIndex(int index) {
+ return encodeConstantPoolIndyIndex0(index);
+ }
+
+ // JVMTI
+ private native void addToBootstrapClassLoaderSearch0(String segment);
+ public void addToBootstrapClassLoaderSearch(String segment){
+ Objects.requireNonNull(segment);
+ addToBootstrapClassLoaderSearch0(segment);
+ }
+
+ private native void addToSystemClassLoaderSearch0(String segment);
+ public void addToSystemClassLoaderSearch(String segment) {
+ Objects.requireNonNull(segment);
+ addToSystemClassLoaderSearch0(segment);
+ }
+
+ // G1
+ public native boolean g1InConcurrentMark();
+ private native boolean g1IsHumongous0(Object o);
+ public boolean g1IsHumongous(Object o) {
+ Objects.requireNonNull(o);
+ return g1IsHumongous0(o);
+ }
+
+ private native boolean g1BelongsToHumongousRegion0(long adr);
+ public boolean g1BelongsToHumongousRegion(long adr) {
+ if (adr == 0) {
+ throw new IllegalArgumentException("adr argument should not be null");
+ }
+ return g1BelongsToHumongousRegion0(adr);
+ }
+
+
+ private native boolean g1BelongsToFreeRegion0(long adr);
+ public boolean g1BelongsToFreeRegion(long adr) {
+ if (adr == 0) {
+ throw new IllegalArgumentException("adr argument should not be null");
+ }
+ return g1BelongsToFreeRegion0(adr);
+ }
+
+ public native long g1NumMaxRegions();
+ public native long g1NumFreeRegions();
+ public native int g1RegionSize();
+ public native MemoryUsage g1AuxiliaryMemoryUsage();
+ private native Object[] parseCommandLine0(String commandline, char delim, DiagnosticCommand[] args);
+ public Object[] parseCommandLine(String commandline, char delim, DiagnosticCommand[] args) {
+ Objects.requireNonNull(args);
+ return parseCommandLine0(commandline, delim, args);
+ }
+
+ // Parallel GC
+ public native long psVirtualSpaceAlignment();
+ public native long psHeapGenerationAlignment();
+
+ /**
+ * Enumerates old regions with liveness less than specified and produces some statistics
+ * @param liveness percent of region's liveness (live_objects / total_region_size * 100).
+ * @return long[3] array where long[0] - total count of old regions
+ * long[1] - total memory of old regions
+ * long[2] - lowest estimation of total memory of old regions to be freed (non-full
+ * regions are not included)
+ */
+ public native long[] g1GetMixedGCInfo(int liveness);
+
+ // NMT
+ public native long NMTMalloc(long size);
+ public native void NMTFree(long mem);
+ public native long NMTReserveMemory(long size);
+ public native void NMTCommitMemory(long addr, long size);
+ public native void NMTUncommitMemory(long addr, long size);
+ public native void NMTReleaseMemory(long addr, long size);
+ public native long NMTMallocWithPseudoStack(long size, int index);
+ public native boolean NMTChangeTrackingLevel();
+ public native int NMTGetHashSize();
+
+ // Compiler
+ public native int matchesMethod(Executable method, String pattern);
+ public native int matchesInline(Executable method, String pattern);
+ public native boolean shouldPrintAssembly(Executable method, int comp_level);
+ public native int deoptimizeFrames(boolean makeNotEntrant);
+ public native void deoptimizeAll();
+
+ public boolean isMethodCompiled(Executable method) {
+ return isMethodCompiled(method, false /*not osr*/);
+ }
+ private native boolean isMethodCompiled0(Executable method, boolean isOsr);
+ public boolean isMethodCompiled(Executable method, boolean isOsr){
+ Objects.requireNonNull(method);
+ return isMethodCompiled0(method, isOsr);
+ }
+ public boolean isMethodCompilable(Executable method) {
+ return isMethodCompilable(method, -2 /*any*/);
+ }
+ public boolean isMethodCompilable(Executable method, int compLevel) {
+ return isMethodCompilable(method, compLevel, false /*not osr*/);
+ }
+ private native boolean isMethodCompilable0(Executable method, int compLevel, boolean isOsr);
+ public boolean isMethodCompilable(Executable method, int compLevel, boolean isOsr) {
+ Objects.requireNonNull(method);
+ return isMethodCompilable0(method, compLevel, isOsr);
+ }
+ private native boolean isMethodQueuedForCompilation0(Executable method);
+ public boolean isMethodQueuedForCompilation(Executable method) {
+ Objects.requireNonNull(method);
+ return isMethodQueuedForCompilation0(method);
+ }
+ // Determine if the compiler corresponding to the compilation level 'compLevel'
+ // and to the compilation context 'compilation_context' provides an intrinsic
+ // for the method 'method'. An intrinsic is available for method 'method' if:
+ // - the intrinsic is enabled (by using the appropriate command-line flag) and
+ // - the platform on which the VM is running provides the instructions necessary
+ // for the compiler to generate the intrinsic code.
+ //
+ // The compilation context is related to using the DisableIntrinsic flag on a
+ // per-method level, see hotspot/src/share/vm/compiler/abstractCompiler.hpp
+ // for more details.
+ public boolean isIntrinsicAvailable(Executable method,
+ Executable compilationContext,
+ int compLevel) {
+ Objects.requireNonNull(method);
+ return isIntrinsicAvailable0(method, compilationContext, compLevel);
+ }
+ // If usage of the DisableIntrinsic flag is not expected (or the usage can be ignored),
+ // use the below method that does not require the compilation context as argument.
+ public boolean isIntrinsicAvailable(Executable method, int compLevel) {
+ return isIntrinsicAvailable(method, null, compLevel);
+ }
+ private native boolean isIntrinsicAvailable0(Executable method,
+ Executable compilationContext,
+ int compLevel);
+ public int deoptimizeMethod(Executable method) {
+ return deoptimizeMethod(method, false /*not osr*/);
+ }
+ private native int deoptimizeMethod0(Executable method, boolean isOsr);
+ public int deoptimizeMethod(Executable method, boolean isOsr) {
+ Objects.requireNonNull(method);
+ return deoptimizeMethod0(method, isOsr);
+ }
+ public void makeMethodNotCompilable(Executable method) {
+ makeMethodNotCompilable(method, -2 /*any*/);
+ }
+ public void makeMethodNotCompilable(Executable method, int compLevel) {
+ makeMethodNotCompilable(method, compLevel, false /*not osr*/);
+ }
+ private native void makeMethodNotCompilable0(Executable method, int compLevel, boolean isOsr);
+ public void makeMethodNotCompilable(Executable method, int compLevel, boolean isOsr) {
+ Objects.requireNonNull(method);
+ makeMethodNotCompilable0(method, compLevel, isOsr);
+ }
+ public int getMethodCompilationLevel(Executable method) {
+ return getMethodCompilationLevel(method, false /*not ost*/);
+ }
+ private native int getMethodCompilationLevel0(Executable method, boolean isOsr);
+ public int getMethodCompilationLevel(Executable method, boolean isOsr) {
+ Objects.requireNonNull(method);
+ return getMethodCompilationLevel0(method, isOsr);
+ }
+ private native boolean testSetDontInlineMethod0(Executable method, boolean value);
+ public boolean testSetDontInlineMethod(Executable method, boolean value) {
+ Objects.requireNonNull(method);
+ return testSetDontInlineMethod0(method, value);
+ }
+ public int getCompileQueuesSize() {
+ return getCompileQueueSize(-2 /*any*/);
+ }
+ public native int getCompileQueueSize(int compLevel);
+ private native boolean testSetForceInlineMethod0(Executable method, boolean value);
+ public boolean testSetForceInlineMethod(Executable method, boolean value) {
+ Objects.requireNonNull(method);
+ return testSetForceInlineMethod0(method, value);
+ }
+ public boolean enqueueMethodForCompilation(Executable method, int compLevel) {
+ return enqueueMethodForCompilation(method, compLevel, -1 /*InvocationEntryBci*/);
+ }
+ private native boolean enqueueMethodForCompilation0(Executable method, int compLevel, int entry_bci);
+ public boolean enqueueMethodForCompilation(Executable method, int compLevel, int entry_bci) {
+ Objects.requireNonNull(method);
+ return enqueueMethodForCompilation0(method, compLevel, entry_bci);
+ }
+ private native boolean enqueueInitializerForCompilation0(Class<?> aClass, int compLevel);
+ public boolean enqueueInitializerForCompilation(Class<?> aClass, int compLevel) {
+ Objects.requireNonNull(aClass);
+ return enqueueInitializerForCompilation0(aClass, compLevel);
+ }
+ private native void clearMethodState0(Executable method);
+ public void clearMethodState(Executable method) {
+ Objects.requireNonNull(method);
+ clearMethodState0(method);
+ }
+ public native void lockCompilation();
+ public native void unlockCompilation();
+ private native int getMethodEntryBci0(Executable method);
+ public int getMethodEntryBci(Executable method) {
+ Objects.requireNonNull(method);
+ return getMethodEntryBci0(method);
+ }
+ private native Object[] getNMethod0(Executable method, boolean isOsr);
+ public Object[] getNMethod(Executable method, boolean isOsr) {
+ Objects.requireNonNull(method);
+ return getNMethod0(method, isOsr);
+ }
+ public native long allocateCodeBlob(int size, int type);
+ public long allocateCodeBlob(long size, int type) {
+ int intSize = (int) size;
+ if ((long) intSize != size || size < 0) {
+ throw new IllegalArgumentException(
+ "size argument has illegal value " + size);
+ }
+ return allocateCodeBlob( intSize, type);
+ }
+ public native void freeCodeBlob(long addr);
+ public native void forceNMethodSweep();
+ public native Object[] getCodeHeapEntries(int type);
+ public native int getCompilationActivityMode();
+ private native long getMethodData0(Executable method);
+ public long getMethodData(Executable method) {
+ Objects.requireNonNull(method);
+ return getMethodData0(method);
+ }
+ public native Object[] getCodeBlob(long addr);
+
+ private native void clearInlineCaches0(boolean preserve_static_stubs);
+ public void clearInlineCaches() {
+ clearInlineCaches0(false);
+ }
+ public void clearInlineCaches(boolean preserve_static_stubs) {
+ clearInlineCaches0(preserve_static_stubs);
+ }
+
+ // Intered strings
+ public native boolean isInStringTable(String str);
+
+ // Memory
+ public native void readReservedMemory();
+ public native long allocateMetaspace(ClassLoader classLoader, long size);
+ public native void freeMetaspace(ClassLoader classLoader, long addr, long size);
+ public native long incMetaspaceCapacityUntilGC(long increment);
+ public native long metaspaceCapacityUntilGC();
+ public native boolean metaspaceShouldConcurrentCollect();
+
+ // Don't use these methods directly
+ // Use sun.hotspot.gc.GC class instead.
+ public native int currentGC();
+ public native int allSupportedGC();
+ public native boolean gcSelectedByErgo();
+
+ // Force Young GC
+ public native void youngGC();
+
+ // Force Full GC
+ public native void fullGC();
+
+ // Method tries to start concurrent mark cycle.
+ // It returns false if CM Thread is always in concurrent cycle.
+ public native boolean g1StartConcMarkCycle();
+
+ // Tests on ReservedSpace/VirtualSpace classes
+ public native int stressVirtualSpaceResize(long reservedSpaceSize, long magnitude, long iterations);
+ public native void runMemoryUnitTests();
+ public native void readFromNoaccessArea();
+ public native long getThreadStackSize();
+ public native long getThreadRemainingStackSize();
+
+ // CPU features
+ public native String getCPUFeatures();
+
+ // Native extensions
+ public native long getHeapUsageForContext(int context);
+ public native long getHeapRegionCountForContext(int context);
+ private native int getContextForObject0(Object obj);
+ public int getContextForObject(Object obj) {
+ Objects.requireNonNull(obj);
+ return getContextForObject0(obj);
+ }
+ public native void printRegionInfo(int context);
+
+ // VM flags
+ public native boolean isConstantVMFlag(String name);
+ public native boolean isLockedVMFlag(String name);
+ public native void setBooleanVMFlag(String name, boolean value);
+ public native void setIntVMFlag(String name, long value);
+ public native void setUintVMFlag(String name, long value);
+ public native void setIntxVMFlag(String name, long value);
+ public native void setUintxVMFlag(String name, long value);
+ public native void setUint64VMFlag(String name, long value);
+ public native void setSizeTVMFlag(String name, long value);
+ public native void setStringVMFlag(String name, String value);
+ public native void setDoubleVMFlag(String name, double value);
+ public native Boolean getBooleanVMFlag(String name);
+ public native Long getIntVMFlag(String name);
+ public native Long getUintVMFlag(String name);
+ public native Long getIntxVMFlag(String name);
+ public native Long getUintxVMFlag(String name);
+ public native Long getUint64VMFlag(String name);
+ public native Long getSizeTVMFlag(String name);
+ public native String getStringVMFlag(String name);
+ public native Double getDoubleVMFlag(String name);
+ private final List<Function<String,Object>> flagsGetters = Arrays.asList(
+ this::getBooleanVMFlag, this::getIntVMFlag, this::getUintVMFlag,
+ this::getIntxVMFlag, this::getUintxVMFlag, this::getUint64VMFlag,
+ this::getSizeTVMFlag, this::getStringVMFlag, this::getDoubleVMFlag);
+
+ public Object getVMFlag(String name) {
+ return flagsGetters.stream()
+ .map(f -> f.apply(name))
+ .filter(x -> x != null)
+ .findAny()
+ .orElse(null);
+ }
+
+ // Jigsaw
+ public native void DefineModule(Object module, String version, String location,
+ Object[] packages);
+ public native void AddModuleExports(Object from_module, String pkg, Object to_module);
+ public native void AddReadsModule(Object from_module, Object source_module);
+ public native void AddModuleExportsToAllUnnamed(Object module, String pkg);
+ public native void AddModuleExportsToAll(Object module, String pkg);
+ public native Object GetModuleByPackageName(Object ldr, String pkg);
+
+ public native int getOffsetForName0(String name);
+ public int getOffsetForName(String name) throws Exception {
+ int offset = getOffsetForName0(name);
+ if (offset == -1) {
+ throw new RuntimeException(name + " not found");
+ }
+ return offset;
+ }
+ public native Boolean getMethodBooleanOption(Executable method, String name);
+ public native Long getMethodIntxOption(Executable method, String name);
+ public native Long getMethodUintxOption(Executable method, String name);
+ public native Double getMethodDoubleOption(Executable method, String name);
+ public native String getMethodStringOption(Executable method, String name);
+ private final List<BiFunction<Executable,String,Object>> methodOptionGetters
+ = Arrays.asList(this::getMethodBooleanOption, this::getMethodIntxOption,
+ this::getMethodUintxOption, this::getMethodDoubleOption,
+ this::getMethodStringOption);
+
+ public Object getMethodOption(Executable method, String name) {
+ return methodOptionGetters.stream()
+ .map(f -> f.apply(method, name))
+ .filter(x -> x != null)
+ .findAny()
+ .orElse(null);
+ }
+
+ // Safepoint Checking
+ public native void assertMatchingSafepointCalls(boolean mutexSafepointValue, boolean attemptedNoSafepointValue);
+
+ // Sharing
+ public native boolean isShared(Object o);
+ public native boolean isSharedClass(Class<?> c);
+ public native boolean areSharedStringsIgnored();
+
+ // Compiler Directive
+ public native int addCompilerDirective(String compDirect);
+ public native void removeCompilerDirective(int count);
+}
diff --git a/test/lib/sun/hotspot/code/BlobType.java b/test/lib/sun/hotspot/code/BlobType.java
new file mode 100644
index 0000000..4b5a1e1
--- /dev/null
+++ b/test/lib/sun/hotspot/code/BlobType.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2014, 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.hotspot.code;
+
+import java.lang.management.ManagementFactory;
+import java.lang.management.MemoryPoolMXBean;
+import java.util.EnumSet;
+
+import sun.hotspot.WhiteBox;
+
+public enum BlobType {
+ // Execution level 1 and 4 (non-profiled) nmethods (including native nmethods)
+ MethodNonProfiled(0, "CodeHeap 'non-profiled nmethods'", "NonProfiledCodeHeapSize") {
+ @Override
+ public boolean allowTypeWhenOverflow(BlobType type) {
+ return super.allowTypeWhenOverflow(type)
+ || type == BlobType.MethodProfiled;
+ }
+ },
+ // Execution level 2 and 3 (profiled) nmethods
+ MethodProfiled(1, "CodeHeap 'profiled nmethods'", "ProfiledCodeHeapSize") {
+ @Override
+ public boolean allowTypeWhenOverflow(BlobType type) {
+ return super.allowTypeWhenOverflow(type)
+ || type == BlobType.MethodNonProfiled;
+ }
+ },
+ // Non-nmethods like Buffers, Adapters and Runtime Stubs
+ NonNMethod(2, "CodeHeap 'non-nmethods'", "NonNMethodCodeHeapSize") {
+ @Override
+ public boolean allowTypeWhenOverflow(BlobType type) {
+ return super.allowTypeWhenOverflow(type)
+ || type == BlobType.MethodNonProfiled
+ || type == BlobType.MethodProfiled;
+ }
+ },
+ // All types (No code cache segmentation)
+ All(3, "CodeCache", "ReservedCodeCacheSize");
+
+ public final int id;
+ public final String sizeOptionName;
+ public final String beanName;
+
+ private BlobType(int id, String beanName, String sizeOptionName) {
+ this.id = id;
+ this.beanName = beanName;
+ this.sizeOptionName = sizeOptionName;
+ }
+
+ public MemoryPoolMXBean getMemoryPool() {
+ for (MemoryPoolMXBean bean : ManagementFactory.getMemoryPoolMXBeans()) {
+ String name = bean.getName();
+ if (beanName.equals(name)) {
+ return bean;
+ }
+ }
+ return null;
+ }
+
+ public boolean allowTypeWhenOverflow(BlobType type) {
+ return type == this;
+ }
+
+ public static EnumSet<BlobType> getAvailable() {
+ WhiteBox whiteBox = WhiteBox.getWhiteBox();
+ if (!whiteBox.getBooleanVMFlag("SegmentedCodeCache")) {
+ // only All for non segmented world
+ return EnumSet.of(All);
+ }
+ if (System.getProperty("java.vm.info").startsWith("interpreted ")) {
+ // only NonNMethod for -Xint
+ return EnumSet.of(NonNMethod);
+ }
+
+ EnumSet<BlobType> result = EnumSet.complementOf(EnumSet.of(All));
+ if (!whiteBox.getBooleanVMFlag("TieredCompilation")
+ || whiteBox.getIntxVMFlag("TieredStopAtLevel") <= 1) {
+ // there is no MethodProfiled in non tiered world or pure C1
+ result.remove(MethodProfiled);
+ }
+ return result;
+ }
+
+ public long getSize() {
+ return WhiteBox.getWhiteBox().getUintxVMFlag(sizeOptionName);
+ }
+}
diff --git a/test/lib/sun/hotspot/code/CodeBlob.java b/test/lib/sun/hotspot/code/CodeBlob.java
new file mode 100644
index 0000000..2c90729
--- /dev/null
+++ b/test/lib/sun/hotspot/code/CodeBlob.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2014, 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.hotspot.code;
+
+import sun.hotspot.WhiteBox;
+
+public class CodeBlob {
+ private static final WhiteBox WB = WhiteBox.getWhiteBox();
+ public static CodeBlob[] getCodeBlobs(BlobType type) {
+ Object[] obj = WB.getCodeHeapEntries(type.id);
+ if (obj == null) {
+ return null;
+ }
+ CodeBlob[] result = new CodeBlob[obj.length];
+ for (int i = 0, n = result.length; i < n; ++i) {
+ result[i] = new CodeBlob((Object[]) obj[i]);
+ }
+ return result;
+ }
+ public static CodeBlob getCodeBlob(long addr) {
+ Object[] obj = WB.getCodeBlob(addr);
+ if (obj == null) {
+ return null;
+ }
+ return new CodeBlob(obj);
+ }
+ protected CodeBlob(Object[] obj) {
+ assert obj.length == 4;
+ name = (String) obj[0];
+ size = (Integer) obj[1];
+ int blob_type_index = (Integer) obj[2];
+ if (blob_type_index == -1) { // AOT
+ code_blob_type = null;
+ } else {
+ code_blob_type = BlobType.values()[blob_type_index];
+ assert code_blob_type.id == (Integer) obj[2];
+ }
+ address = (Long) obj[3];
+ }
+ public final String name;
+ public final int size;
+ public final BlobType code_blob_type;
+ public final long address;
+ @Override
+ public String toString() {
+ return "CodeBlob{"
+ + "name=" + name
+ + ", size=" + size
+ + ", code_blob_type=" + code_blob_type
+ + ", address=" + address
+ + '}';
+ }
+}
diff --git a/test/lib/sun/hotspot/code/NMethod.java b/test/lib/sun/hotspot/code/NMethod.java
new file mode 100644
index 0000000..f7ebf75
--- /dev/null
+++ b/test/lib/sun/hotspot/code/NMethod.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2014, 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.hotspot.code;
+
+import java.lang.reflect.Executable;
+import sun.hotspot.WhiteBox;
+
+public class NMethod extends CodeBlob {
+ private static final WhiteBox wb = WhiteBox.getWhiteBox();
+ public static NMethod get(Executable method, boolean isOsr) {
+ Object[] obj = wb.getNMethod(method, isOsr);
+ return obj == null ? null : new NMethod(obj);
+ }
+ private NMethod(Object[] obj) {
+ super((Object[])obj[0]);
+ assert obj.length == 5;
+ comp_level = (Integer) obj[1];
+ insts = (byte[]) obj[2];
+ compile_id = (Integer) obj[3];
+ entry_point = (Long) obj[4];
+ }
+ public final byte[] insts;
+ public final int comp_level;
+ public final int compile_id;
+ public final long entry_point;
+
+ @Override
+ public String toString() {
+ return "NMethod{"
+ + super.toString()
+ + ", insts=" + insts
+ + ", comp_level=" + comp_level
+ + ", compile_id=" + compile_id
+ + ", entry_point=" + entry_point
+ + '}';
+ }
+}
diff --git a/test/lib/sun/hotspot/cpuinfo/CPUInfo.java b/test/lib/sun/hotspot/cpuinfo/CPUInfo.java
new file mode 100644
index 0000000..0c4f96b
--- /dev/null
+++ b/test/lib/sun/hotspot/cpuinfo/CPUInfo.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2014, 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.hotspot.cpuinfo;
+
+import java.util.List;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+
+import sun.hotspot.WhiteBox;
+
+/**
+ * Information about CPU on test box.
+ *
+ * CPUInfo uses WhiteBox to gather information,
+ * so WhiteBox class should be added to bootclasspath
+ * and option -XX:+WhiteBoxAPI should expclicetly
+ * specified on command line.
+ */
+public class CPUInfo {
+
+ private static final List<String> features;
+ private static final String additionalCPUInfo;
+
+ static {
+ WhiteBox wb = WhiteBox.getWhiteBox();
+
+ Pattern additionalCPUInfoRE =
+ Pattern.compile("([^(]*\\([^)]*\\)[^,]*),\\s*");
+
+ String cpuFeaturesString = wb.getCPUFeatures();
+ Matcher matcher = additionalCPUInfoRE.matcher(cpuFeaturesString);
+ if (matcher.find()) {
+ additionalCPUInfo = matcher.group(1);
+ } else {
+ additionalCPUInfo = "";
+ }
+ String splittedFeatures[] = matcher.replaceAll("").split("(, )| ");
+
+ features = Collections.unmodifiableList(Arrays.
+ asList(splittedFeatures));
+ }
+
+ /**
+ * Get additional information about CPU.
+ * For example, on X86 in will be family/model/stepping
+ * and number of cores.
+ *
+ * @return additional CPU info
+ */
+ public static String getAdditionalCPUInfo() {
+ return additionalCPUInfo;
+ }
+
+ /**
+ * Get all known features supported by CPU.
+ *
+ * @return unmodifiable list with names of all known features
+ * supported by CPU.
+ */
+ public static List<String> getFeatures() {
+ return features;
+ }
+
+ /**
+ * Check if some feature is supported by CPU.
+ *
+ * @param feature Name of feature to be tested.
+ * @return <b>true</b> if tested feature is supported by CPU.
+ */
+ public static boolean hasFeature(String feature) {
+ return features.contains(feature.toLowerCase());
+ }
+}
diff --git a/test/lib/sun/hotspot/gc/GC.java b/test/lib/sun/hotspot/gc/GC.java
new file mode 100644
index 0000000..0fcc322
--- /dev/null
+++ b/test/lib/sun/hotspot/gc/GC.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2016, 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.hotspot.gc;
+
+import java.util.ArrayList;
+import java.util.List;
+import sun.hotspot.WhiteBox;
+
+/**
+ * API to obtain information about selected and supported Garbage Collectors
+ * retrieved from the VM with the WhiteBox API.
+ */
+public enum GC {
+ Serial(1),
+ Parallel(2),
+ ConcMarkSweep(4),
+ G1(8);
+
+ private static final GC CURRENT_GC;
+ private static final int ALL_GC_CODES;
+ private static final boolean IS_BY_ERGO;
+ static {
+ WhiteBox WB = WhiteBox.getWhiteBox();
+ ALL_GC_CODES = WB.allSupportedGC();
+ IS_BY_ERGO = WB.gcSelectedByErgo();
+
+ int currentCode = WB.currentGC();
+ GC tmp = null;
+ for (GC gc: GC.values()) {
+ if (gc.code == currentCode) {
+ tmp = gc;
+ break;
+ }
+ }
+ if (tmp == null) {
+ throw new Error("Unknown current GC code " + currentCode);
+ }
+ CURRENT_GC = tmp;
+ }
+
+ private final int code;
+ private GC(int code) {
+ this.code = code;
+ }
+
+ /**
+ * @return true if the collector is supported by the VM, false otherwise.
+ */
+ public boolean isSupported() {
+ return (ALL_GC_CODES & code) != 0;
+ }
+
+
+ /**
+ * @return the current collector used by VM.
+ */
+ public static GC current() {
+ return CURRENT_GC;
+ }
+
+ /**
+ * @return true if GC was selected by ergonomic, false if specified
+ * explicitly by the command line flag.
+ */
+ public static boolean currentSetByErgo() {
+ return IS_BY_ERGO;
+ }
+
+ /**
+ * @return List of collectors supported by the VM.
+ */
+ public static List<GC> allSupported() {
+ List<GC> list = new ArrayList<>();
+ for (GC gc: GC.values()) {
+ if (gc.isSupported()) {
+ list.add(gc);
+ }
+ }
+ return list;
+ }
+}
+
diff --git a/test/lib/sun/hotspot/parser/DiagnosticCommand.java b/test/lib/sun/hotspot/parser/DiagnosticCommand.java
new file mode 100644
index 0000000..1ad6217
--- /dev/null
+++ b/test/lib/sun/hotspot/parser/DiagnosticCommand.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2012, 2014, 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.hotspot.parser;
+
+public class DiagnosticCommand {
+
+ public enum DiagnosticArgumentType {
+ JLONG, BOOLEAN, STRING, NANOTIME, STRINGARRAY, MEMORYSIZE
+ }
+
+ private String name;
+ private String desc;
+ private DiagnosticArgumentType type;
+ private boolean mandatory;
+ private String defaultValue;
+ private boolean argument;
+
+ public DiagnosticCommand(String name, String desc, DiagnosticArgumentType type,
+ boolean mandatory, String defaultValue) {
+ this(name, desc, type, false, mandatory, defaultValue);
+ }
+
+ public DiagnosticCommand(String name, String desc, DiagnosticArgumentType type,
+ boolean argument, boolean mandatory, String defaultValue) {
+ this.name = name;
+ this.desc = desc;
+ this.type = type;
+ this.mandatory = mandatory;
+ this.defaultValue = defaultValue;
+ this.argument = argument;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getDesc() {
+ return desc;
+ }
+
+ public DiagnosticArgumentType getType() {
+ return type;
+ }
+
+ public boolean isMandatory() {
+ return mandatory;
+ }
+
+ public boolean isArgument() {
+ return argument;
+ }
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+}
diff --git a/test/make/TestIdea.gmk b/test/make/TestIdea.gmk
new file mode 100644
index 0000000..39d93c5
--- /dev/null
+++ b/test/make/TestIdea.gmk
@@ -0,0 +1,46 @@
+
+# Copyright (c) 2014, 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 $(SPEC)
+include MakeBase.gmk
+
+default: all
+
+IDEA_OUTPUT_DIR := $(TESTMAKE_OUTPUTDIR)/verify-idea
+
+clean-idea:
+ $(RM) -r $(IDEA_OUTPUT_DIR)
+
+verify-idea:
+ $(MKDIR) -p $(IDEA_OUTPUT_DIR)
+ $(BASH) $(TOPDIR)/common/bin/idea.sh -o $(IDEA_OUTPUT_DIR)/idea1
+ $(BASH) $(TOPDIR)/common/bin/idea.sh -o $(IDEA_OUTPUT_DIR)/idea2 java.base
+ $(BASH) $(TOPDIR)/common/bin/idea.sh -o $(IDEA_OUTPUT_DIR)/idea3 java.base jdk.compiler
+
+TEST_TARGETS += verify-idea
+
+all: $(TEST_TARGETS)
+
+.PHONY: default all verify-idea
diff --git a/test/make/TestJavaCompilation.gmk b/test/make/TestJavaCompilation.gmk
new file mode 100644
index 0000000..9cd05b9
--- /dev/null
+++ b/test/make/TestJavaCompilation.gmk
@@ -0,0 +1,353 @@
+#
+# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+include JarArchive.gmk
+include JavaCompilation.gmk
+
+THIS_FILE := $(SRC_ROOT)/test/make/TestJavaCompilation.gmk
+DEPS := $(THIS_FILE) \
+ $(SRC_ROOT)/make/common/MakeBase.gmk \
+ $(SRC_ROOT)/make/common/JavaCompilation.gmk \
+ #
+
+OUTPUT_DIR := $(TESTMAKE_OUTPUTDIR)/java-compilation
+
+################################################################################
+# Test: jar1
+# Creates a simple jar file and unzips it to verify that the files have not
+# changed.
+
+JAR1_SRC_ROOT := $(OUTPUT_DIR)/jar1src
+JAR1_UNZIP := $(OUTPUT_DIR)/jar1unzip
+JAR1_FILE := $(OUTPUT_DIR)/jar1.jar
+JAR1_MANIFEST := $(OUTPUT_DIR)/jar1_manifest
+
+clean-jar1:
+ $(RM) -r $(OUTPUT_DIR)/_jar1* $(OUTPUT_DIR)/jar1*
+
+$(JAR1_MANIFEST): | $(OUTPUT_DIR)/_jar1_created
+ $(ECHO) "Test-Attribute: value" > $(JAR1_MANIFEST)
+
+$(OUTPUT_DIR)/_jar1_created: $(DEPS)
+ $(RM) -r $(JAR1_SRC_ROOT)
+ $(RM) $(JAR1_FILE)
+ $(RM) -r $(JAR1_UNZIP)
+ $(MKDIR) -p $(JAR1_SRC_ROOT)
+ $(MKDIR) -p $(JAR1_SRC_ROOT)/dir1
+ $(MKDIR) -p $(JAR1_SRC_ROOT)/dir2
+ $(MKDIR) -p $(JAR1_SRC_ROOT)/META-INF
+ $(TOUCH) $(JAR1_SRC_ROOT)/dir1/file1.class
+ $(TOUCH) $(JAR1_SRC_ROOT)/dir2/file2.class
+ $(TOUCH) $(JAR1_SRC_ROOT)/META-INF/metafile
+ $(TOUCH) $@
+
+$(eval $(call SetupJarArchive, BUILD_JAR1, \
+ DEPENDENCIES := $(OUTPUT_DIR)/_jar1_created, \
+ SRCS := $(JAR1_SRC_ROOT), \
+ MANIFEST := $(JAR1_MANIFEST), \
+ JAR := $(JAR1_FILE), \
+))
+
+$(OUTPUT_DIR)/_jar1_verified: $(BUILD_JAR1)
+ $(RM) -r $(JAR1_UNZIP)
+ $(MKDIR) -p $(JAR1_UNZIP)
+ $(CD) $(JAR1_UNZIP) && $(UNZIP) $(JAR1_FILE) $(LOG_DEBUG)
+ $(DIFF) -r $(JAR1_SRC_ROOT)/dir1 $(JAR1_UNZIP)/dir1
+ $(DIFF) -r $(JAR1_SRC_ROOT)/dir2 $(JAR1_UNZIP)/dir2
+ $(DIFF) -r $(JAR1_SRC_ROOT)/META-INF/metafile $(JAR1_UNZIP)/META-INF/metafile
+ if [ "`$(GREP) 'Test-Attribute: value' $(JAR1_UNZIP)/META-INF/MANIFEST.MF`" = "" ]; then \
+ $(ECHO) "Could not find Test-Attribute in manifest of $(JAR1_FILE)"; \
+ exit 1; \
+ fi
+ $(TOUCH) $@
+
+create-jar2: $(OUTPUT_DIR)/_jar1_verified
+TEST_TARGETS += $(OUTPUT_DIR)/_jar1_verified
+
+# Change a source file and call this makefile again to force the jar to be
+# updated.
+$(OUTPUT_DIR)/_jar1_updated: $(OUTPUT_DIR)/_jar1_verified
+ $(ECHO) updated > $(JAR1_SRC_ROOT)/dir1/file1.class
+ $(ECHO) updated > $(JAR1_SRC_ROOT)/META-INF/metafile
+ $(TOUCH) $(OUTPUT_DIR)/_jar1_created
+ +$(MAKE) -f $(THIS_FILE) $(OUTPUT_DIR)/_jar1_verified
+ $(TOUCH) $@
+
+update-jar1: $(OUTPUT_DIR)_jar1_updated
+
+# Change the manifest file and call this makefile again to force the jar
+# to be updated
+$(OUTPUT_DIR)/_jar1_updated_manifest: $(OUTPUT_DIR)/_jar1_updated
+ $(ECHO) "Test-Attribute: foobar" > $(JAR1_MANIFEST)
+ +$(MAKE) -f $(THIS_FILE) $(BUILD_JAR1)
+ $(RM) -r $(JAR1_UNZIP)
+ $(MKDIR) -p $(JAR1_UNZIP)
+ $(CD) $(JAR1_UNZIP) && $(UNZIP) $(JAR1_FILE) $(LOG_DEBUG)
+ if [ "`$(GREP) 'Test-Attribute: foobar' $(JAR1_UNZIP)/META-INF/MANIFEST.MF`" = "" ]; then \
+ $(ECHO) "Could not find Test-Attribute in manifest of $(JAR1_FILE)"; \
+ exit 1; \
+ fi
+ $(TOUCH) $@
+
+update-jar1-manifest: $(OUTPUT_DIR)/_jar1_updated_manifest
+
+TEST_TARGETS += $(OUTPUT_DIR)/_jar1_updated $(OUTPUT_DIR)/_jar1_updated_manifest
+
+.PHONY: clean-jar1 create-jar1 update-jar1 update-jar1-manifest
+
+################################################################################
+# Test: jar2
+# Creates a jar file based on 2 source roots
+
+JAR2_SRC_ROOT1 := $(OUTPUT_DIR)/jar2src1
+JAR2_SRC_ROOT2 := $(OUTPUT_DIR)/jar2src2
+JAR2_UNZIP := $(OUTPUT_DIR)/jar2unzip
+JAR2_FILE := $(OUTPUT_DIR)/jar2.jar
+
+clean-jar2:
+ $(RM) -r $(OUTPUT_DIR)/_jar2* $(OUTPUT_DIR)/jar2*
+
+$(OUTPUT_DIR)/_jar2_created: $(DEPS)
+ $(RM) -r $(JAR2_SRC_ROOT1)
+ $(RM) -r $(JAR2_SRC_ROOT2)
+ $(RM) $(JAR2_FILE)
+ $(RM) -r $(JAR2_UNZIP)
+ $(MKDIR) -p $(JAR2_SRC_ROOT1)/dir1
+ $(MKDIR) -p $(JAR2_SRC_ROOT2)/dir2
+ $(TOUCH) $(JAR2_SRC_ROOT1)/dir1/file1.class
+ $(TOUCH) $(JAR2_SRC_ROOT2)/dir2/file2.class
+ $(TOUCH) $@
+
+$(eval $(call SetupJarArchive, BUILD_JAR2, \
+ DEPENDENCIES := $(OUTPUT_DIR)/_jar2_created, \
+ SRCS := $(JAR2_SRC_ROOT1) $(JAR2_SRC_ROOT2), \
+ JAR := $(JAR2_FILE), \
+))
+
+$(OUTPUT_DIR)/_jar2_verified: $(BUILD_JAR2)
+ $(RM) -r $(JAR2_UNZIP)
+ $(MKDIR) -p $(JAR2_UNZIP)
+ $(CD) $(JAR2_UNZIP) && $(UNZIP) $(JAR2_FILE) $(LOG_DEBUG)
+ $(DIFF) -r $(JAR2_SRC_ROOT1)/dir1 $(JAR2_UNZIP)/dir1
+ $(DIFF) -r $(JAR2_SRC_ROOT2)/dir2 $(JAR2_UNZIP)/dir2
+ $(TOUCH) $@
+
+create-jar2: $(OUTPUT_DIR)/_jar2_verified
+TEST_TARGETS += $(OUTPUT_DIR)/_jar2_verified
+
+$(OUTPUT_DIR)/_jar2_updated: $(OUTPUT_DIR)/_jar2_verified
+ $(ECHO) updated > $(JAR2_SRC_ROOT1)/dir1/file1.class
+ $(TOUCH) $(OUTPUT_DIR)/_jar2_created
+ +$(MAKE) -f $(THIS_FILE) $(OUTPUT_DIR)/_jar2_verified
+ $(TOUCH) $@
+
+update-jar2: $(OUTPUT_DIR)/_jar2_updated
+TEST_TARGETS += $(OUTPUT_DIR)/_jar2_updated
+
+.PHONY: clean-jar2 create-jar2 update-jar2
+
+################################################################################
+# Test: jar3
+# Creates a jar file based on 2 source roots with an extra file
+
+JAR3_SRC_ROOT1 := $(OUTPUT_DIR)/jar3src1
+JAR3_SRC_ROOT2 := $(OUTPUT_DIR)/jar3src2
+JAR3_UNZIP := $(OUTPUT_DIR)/jar3unzip
+JAR3_FILE := $(OUTPUT_DIR)/jar3.jar
+
+clean-jar3:
+ $(RM) -r $(OUTPUT_DIR)/_jar3* $(OUTPUT_DIR)/jar3*
+
+$(OUTPUT_DIR)/_jar3_created: $(DEPS)
+ $(RM) -r $(JAR3_SRC_ROOT1)
+ $(RM) -r $(JAR3_SRC_ROOT2)
+ $(RM) $(JAR3_FILE)
+ $(RM) -r $(JAR3_UNZIP)
+ $(MKDIR) -p $(JAR3_SRC_ROOT1)/dir1
+ $(MKDIR) -p $(JAR3_SRC_ROOT2)/dir2
+ $(TOUCH) $(JAR3_SRC_ROOT1)/dir1/file1\$$foo.class
+ $(TOUCH) $(JAR3_SRC_ROOT2)/dir2/file2.class
+ $(TOUCH) $(JAR3_SRC_ROOT2)/extra-file
+ $(TOUCH) $(JAR3_SRC_ROOT2)/extra-file-abs
+ $(TOUCH) $(JAR3_SRC_ROOT2)/dir2/file\$$foo.dollar
+ $(TOUCH) $@
+
+$(eval $(call SetupJarArchive, BUILD_JAR3, \
+ DEPENDENCIES := $(OUTPUT_DIR)/_jar3_created, \
+ SRCS := $(JAR3_SRC_ROOT1) $(JAR3_SRC_ROOT2), \
+ EXTRA_FILES := extra-file \
+ dir2/file$$foo.dollar \
+ $(JAR3_SRC_ROOT2)/extra-file-abs, \
+ EXCLUDE_FILES := dir1/file1$$foo.class, \
+ JAR := $(JAR3_FILE), \
+))
+
+$(OUTPUT_DIR)/_jar3_verified: $(BUILD_JAR3)
+ $(RM) -r $(JAR3_UNZIP)
+ $(MKDIR) -p $(JAR3_UNZIP)
+ $(CD) $(JAR3_UNZIP) && $(UNZIP) $(JAR3_FILE) $(LOG_DEBUG)
+ if [ -d "$(JAR3_UNZIP)/dir1" ]; then \
+ echo Should not be included $(JAR3_UNZIP)/dir1; \
+ exit 1; \
+ fi
+ $(DIFF) -r $(JAR3_SRC_ROOT2)/dir2 $(JAR3_UNZIP)/dir2
+ $(DIFF) -r $(JAR3_SRC_ROOT2)/extra-file $(JAR3_UNZIP)/extra-file
+ $(TOUCH) $@
+
+create-jar3: $(OUTPUT_DIR)/_jar3_verified
+TEST_TARGETS += $(OUTPUT_DIR)/_jar3_verified
+
+$(OUTPUT_DIR)/_jar3_updated: $(OUTPUT_DIR)/_jar3_verified
+ $(ECHO) updated > $(JAR3_SRC_ROOT2)/extra-file
+ $(TOUCH) $(OUTPUT_DIR)/_jar3_created
+ +$(MAKE) -f $(THIS_FILE) $(OUTPUT_DIR)/_jar3_verified
+ $(TOUCH) $@
+
+update-jar3: $(OUTPUT_DIR)/_jar3_updated
+TEST_TARGETS += $(OUTPUT_DIR)/_jar3_updated
+
+.PHONY: clean-jar3 create-jar3 update-jar3
+
+################################################################################
+# Test SetupJavaCompilation overrides of java files
+
+$(eval $(call SetupJavaCompiler,BOOT_JAVAC, \
+ JAVAC := $(JAVAC), \
+ DISABLE_SJAVAC := true, \
+))
+
+JAVA_SRC_ROOT1 := $(OUTPUT_DIR)/javaroot1
+JAVA_SRC_ROOT2 := $(OUTPUT_DIR)/javaroot2
+
+# Since this makefile calls itself a number of times, protect this macro from
+# being executed more than once.
+# Param 1 - File name
+# Param 2 - Package name
+# Param 3 - Class name
+# Param 4 - Message
+CreateJavaSrc = \
+ $(if $(wildcard $1),,$(shell \
+ $(MKDIR) -p $(dir $1); \
+ $(ECHO) "package $2;" > $1; \
+ $(ECHO) "public class $3 {" >> $1; \
+ $(ECHO) " public static void main(String[] args) {" >> $1; \
+ $(ECHO) " System.out.print(\"$4\");" >> $1; \
+ $(ECHO) " }" >> $1; \
+ $(ECHO) "}" >> $1; \
+ ))
+
+# Since this makefile calls itself a number of times, protect this macro from
+# being executed more than once.
+# Param 1 - File name
+# Param 2 - Message
+CreateTextFile = \
+ $(if $(wildcard $1),,$(shell \
+ $(MKDIR) -p $(dir $1); \
+ $(PRINTF) '$2' > $1; \
+ ))
+
+$(call CreateJavaSrc,$(JAVA_SRC_ROOT1)/a/A.java,a,A,javaroot1)
+$(call CreateJavaSrc,$(JAVA_SRC_ROOT2)/a/A.java,a,A,javaroot2)
+$(call CreateTextFile,$(JAVA_SRC_ROOT1)/a/b.txt,javaroot1\n)
+$(call CreateTextFile,$(JAVA_SRC_ROOT2)/a/b.txt,javaroot2\n)
+$(call CreateTextFile,$(JAVA_SRC_ROOT1)/a/c.properties,#javaroot1\nname=value1\n)
+$(call CreateTextFile,$(JAVA_SRC_ROOT2)/a/c.properties,#javaroot2\nname=value2\n)
+
+# Due to a bug in gnu make 3.81, need to add the src roots with trailing slash,
+# otherwise $(wildcard ) will not find the directories and the sanity check in
+# SetupJavaCompilation will fail.
+$(eval $(call SetupJavaCompilation, BUILD_ROOT1_FIRST, \
+ SETUP := BOOT_JAVAC, \
+ SRC := $(JAVA_SRC_ROOT1)/ $(JAVA_SRC_ROOT2)/, \
+ COPY := .txt .java, \
+ CLEAN := .properties, \
+ BIN := $(OUTPUT_DIR)/root1first/, \
+))
+
+$(BUILD_ROOT1_FIRST):
+
+verify-root1-first: $(BUILD_ROOT1_FIRST)
+ $(JAVA_SMALL) -cp $(OUTPUT_DIR)/root1first a.A > $(OUTPUT_DIR)/root1first.output
+ if [ "`$(CAT) $(OUTPUT_DIR)/root1first.output`" != "javaroot1" ]; then \
+ $(ECHO) "The wrong class was compiled. Expected >javaroot1<"; \
+ $(ECHO) "Got >`$(CAT) $(OUTPUT_DIR)/root1first.output`<"; \
+ false; \
+ fi
+ if [ "`$(CAT) $(OUTPUT_DIR)/root1first/a/b.txt`" != "javaroot1" ]; then \
+ $(ECHO) "The wrong file was copied. Expected >javaroot1<"; \
+ $(ECHO) "Got >`$(CAT) $(OUTPUT_DIR)/root1first/a/b.txt`<"; \
+ false; \
+ fi
+ if [ ! -e "$(OUTPUT_DIR)/root1first/a/A.java" ]; then \
+ $(ECHO) "Missed copying $(OUTPUT_DIR)/root1first/a/A.java"; \
+ false; \
+ fi
+ if [ "`$(CAT) $(OUTPUT_DIR)/root1first/a/c.properties`" != "name=value1" ]; then \
+ $(ECHO) "The wrong file was cleaned. Expected >name=value1<"; \
+ $(ECHO) "Got >`$(CAT) $(OUTPUT_DIR)/root1first/a/c.properties`<"; \
+ false; \
+ fi
+
+$(eval $(call SetupJavaCompilation, BUILD_ROOT2_FIRST, \
+ SETUP := BOOT_JAVAC, \
+ SRC := $(JAVA_SRC_ROOT2)/ $(JAVA_SRC_ROOT1)/, \
+ COPY := .txt, \
+ CLEAN := .properties, \
+ BIN := $(OUTPUT_DIR)/root2first/, \
+))
+
+$(BUILD_ROOT2_FIRST):
+
+verify-root2-first: $(BUILD_ROOT2_FIRST)
+ $(JAVA_SMALL) -cp $(OUTPUT_DIR)/root2first a.A > $(OUTPUT_DIR)/root2first.output
+ if [ "`$(CAT) $(OUTPUT_DIR)/root2first.output`" != "javaroot2" ]; then \
+ $(ECHO) "The wrong class was compiled. Expected >javaroot2<"; \
+ $(ECHO) "Got >`$(CAT) $(OUTPUT_DIR)/root2first.output`<"; \
+ false; \
+ fi
+ if [ "`$(CAT) $(OUTPUT_DIR)/root2first/a/b.txt`" != "javaroot2" ]; then \
+ $(ECHO) "The wrong file was cleaned. Expected >javaroot2<"; \
+ $(ECHO) "Got >`$(CAT) $(OUTPUT_DIR)/root2first/a/b.txt`<"; \
+ false; \
+ fi
+ if [ "`$(CAT) $(OUTPUT_DIR)/root2first/a/c.properties`" != "name=value2" ]; then \
+ $(ECHO) "The wrong file was cleaned. Expected >name=value2<"; \
+ $(ECHO) "Got >`$(CAT) $(OUTPUT_DIR)/root2first/a/c.properties`<"; \
+ false; \
+ fi
+
+TEST_TARGETS += verify-root1-first verify-root2-first
+
+.PHONY: verify-root1-first verify-root2-first
+
+################################################################################
+
+all: $(TEST_TARGETS)
+
+.PHONY: default all
diff --git a/test/make/TestMake.gmk b/test/make/TestMake.gmk
new file mode 100644
index 0000000..f3676a0
--- /dev/null
+++ b/test/make/TestMake.gmk
@@ -0,0 +1,42 @@
+#
+# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+
+make-base:
+ +$(MAKE) -f TestMakeBase.gmk $(TEST_SUBTARGET)
+
+java-compilation:
+ +$(MAKE) -f TestJavaCompilation.gmk $(TEST_SUBTARGET)
+
+test-idea:
+ +$(MAKE) -f TestIdea.gmk $(TEST_SUBTARGET)
+
+
+all: make-base java-compilation test-idea
+
+.PHONY: default all make-base java-compilation test-idea
diff --git a/test/make/TestMakeBase.gmk b/test/make/TestMakeBase.gmk
new file mode 100644
index 0000000..60a7a6a
--- /dev/null
+++ b/test/make/TestMakeBase.gmk
@@ -0,0 +1,400 @@
+#
+# Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+
+default: all
+
+include $(SPEC)
+include MakeBase.gmk
+
+THIS_FILE := $(SRC_ROOT)/test/make/TestMakeBase.gmk
+DEPS := $(THIS_FILE) \
+ $(SRC_ROOT)/make/common/MakeBase.gmk \
+ #
+
+# Assert two strings are equal
+# 1 - Tested value
+# 2 - Exepected value
+# 3 - Error message
+define assert-equals
+ ifneq ($$(strip $1),$$(strip $2))
+ $$(error $3 - Expected >$$(strip $2)< - Got >$$(strip $1)<)
+ endif
+endef
+
+# On macosx, file system timestamps only have 1 second resultion so must add
+# sleeps to properly test dependencies.
+ifeq ($(OPENJDK_BUILD_OS), macosx)
+ SLEEP_ON_MAC := sleep 1
+endif
+
+OUTPUT_DIR := $(TESTMAKE_OUTPUTDIR)/make-base
+$(call MakeDir, $(OUTPUT_DIR))
+
+################################################################################
+# Escape $
+ifneq ($(call EscapeDollar, foo$$bar), foo\$$bar)
+ $(error EscapeDollar failed $(call EscapeDollar, foo$$bar) foo\$$bar)
+endif
+
+ESCAPE_DOLLAR_DIR := $(OUTPUT_DIR)/escape-dollar
+
+$(ESCAPE_DOLLAR_DIR)/_escape_dollar: $(DEPS)
+ $(RM) -r $(@D)
+ $(MKDIR) -p $(@D)
+ $(ECHO) foo\$$bar > $(@D)/file1
+ $(ECHO) $(call EscapeDollar, foo$$bar) > $(@D)/file2
+ $(ECHO) $(call EscapeDollar, foo\$$bar) > $(@D)/file3
+ $(DIFF) $(@D)/file1 $(@D)/file2
+ $(DIFF) $(@D)/file1 $(@D)/file3
+ $(TOUCH) $@
+
+TEST_TARGETS += $(ESCAPE_DOLLAR_DIR)/_escape_dollar
+
+################################################################################
+# Test containing and not-containing
+
+CONT_LIST := foo bar baz foobar foobaz
+
+# Param 1 - string to look for
+# Param 2 - expected result
+define TestContaining
+ value := $$(call containing, $1, $(CONT_LIST))
+ ifneq ($$(value), $2)
+ $$(info (call containing, $1, $(CONT_LIST)))
+ $$(error result >$$(value)<, expected >$2<)
+ endif
+endef
+
+$(eval $(call TestContaining,bar,bar foobar))
+$(eval $(call TestContaining,foo bar,foo bar foobar foobaz))
+
+# Param 1 - string to look for
+# Param 2 - expected result
+define TestNotContaining
+ value := $$(call not-containing, $1, $(CONT_LIST))
+ ifneq ($$(value), $2)
+ $$(info (call not-containing, $1, $(CONT_LIST)))
+ $$(error result >$$(value)<, expected >$2<)
+ endif
+endef
+
+$(eval $(call TestNotContaining,bar,foo baz foobaz))
+$(eval $(call TestNotContaining,foo bar,baz))
+
+################################################################################
+# Test Equals
+
+EQUALS_VALUE1 := value1$(SPACE)
+EQUALS_VALUE2 := value2
+
+ifneq ($(call equals, $(EQUALS_VALUE1), $(EQUALS_VALUE2)), )
+ $(error The strings >$(EQUALS_VALUE1)< and >$(EQUALS_VALUE2)< are equal)
+endif
+
+ifeq ($(call equals, $(EQUALS_VALUE1), $(EQUALS_VALUE1)), )
+ $(error The strings >$(EQUALS_VALUE1)< and >$(EQUALS_VALUE1)< are not equal)
+endif
+
+################################################################################
+# Test remove-prefixes
+
+$(eval $(call assert-equals, \
+ $(call remove-prefixes, pre, prefix postfix), fix postfix, \
+ Prefixes not properly removed))
+
+$(eval $(call assert-equals, \
+ $(call remove-prefixes, pre post, prefix postfix), fix fix, \
+ Prefixes not properly removed))
+
+################################################################################
+# Test ShellQuote
+
+SHELL_QUOTE_VALUE := foo '""' "''" bar
+SHELL_QUOTE_RESULT := $(shell $(ECHO) $(call ShellQuote, \
+ $(SHELL_QUOTE_VALUE)))
+
+ifneq ($(SHELL_QUOTE_VALUE), $(SHELL_QUOTE_RESULT))
+ $(error Expected: >$(SHELL_QUOTE_VALUE)< - Result: >$(SHELL_QUOTE_RESULT)<)
+endif
+
+################################################################################
+# Test read and write to file
+
+READ_WRITE_FILE := $(OUTPUT_DIR)/read-write
+READ_WRITE_VALUE := foo '""' "''" \t\n\\ bar
+$(call WriteFile, $(READ_WRITE_VALUE), $(READ_WRITE_FILE))
+READ_WRITE_RESULT := $(call ReadFile, $(READ_WRITE_FILE))
+
+ifneq ($(READ_WRITE_VALUE), $(READ_WRITE_RESULT))
+ $(error Expected: >$(READ_WRITE_VALUE)< - Result: >$(READ_WRITE_RESULT)<)
+endif
+
+################################################################################
+# Test creating dependencies on make variables
+
+VARDEP_DIR := $(OUTPUT_DIR)/vardep
+VARDEP_SRC_FILE := $(VARDEP_DIR)/src-file
+VARDEP_TARGET_FILE := $(VARDEP_DIR)/target-file
+VARDEP_FLAG_FILE := $(VARDEP_DIR)/flag-file
+
+$(VARDEP_DIR)/src-file:
+ $(MKDIR) -p $(@D)
+ $(ECHO) "some string XXX" > $@
+
+$(VARDEP_TARGET_FILE): $(VARDEP_DIR)/src-file \
+ $(call DependOnVariable, VARDEP_TEST_VAR)
+ $(MKDIR) -p $(@D)
+ $(SED) -e 's/XXX/$(VARDEP_TEST_VAR)/g' $< > $@
+ $(TOUCH) $(VARDEP_FLAG_FILE)
+
+test-vardep:
+ $(RM) $(VARDEP_SRC_FILE) $(VARDEP_TARGET_FILE) $(VARDEP_FLAG_FILE)
+ #
+ # Simply create the target file and verify that it has the correct value
+ #
+ $(MAKE) -f $(THIS_FILE) VARDEP_TEST_VAR=value1 $(VARDEP_TARGET_FILE)
+ $(PRINTF) "Expecting value1: %s\n" "`$(CAT) $(VARDEP_DIR)/target-file`"
+ test "some string value1" = "`$(CAT) $(VARDEP_DIR)/target-file`"
+ test -e $(VARDEP_FLAG_FILE)
+ #
+ # Make the target file again and verify that the value is updated with
+ # the new value
+ #
+ $(SLEEP_ON_MAC)
+ $(MAKE) -f $(THIS_FILE) VARDEP_TEST_VAR=value2 $(VARDEP_TARGET_FILE)
+ $(PRINTF) "Expecting value2: %s\n" "`$(CAT) $(VARDEP_DIR)/target-file`"
+ test "some string value2" = "`$(CAT) $(VARDEP_DIR)/target-file`"
+ test -e $(VARDEP_FLAG_FILE)
+ #
+ # Make the target again with the same value and verify that the recipe
+ # was never run by checking that the flag file was not recreated
+ #
+ $(SLEEP_ON_MAC)
+ $(RM) $(VARDEP_FLAG_FILE)
+ $(MAKE) -f $(THIS_FILE) VARDEP_TEST_VAR=value2 $(VARDEP_TARGET_FILE)
+ $(PRINTF) "Expecting value2: %s\n" "`$(CAT) $(VARDEP_DIR)/target-file`"
+ test "some string value2" = "`$(CAT) $(VARDEP_DIR)/target-file`"
+ test ! -e $(VARDEP_FLAG_FILE)
+ #
+ # Test running with spaces at the end and the middle of the value
+ # and verify that the file isn't rewritten the second time
+ #
+ $(MAKE) -f $(THIS_FILE) VARDEP_TEST_VAR="value3 foo " $(VARDEP_TARGET_FILE)
+ $(RM) $(VARDEP_FLAG_FILE)
+ $(MAKE) -f $(THIS_FILE) VARDEP_TEST_VAR="value3 foo" $(VARDEP_TARGET_FILE)
+ test ! -e $(VARDEP_FLAG_FILE)
+ $(MAKE) -f $(THIS_FILE) VARDEP_TEST_VAR=" value3 foo" $(VARDEP_TARGET_FILE)
+ test ! -e $(VARDEP_FLAG_FILE)
+ #
+ # Test including some problematic characters
+ $(MAKE) -f $(THIS_FILE) VARDEP_TEST_VAR='value4 \$$ORIGIN' $(VARDEP_TARGET_FILE)
+ $(RM) $(VARDEP_FLAG_FILE)
+ $(MAKE) -f $(THIS_FILE) VARDEP_TEST_VAR='value4 \$$ORIGIN' $(VARDEP_TARGET_FILE)
+ test ! -e $(VARDEP_FLAG_FILE)
+
+# Test specifying a specific value file to store variable in
+VARDEP_VALUE_FILE := $(VARDEP_DIR)/value-file
+VARDEP_TEST_VAR2 := value3
+
+VARDEP_RETURN_VALUE := $(call DependOnVariable, VARDEP_TEST_VAR2, $(VARDEP_VALUE_FILE))
+$(eval $(call assert-equals, $(VARDEP_RETURN_VALUE), $(VARDEP_VALUE_FILE), \
+ Wrong filename returned))
+-include $(VARDEP_VALUE_FILE)
+$(eval $(call assert-equals, $(VARDEP_TEST_VAR2_old), $(VARDEP_TEST_VAR2), \
+ Wrong contents in vardeps file))
+
+# Test with a variable value containing some problematic characters
+VARDEP_TEST_VAR3 := foo '""' "''" bar \$$ORIGIN &\#x00a9
+VARDEP_VALUE_FILE := $(call DependOnVariable, VARDEP_TEST_VAR3)
+-include $(VARDEP_VALUE_FILE)
+$(eval $(call assert-equals, $(call EscapeHash,$(VARDEP_TEST_VAR3_old)), \
+ $(call EscapeHash,$(VARDEP_TEST_VAR3)), \
+ Wrong contents in vardep file))
+
+TEST_TARGETS += test-vardep
+
+################################################################################
+# Test sequence
+
+ifneq ($(call sequence, 1, 1), 1)
+ $(error Sequence 1, 1 should be "1", but was $(call sequence, 1, 1))
+endif
+
+ifneq ($(call sequence, 2, 3), 2 3)
+ $(error Sequence 2, 3 should be "2 3", but was $(call sequence, 2, 3))
+endif
+
+ifneq ($(call sequence, 4, 9), 4 5 6 7 8 9)
+ $(error Sequence 4, 9 should be "4 5 6 7 8 9", but was $(call sequence, 4, 9))
+endif
+
+ifneq ($(call sequence, 5, 15), 5 6 7 8 9 10 11 12 13 14 15)
+ $(error Sequence 5, 15 should be "5 6 7 8 9 10 11 12 13 14 15", \
+ but was $(call sequence, 5, 15))
+endif
+
+################################################################################
+# Test that PathList is safe when called multiple nested times.
+
+PATHLIST_INPUT := foo bar baz
+
+$(eval $(call assert-equals, \
+ $(call PathList, $(call PathList, $(PATHLIST_INPUT))), \
+ $(call PathList, $(PATHLIST_INPUT)), \
+ PathList call not safe for calling twice))
+
+################################################################################
+# Test FindCommonPathPrefix
+
+$(eval $(call assert-equals, \
+ $(call FindCommonPathPrefix, /foo/bar/baz, /foo/bar/banan), \
+ /foo/bar, \
+ FindCommonPathPrefix, \
+))
+
+$(eval $(call assert-equals, \
+ $(call FindCommonPathPrefix, /foo/bar/baz, /foo/bar), \
+ /foo/bar, \
+ FindCommonPathPrefix, \
+))
+
+$(eval $(call assert-equals, \
+ $(call FindCommonPathPrefix, /foo/bar/baz, /foo/bar/), \
+ /foo/bar, \
+ FindCommonPathPrefix, \
+))
+
+$(eval $(call assert-equals, \
+ $(call FindCommonPathPrefix, foo/bar/baz, foo/bar/banan), \
+ foo/bar, \
+ FindCommonPathPrefix, \
+))
+
+$(eval $(call assert-equals, \
+ $(call FindCommonPathPrefix, foo/bar/baz, /foo/bar/banan), \
+ , \
+ FindCommonPathPrefix, \
+))
+
+################################################################################
+# DirToDotDot
+
+$(eval $(call assert-equals, \
+ $(call DirToDotDot, foo/bar/baz/), \
+ ../../.., \
+ DirToDotDot, \
+))
+
+$(eval $(call assert-equals, \
+ $(call DirToDotDot, foo/bar), \
+ ../.., \
+ DirToDotDot, \
+))
+
+$(eval $(call assert-equals, \
+ $(call DirToDotDot, /foo), \
+ .., \
+ DirToDotDot, \
+))
+
+################################################################################
+# RelativePath
+
+$(eval $(call assert-equals, \
+ $(call RelativePath, foo/bar/baz, foo/bar/banan), \
+ ../baz, \
+ RelativePath, \
+))
+
+$(eval $(call assert-equals, \
+ $(call RelativePath, foo/bar/baz/banan/kung, foo/bar/banan/kung), \
+ ../../baz/banan/kung, \
+ RelativePath, \
+))
+
+$(eval $(call assert-equals, \
+ $(call RelativePath, /foo/bar/baz/banan/kung, /foo/bar/banan/kung/), \
+ ../../baz/banan/kung, \
+ RelativePath, \
+))
+
+################################################################################
+# Test ParseKeywordVariable
+
+KWBASE := APA=banan;GURKA=tomat;COUNT=1%202%203%204%205;SUM=1+2+3+4+5;MANY_WORDS=I have the best words.
+
+$(eval $(call ParseKeywordVariable, KWBASE, \
+ KEYWORDS := APA GURKA SUM, \
+ STRING_KEYWORDS := COUNT MANY_WORDS, \
+))
+
+$(eval $(call assert-equals, \
+ $(KWBASE_APA), \
+ banan, \
+ ParseKeywordVariable failed to parse APA, \
+))
+
+$(eval $(call assert-equals, \
+ $(KWBASE_COUNT), \
+ 1 2 3 4 5, \
+ ParseKeywordVariable failed to parse COUNT, \
+))
+
+$(eval $(call assert-equals, \
+ $(KWBASE_SUM), \
+ 1+2+3+4+5, \
+ ParseKeywordVariable failed to parse SUM, \
+))
+
+$(eval $(call assert-equals, \
+ $(KWBASE_MANY_WORDS), \
+ I have the best words., \
+ ParseKeywordVariable failed to parse MANY_WORDS, \
+))
+
+# Simulate variable set from command line by using "override"
+override KWBASE_WEIRD_GURKA := paprika
+KWBASE_WEIRD := ;;APA=banan;;;GURKA=apelsin;APA=skansen;;
+
+$(eval $(call ParseKeywordVariable, KWBASE_WEIRD, \
+ KEYWORDS := APA GURKA SUM, \
+ STRING_KEYWORDS := COUNT, \
+))
+
+$(eval $(call assert-equals, \
+ $(KWBASE_WEIRD_APA), \
+ skansen, \
+ ParseKeywordVariable failed to overwrite APA, \
+))
+
+$(eval $(call assert-equals, \
+ $(KWBASE_WEIRD_GURKA), \
+ paprika, \
+ ParseKeywordVariable failed to preserve GURKA, \
+))
+
+################################################################################
+
+all: $(TEST_TARGETS)